notion-to-blog

notion-to-blog is a skill for Claude Code from wasp-lang/wasp. It costs 37 tokens per session (993 once invoked), scanned A, original, MIT.

A transfer workflow that turns a Notion page into a properly formatted MDX post for the Wasp website.

In plain words
What is it for?
It helps fetch a Notion page, identify the actual article among working notes, download and optimize its images, and create the resulting MDX file.
Why use it?
It removes manual copying and formatting while handling Notion pages whose content may be split across multiple blocks.

Skill for Claude Code

Written for Claude Code: argument-hint in frontmatter.

Good fit It helps fetch a Notion page, identify the actual article among working notes, download and optimize its images, and create the resulting MDX file.

Compare 6 skills from other repositories ↓
Install with agentmods
npx agentmods add skills/wasp-lang/wasp/notion-to-blog
About the project

Wasp is a full-stack web framework for building React and Node.js applications with declarative code, while Prisma handles database access. It is for developers who want built-in features such as authentication, background jobs, email, RPC, type safety, and deployment in one application framework.

wasp-lang/wasp · 18,724 stars · on GitHub · wasp.sh

Install

Getting it into your agent

One page per mod, every tool's command on it. A separate URL per tool would split the same page into five that compete with each other.

Any agent
npx skills add wasp-lang/wasp --skill notion-to-blog
Clone the repo
git clone --depth 1 https://github.com/wasp-lang/wasp

Made for: Claude Code.

Wrote this? Show the measurements

A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.

agentmods badge for notion-to-blog

README.md
[![agentmods](https://agentmods.dev/badge/skills/wasp-lang/wasp/notion-to-blog/github.svg)](https://agentmods.dev/skills/wasp-lang/wasp/notion-to-blog)
Your own site
<a href="https://agentmods.dev/skills/wasp-lang/wasp/notion-to-blog"><img src="https://agentmods.dev/badge/skills/wasp-lang/wasp/notion-to-blog/github.svg" alt="Measured on agentmods" height="20"></a>

Or the 80×15 button, for a site that already has a row of RSS and ATOM ones. Only the verdict fits; the numbers stay here.

agentmods 80×15 button for notion-to-blog

Your own site · 80×15
<a href="https://agentmods.dev/skills/wasp-lang/wasp/notion-to-blog"><img src="https://agentmods.dev/badge/skills/wasp-lang/wasp/notion-to-blog.svg" alt="Reviewed on agentmods" width="80" height="20"></a>
Per session 37 Skills are progressive disclosure: only the name and description are preloaded; the body loads when the skill is used.
When invoked 993 The whole file, excluding the scripts and references it only reads on demand.
Security scan A 1 finding. A grade says what 26 rules found in the file — not that it is safe. Third-party audits
  • NVIDIA SkillSpector pass 7 Sept 2026
How audits are shown
Origin original No closer match found in the catalogue.
Token cost

What it costs to keep this loaded

Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.

ModelPer sessionOnce invoked
Fable 5.1 $0.00037 $0.00993
Opus 5 $0.00018 $0.00496
Sonnet 5 $0.00007 $0.00199
Haiku 4.5 $0.00004 $0.00099

Measured 12d ago against content hash 6b9eec42635b, method: parsed. Prices are Anthropic first-party input rates as of 2026-09-11, from the pricing page.

Security

Grade A, and why

notion-to-blog scanned grade A with 1 finding against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 12d ago.

A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.

Makes network callslowCapability

Not a fault in itself. Listed so you know the mod talks to something, and to what.

2. Download all images using `curl` (Notion URLs are temporary signed S3 URLs — download immediately).
web/.claude/skills/notion-to-blog/SKILL.md · 77 lines

How it starts

The opening of the file, as written. The whole thing — 77 lines — stays where its author put it; the contents beside it link to each section on GitHub.

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_item1.
    • 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.

Read the full file on GitHub · 77 lines

Changes

What this file has done since we first saw it

Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.

  1. 12d ago First seen · 77 lines · 37 tokens per session scan A 6b9eec42635b

Subscribe to this mod's changes

notion-to-blog is a skill published in the GitHub repository wasp-lang/wasp (18,724 stars, last pushed yesterday), licensed MIT. It adds 37 tokens to every session and 993 once invoked, about $0.0002 per session on Opus 5. A static security scan graded it A with 1 finding (makes network calls). No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-30.

Related

Other skills, from other repositories

optimizing-clickhouse-and-hogql-queries

Workflow for optimizing ClickHouse and HogQL queries. Use when a HogQL query, query runner, insight, or report is too slow; when a hand-written ClickHouse query (via syncexecute or in a migration) is too slow; when ClickHouse times out or hits memory limits; when investigating a slow system.querylog row; or when…

PostHog/posthog · 177 tokens

dynamic-workflows

Designs and runs task-specific JavaScript harnesses with the workflow tool. Use for broad, long-running, highly structured, or adversarial work that benefits from many isolated agents: exhaustive audits, root-cause investigations, research, large triage queues, competing proposals, repeated verification, and…

PostHog/posthog · 93 tokens

adding-product-alerting

Recommended repo-engineering guide when adding alerting to a PostHog product or extending the shared alerts platform. Routes lifecycle state machines, AlertPolicy, destinations, HogFunction dispatch, email, fixed-cadence and calendar scheduling, insight evaluation, the AlertWizard, and shared alert editor components.…

PostHog/posthog · 97 tokens

adding-mcp-store-servers

Add a third-party MCP server (Linear, Notion, GitHub, ...) to the PostHog MCP store catalog. Use when asked to "add X to the MCP store", expand the MCP server marketplace, or fix a broken catalog entry. Covers finding the vendor's remote MCP endpoint, probing it (handshake, OAuth discovery, DCR), authoring the catalog…

PostHog/posthog · 107 tokens

subagent-orchestration

How and when to delegate work to subagents via the subagent tool (Explore, Plan, General). Use when a task involves codebase recon, implementation planning, or actual code changes that would benefit from an isolated context window instead of doing it all inline.

PostHog/posthog · 60 tokens

managing-reminders

Create and manage PostHog reminders — private, human-paced nudges that fire as in-app notifications on a schedule, optionally linked to a PostHog resource. Use when the user says "remind me to…", wants a one-off or recurring nudge (daily/weekly/monthly/yearly, a cron schedule, or a specific date/time), wants to be…

PostHog/posthog · 146 tokens