Agent skill

Notion To Blog

by wasp-lang in wasp-lang/wasp

Transfer a blog post from Notion to the Wasp blog. An agent skill from wasp-lang/wasp.

MITAuto-check passedWriting & Content

Install Notion To Blog

skills CLI
$ npx skills add wasp-lang/wasp --skill notion-to-blog -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install wasp-lang/wasp notion-to-blog --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/wasp-lang/wasp.git skills-src && mkdir -p .claude/skills && cp -r skills-src/web/.claude/skills/notion-to-blog .claude/skills/notion-to-blog && rm -rf skills-src

Use ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.

Claude Code skills documentation · loads skills from .claude/skills/

Facts

Skill name
notion-to-blog
GitHub stars
19k
Token cost
~922 tokens
SKILL.md length
423 words
Files
1
Skills in repo
4
Repo updated
First seen
Licence
MIT

At a glance

Transfer a blog post from Notion to the Wasp blog. An agent skill from wasp-lang/wasp.

  • Works in 5 steps: Fetch the Notion page → Parse the content → Download and optimize images → …
  • Tasks that involve Markdown
  • Reaches wasp.sh and wasp-lang.dev
  • Tasks that involve Blog and article writing

What it does

Notion To Blog is an agent skill from wasp-lang/wasp. Transfer a blog post from Notion to the Wasp blog. Fetches content, downloads and optimizes images, and creates a properly formatted MDX file.

Its SKILL.md is about 920 tokens, which your agent loads only when the skill is triggered. It is a single SKILL.md file with no bundled scripts.

It sits in Writing & Content, covering Markdown and Blog and article writing. It works with Notion. The repository describes itself as: The batteries-included full-stack framework for the AI era. Develop JS/TS web apps (React, Node.js, and Prisma) using declarative code that abstracts away complex full-stack… The licence is MIT.

When your agent uses it

  • Tasks that involve Markdown
  • Tasks that involve Blog and article writing

Example prompts

  • “/notion-to-blog”

Requirements

  • Python 3

Workflow steps

5 steps, taken from the step headings in SKILL.md.

  1. Fetch the Notion page
  2. Parse the content
  3. Download and optimize images
  4. Create the MDX file
  5. Verify with the user

What it can do on your machine

Read from SKILL.md and the folder at commit 3a90061. It shows what the files ask for, not the result of running them.

  • Tool permissions

    Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    No scripts in the folder and no shell commands in SKILL.md (its code samples are yaml).

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    Hosts in commands or code, which the agent is likely to contact:

    • wasp.sh
    • wasp-lang.dev

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names no API keys, tokens, secrets or passwords.

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

Notion To Blog loads about 922 tokens when it runs. Until then it costs about 39 tokens; SKILL.md has 423 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~39
When it runs · the whole SKILL.md, loaded when a task matches
~922

Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.

Safety

Auto-check passed

The automated check found no risky patterns in SKILL.md.

Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.

SKILL.md

The full file from wasp-lang/wasp at commit 3a90061, republished under its MIT licence (© wasp-lang). 423 words, ~922 tokens.

Download SKILL.mdSave it as .claude/skills/notion-to-blog/SKILL.md (or your agent's skills folder).
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]

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.
Show full SKILL.md (148 more words)Show less
Step 4: Create the MDX file

Create web/blog/YYYY-MM-DD-<slug>.mdx following these conventions:

Frontmatter:

yaml
---
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

© wasp-lang, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

Just SKILL.md in web/.claude/skills/notion-to-blog of wasp-lang/wasp.

Open the folder on GitHubat commit 3a90061

Compare with similar skills

Notion To Blog next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.

Notion To Blog compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Notion To Blog this skillwasp-lang/wasp19k—~922Automated safety check: PassMIT
Blog AnalyzeAgriciDaniel/claude-blog2.3k1 repos~3.5kAutomated safety check: PassMIT
Blog AnalyzeAgriciDaniel/claude-blog2.3k—~3.8kAutomated safety check: PassMIT
X Article Draft Uploadermcncarl/yichen-skills4.4k—~2.9kAutomated safety check: WarnCustom licence
Pre Publishing Blog Tone Checkergrab/engineering-blog138—~3kAutomated safety check: PassMIT
Post Writingbenjamincrozat/blog-v5135—~2.3kAutomated safety check: PassNone

Similar skills

  • Blog Analyze

    AgriciDaniel/claude-blog

    Audit and score blog posts on a 5-category 100-point scoring system covering content quality, SEO optimization, E-E-A-T signals, technical elements, and AI citation readiness.

    2.3k GitHub starsUsed in 1 repo~3.5k tokens
    Writing & ContentAuto-check passed
  • Blog Analyze

    AgriciDaniel/claude-blog

    Audit and score blog posts on a 5-category 100-point scoring system covering content quality, SEO optimization, E-E-A-T signals, technical elements, and AI citation readiness.

    2.3k GitHub stars~3.8k tokensUpdated 2 days ago
    Writing & ContentAuto-check passed
  • X Article Draft Uploader

    mcncarl/yichen-skills

    将 Obsidian 或本地 Markdown 文章上传到 X/Twitter Articles 草稿;支持 Markdown pipe 表格转成 X 原生表格块;如果文章最上方有图片,则按当前 X 界面提示的 5:2 封面图上传;如果没有封面图,则跳过封面区域,直接上传标题、正文、表格和正文图片,完成后提醒用户补一张 5:2 封面。X Article 当前实测正文最多 25…

    4.4k GitHub stars~2.9k tokensUpdated 7 days ago
    Writing & ContentAuto-check: warnings
  • Pre-publish quality pass for Grab Engineering Blog posts in posts/.md.

    138 GitHub stars~3k tokensUpdated 3 days ago
    Writing & ContentAuto-check passed
  • Post Writing

    benjamincrozat/blog-v5

    Draft and revise publication-ready Markdown blog posts with reader-first writing, current primary sources, tested examples, reproducible benchmarks for quantitative claims, visually inspected…

    135 GitHub stars~2.3k tokensUpdated 1 mo ago
    Writing & ContentAuto-check passed
  • Reading Guide

    chingswy/Skill-Research-Figure

    Structured learning navigator for blog posts and articles. An agent skill from chingswy/Skill-Research-Figure.

    179 GitHub stars~4.5k tokensUpdated 1 mo ago
    Writing & ContentAuto-check passed

More from wasp-lang/wasp

  • Geo Fundamentals

    wasp-lang/wasp

    Generative Engine Optimization for AI search engines (ChatGPT, Claude, Perplexity).

    19k GitHub starsUsed in 9 repos~861 tokens
    Auto-check passed
  • Crossposting

    wasp-lang/wasp

    Crosspost Wasp blog articles (MDX) to DEV.to and Medium. An agent skill from wasp-lang/wasp.

    19k GitHub stars~1.1k tokensUpdated today
    Auto-check passed
  • Wasp Review

    wasp-lang/wasp

    Review code changes for correctness, clarity, and potential issues.

    19k GitHub stars~834 tokensUpdated today
    Auto-check passed

Works with

Questions about Notion To Blog

What does Notion To Blog do?

Transfer a blog post from Notion to the Wasp blog. An agent skill from wasp-lang/wasp. Notion To Blog is an agent skill from wasp-lang/wasp. Transfer a blog post from Notion to the Wasp blog.

When should I use Notion To Blog?

Notion To Blog fits situations like: tasks that involve Markdown; tasks that involve Blog and article writing.

How do I install Notion To Blog in Claude Code?

Run `npx skills add wasp-lang/wasp --skill notion-to-blog -a claude-code`. Or copy the skill folder (web/.claude/skills/notion-to-blog in wasp-lang/wasp) into .claude/skills/notion-to-blog in your project. Claude Code loads it when a task matches its description.

How do I install Notion To Blog in Codex?

Run `npx skills add wasp-lang/wasp --skill notion-to-blog -a codex`. Or copy the skill folder (web/.claude/skills/notion-to-blog in wasp-lang/wasp) into .agents/skills/notion-to-blog in your project. Codex loads it when a task matches its description.

Can I use Notion To Blog in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add wasp-lang/wasp --skill notion-to-blog -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/notion-to-blog, .gemini/skills/notion-to-blog, .github/skills/notion-to-blog and .opencode/skills/notion-to-blog in your project.

What does Notion To Blog need to run?

SKILL.md names no scripts, command-line tools or credentials: Notion To Blog is instructions for the agent only. Our summary lists: Python 3.

Does Notion To Blog access the network?

SKILL.md names 2 domains. In commands or code: wasp.sh and wasp-lang.dev; the agent is likely to contact these when it follows the instructions. This is read from the text; nothing was executed.

Is Notion To Blog safe to install?

Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.

What licence does Notion To Blog use?

Notion To Blog is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Notion To Blog use?

About 922 tokens (SKILL.md is roughly 3.7k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.

What are the alternatives to Notion To Blog?

Skills that share tags, products or a category with Notion To Blog: Blog Analyze (AgriciDaniel/claude-blog, 2.3k stars), Blog Analyze (AgriciDaniel/claude-blog, 2.3k stars), X Article Draft Uploader (mcncarl/yichen-skills, 4.4k stars) and Pre Publishing Blog Tone Checker (grab/engineering-blog, 138 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Notion To Blog?

wasp-lang (a GitHub organization) maintains it in wasp-lang/wasp, which has 18,762 GitHub stars. The repository holds 4 skills in this directory. The repository was last updated on October 10, 2026.

Source: wasp-lang/wasp on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.