一键导入
notion-to-blog
Transfer a blog post from Notion to the Wasp blog. Fetches content, downloads and optimizes images, and creates a properly formatted MDX file.
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
菜单
Transfer a blog post from Notion to the Wasp blog. Fetches content, downloads and optimizes images, and creates a properly formatted MDX file.
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
Crosspost Wasp blog articles (MDX) to DEV.to and Medium.
When the user wants help creating, scheduling, or optimizing social media content for LinkedIn, Twitter/X, Instagram, TikTok, Facebook, or other platforms. Also use when the user mentions 'LinkedIn post,' 'Twitter thread,' 'social media,' 'content calendar,' 'social scheduling,' 'engagement,' or 'viral content.' This skill covers content creation, repurposing, and platform-specific strategies.
基于 SOC 职业分类
| name | notion-to-blog |
| description | Transfer a blog post from Notion to the Wasp blog. Fetches content, downloads and optimizes images, and creates a properly formatted MDX file. |
| argument-hint | [notion-page-url] |
Given a Notion page URL, convert it into an MDX blog post for the Wasp website at web/blog/.
xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx).mcp__notion__API-retrieve-a-page to get page metadata (title, properties).mcp__notion__API-get-block-children to fetch all content blocks. Notion paginates at 100 blocks — check has_more and next_cursor to fetch all pages.The Notion page may contain WIP/working notes before and after the actual blog post. Ask the user where the actual post starts and ends if unclear. Typically:
heading_1 block## WIP heading or appear after a divider near the endUse a Python script (via Bash) to parse the JSON block data because it can be very large (50K+ tokens). The script should:
heading_1/2/3 → # / ## / ###paragraph → plain text with formattingbulleted_list_item → - numbered_list_item → 1. code → fenced code block with languageimage → collect URL and captionquote → > callout → > {emoji} divider → ---table_of_contents → skip (Docusaurus handles this)**), italic (*), code (`), strikethrough (~~), links ([text](url))web/static/img/<post-slug>/curl (Notion URLs are temporary signed S3 URLs — download immediately).cwebp -q 85 for smaller file sizes.Create web/blog/YYYY-MM-DD-<slug>.mdx following these conventions:
Frontmatter:
---
title: "Post Title"
authors: [authorHandle] # from web/blog/authors.yml
image: /img/<post-slug>/banner.webp
tags: [wasp, tag2, tag3] # 3-6 lowercase tags
keywords: ["keyword1", "keyword2", ...] # 10+ for SEO
description: "SEO summary under 160 chars."
---
Content rules:
import { ImgWithCaption } from './components/ImgWithCaption'; after frontmatter{/* truncate */} after the opening hook paragraph (this controls the blog listing excerpt)<ImgWithCaption source="..." caption="..." alt="..." /> for ALL images. Omit caption prop if there's no caption. When a caption contains double quotes, use single quotes for the prop value instead: caption='text with "quotes" in it'https://wasp.sh/blog/... → /blog/..., https://wasp.sh/docs/... → /docs/..., https://wasp-lang.dev/docs/... → /docs/...). This applies to both markdown links and any other references throughout the entire post.Show a summary of what was created: