跳到正文
cccskills
免费在 GitHub 公开

notion-to-blog

Transfer a Notion blog draft into an MDX file, a Markdown format with components, for the Wasp website. Preserve text formatting, download and optimize images, and prepare metadata and links according to blog conventions.

中文简介正在准备中。当前显示英语简介。

原文查看原文说明

Transfer a blog post from Notion to the Wasp blog. Fetches content, downloads and optimizes images, and creates a properly formatted MDX file.

集成工具Notion

实测评分 未实测

查看安装方法

适用场景

  • Move a Notion draft into the Wasp blog
  • Convert article images to WebP
  • Preserve headings, code blocks, and text formatting
  • Prepare blog metadata and internal links

包含的文件(1)

  • SKILL.md3.6 KB

SKILL.md(原文)

安装前可以查看交给 AI 代理的指令内容。

Transfer a Notion page to the Wasp blog

Given a Notion page URL, convert it into an MDX blog post for the Wasp website at web/blog/.

Step 1: Fetch the Notion page

  1. Extract the page ID from the URL (the UUID at the end, formatted with dashes: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx).
  2. Use mcp__notion__API-retrieve-a-page to get page metadata (title, properties).
  3. Use 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.

Step 2: Parse the content

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:

  • The post starts at the first heading_1 block
  • WIP sections are often marked with a ## WIP heading or appear after a divider near the end

Use a Python script (via Bash) to parse the JSON block data because it can be very large (50K+ tokens). The script should:

  • Extract blocks in the post range
  • Convert each block to markdown based on its type:
    • heading_1/2/3 → # / ## / ###
    • paragraph → plain text with formatting
    • bulleted_list_item → -
    • numbered_list_item → 1.
    • code → fenced code block with language
    • image → collect URL and caption
    • quote → >
    • callout → > {emoji}
    • divider → ---
    • table_of_contents → skip (Docusaurus handles this)
  • Preserve rich text formatting: bold (**), italic (*), code (`), strikethrough (~~), links ([text](url))
  • Collect all image URLs and captions separately

Step 3: Download and optimize images

  1. Create directory: web/static/img/<post-slug>/
  2. Download all images using curl (Notion URLs are temporary signed S3 URLs — download immediately).
  3. Give images descriptive names based on their context/caption.
  4. Convert all images to WebP using cwebp -q 85 for smaller file sizes.
  5. Remove the original files after conversion.

Step 4: Create the MDX file

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:

  • Add import { ImgWithCaption } from './components/ImgWithCaption'; after frontmatter
  • Add {/* truncate */} after the opening hook paragraph (this controls the blog listing excerpt)
  • Use <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'
  • Make ALL URLs pointing to wasp.sh or wasp-lang.dev relative (e.g., 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.
  • Keep external URLs (GitHub, Twitter, etc.) as-is

Step 5: Verify with the user

Show a summary of what was created:

  • File path
  • Number of images downloaded and total size savings from WebP conversion
  • Any decisions made (title choice, skipped sections, etc.)
  • Remind user to review anchor links in TL;DR sections

评价

还没有评价。欢迎分享你的使用感受。

评论

无需登录即可发表。欢迎分享使用感受、提问,或说明在哪些环境下无法运行。

还没有评论。来写第一条吧。

提交后会立即公开。请勿填写邮箱、电话等个人信息。URL 最多 2 个。

0 / 1000 字

此表单受 reCAPTCHA 保护,适用 Google 的隐私权政策和服务条款。

同一仓库的技能

Convert Wasp blog articles from MDX, a Markdown format with components, into files for DEV.to and Medium. Create or update DEV.to drafts, prepare Medium content, and optionally upload local videos to YouTube.

中文简介正在准备中。当前显示英语简介。

  • Prepare Wasp blog articles for DEV.to and Medium
  • Create DEV.to drafts or update existing articles
  • Prepare article sections and images for Medium
wasp-lang/wasp1.9万2026年10月23日 更新

Review content for citation in AI search answers. Use checklists covering clear definitions, sourced data, author information, FAQs, and structured data, then plan how to monitor citations, brand mentions, and AI-referred traffic.

中文简介正在准备中。当前显示英语简介。

  • Reviewing articles for citation in AI search answers
  • Organizing definitions, sources, and FAQs in content
  • Checking author details and structured data
wasp-lang/wasp1.9万2026年10月23日 更新

Create social posts and weekly content calendars tailored to each platform and audience. Repurpose existing articles, plan interactions with readers, and use performance metrics to refine topics, opening lines, formats, and posting times.

中文简介正在准备中。当前显示英语简介。

  • Plan a weekly social content calendar
  • Adapt blog articles into posts for multiple platforms
  • Write opening lines and post drafts
wasp-lang/wasp1.9万2026年10月23日 更新

Review code changes for correctness, readable names, clear interfaces, and design problems. Examine duplication, hidden assumptions, and unnecessary abstractions, then report actionable findings with file locations, explanations, and concrete suggestions for fixes.

中文简介正在准备中。当前显示英语简介。

  • Review pull request changes
  • Check names and function interfaces
  • Find duplication and unclear responsibilities
wasp-lang/wasp1.9万2026年10月23日 更新

查看 wasp-lang 的全部技能

报告此技能的问题