Convert Notion page to WordPress (Gutenberg) HTML
$20/month : Unlimited workflows
2500 executions/month
THE #1 IN WEB SCRAPING
Scrape any website without limits
HOSTINGER 🎉 Early Black Friday Deal
DISCOUNT 20% Try free
DISCOUNT 20%
Self-hosted n8n
Unlimited workflows - from $4.99/mo
#1 hub for scraping, AI & automation
6000+ actors - $5 credits/mo
This workflow fetches the complete content of a specific Notion page and converts all its blocks into a single HTML string compatible with the WordPress Gutenberg block editor.
It's designed to be used as a sub-workflow. You can call it from a parent workflow (e.g., "when a Notion page is updated") by passing it a notion_url. It returns a single item containing the complete, ready-to-use HTML for a WordPress post body.
Key Features
- Full Page Conversion: Fetches all blocks from a page, including nested blocks (like content inside columns or toggles).
- Rich Text Support: Correctly parses and converts rich text annotations, including bold, italic, <u>underline</u>, <s>strikethrough</s>, and links.
- Gutenberg-Compatible: Wraps content in the appropriate Gutenberg HTML comments (e.g.,
,, ``) so WordPress recognizes them as blocks. - Handles Complex Layouts: Includes specific logic to correctly rebuild Notion's column and column_list blocks into a responsive Gutenberg-friendly format.
- Supports Various Blocks: Converts paragraphs, all heading types (H1, H2, H3), bulleted and numbered lists, images, videos (YouTube/Vimeo), embeds, code blocks, and dividers.
How It Works
- Input: The workflow is triggered by an Execute Workflow node, which expects a
notion_urlin the input data. (A manual trigger with a sample URL is included for testing). - Fetch Data: It first gets the Notion page specified by the URL and then uses a second Notion node to fetch all child blocks recursively (
fetchNestedBlocks: true). - Process Rich Text: A Code node (
decode paragraphs) iterates over text-based blocks (paragraphs, lists) and uses a helper function to convert the Notionannotationsarray into standard HTML tags (e.g.,<strong>,<em>,<a>). - Convert Blocks: A second Code node (
decode blocks) uses a largeswitchstatement to map each Notion blocktypeto its corresponding Gutenberg HTML structure. - Rebuild Columns: A crucial Code node (
column&column_list) runs once on all blocks. It finds allcolumnblocks, then finds their children, and finally wraps them inside their parentcolumn_listblock. This is essential for correctly handling nested layouts. - Filter & Aggregate: The workflow filters out all nested blocks, keeping only the top-level ones (since the nested content is now inside its parent, like the column block). It then aggregates all the generated HTML snippets into a single array.
- Final Output: A final Set node joins the array of HTML blocks with newline characters, producing a single text string in a field named
wp. This string can be directly used in the "Content" field of a WordPress node in your parent workflow.
Setup
- Notion Credentials: You must configure your Notion credentials in the two Notion nodes:
Get a database pageGet many child blocks
- Trigger: To use this, call it from another workflow using an Execute Workflow node. Pass the URL of the Notion page you want to convert in the
notion_urlfield.