<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Kjetil Furås</title>
    <description>The latest articles on DEV Community by Kjetil Furås (@kfuras).</description>
    <link>https://dev.to/kfuras</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3806150%2F9172817a-2f98-47b2-a39c-d3c8d672a84d.jpg</url>
      <title>DEV Community: Kjetil Furås</title>
      <link>https://dev.to/kfuras</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/kfuras"/>
    <language>en</language>
    <item>
      <title>How to Build a WordPress Content Pipeline with AI Agents</title>
      <dc:creator>Kjetil Furås</dc:creator>
      <pubDate>Thu, 23 Apr 2026 20:44:54 +0000</pubDate>
      <link>https://dev.to/kfuras/how-to-build-a-wordpress-content-pipeline-with-ai-agents-4a5e</link>
      <guid>https://dev.to/kfuras/how-to-build-a-wordpress-content-pipeline-with-ai-agents-4a5e</guid>
      <description>&lt;p&gt;A content pipeline is just the steps your post takes from idea to published. For most teams, those steps are: write → edit → format → upload images → set SEO → add featured image → publish. Each step is straightforward on its own. Together, they add up to an hour or more per post — and that's before you factor in the back-and-forth when something doesn't format correctly in Gutenberg.&lt;/p&gt;

&lt;p&gt;AI can automate most of these steps — if you connect the right tools. The key word is “connect.” AI alone gives you a draft. AI connected to your WordPress site via the right publishing layer gives you a finished post. Here's how to build that pipeline.&lt;/p&gt;

&lt;h2&gt;
  
  
  What a Content Pipeline Looks Like Without Automation
&lt;/h2&gt;

&lt;p&gt;Walk through what actually happens when a typical WordPress post gets published manually. The writer drafts in Google Docs or Notion. An editor reviews it and leaves comments. The writer incorporates feedback, then opens WordPress, creates a new post, and starts copying content across.&lt;/p&gt;

&lt;p&gt;That copy-paste step is where time disappears. Gutenberg doesn't accept pasted text the way a word processor does. Bold and italic formatting usually survives, but heading levels shift, paragraph spacing breaks down, and any custom formatting gets dropped entirely. Code blocks come in as plain text. Tables either mangle or paste as unstyled HTML.&lt;/p&gt;

&lt;p&gt;Then images. Each image needs to be downloaded from wherever it lives — Docs, Dropbox, an email attachment — and uploaded individually to the WordPress media library. Then inserted into the post at the right position. Then resized if the original is too large. A post with six images easily adds 15 minutes to the publishing process.&lt;/p&gt;

&lt;p&gt;After images: the SEO fields. Yoast or Rank Math needs a meta title, a meta description, and a focus keyword. These get written by hand, usually in a rush right before publish. Then a featured image — either created from scratch or dug out of a stock site. Then categories and tags. Then the post gets scheduled or published, and someone checks it on the live site to make sure nothing broke.&lt;/p&gt;

&lt;p&gt;A realistic estimate for a well-maintained WordPress blog: 45 minutes to an hour of non-writing work per post. For a team publishing three posts a week, that's two to three hours a week spent on mechanical tasks that produce no actual content value.&lt;/p&gt;

&lt;h2&gt;
  
  
  Where AI Fits Into the Pipeline
&lt;/h2&gt;

&lt;p&gt;AI is genuinely useful for specific parts of the pipeline. It's not useful for all of them, and trying to use it everywhere leads to a mess. Being clear about where AI helps — and where it doesn't — is what separates a working pipeline from one that creates more problems than it solves.&lt;/p&gt;

&lt;p&gt;AI is good at: drafting long-form content from an outline, rewriting for tone or reading level, generating SEO metadata (title variants, meta descriptions, focus keywords), summarizing content for social posts or email previews, and suggesting internal link targets based on a brief.&lt;/p&gt;

&lt;p&gt;AI is bad at: making publishing decisions (when to publish, what channel to prioritize), knowing your brand voice without explicit instruction, catching factual errors in specialized domains, quality control on its own output, and anything that requires judgment about whether content will actually perform.&lt;/p&gt;

&lt;p&gt;The pipeline that actually works is a hybrid: AI handles drafting and metadata generation, a human reviews and edits the draft, and automation handles the mechanical publishing steps. No one part replaces the other. The AI speeds up the slow writing parts; the human catches the things AI gets wrong; the automation eliminates the manual formatting work.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Pipeline Architecture
&lt;/h2&gt;

&lt;p&gt;A working AI content pipeline has four stages. Each stage has a clear owner and a clear output.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Prompt.&lt;/strong&gt; You provide the AI with a topic, outline, or brief. The more specific this is — target audience, key points to cover, tone, word count — the better the output. A one-line topic produces a generic draft. A detailed brief produces something closer to a finished post.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Draft.&lt;/strong&gt; The AI generates the post. This can happen in a chat interface (Claude, GPT-4, Gemini), via an API call from your own script, or through a tool like Notipo that has AI generation built in. The output is a markdown document: structured, formatted, but not yet reviewed.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Review.&lt;/strong&gt; A human reads the draft in a markdown editor. They fix factual errors, adjust the voice, restructure sections that don't flow well, and add any context the AI missed. This is the quality gate. It takes 10–20 minutes for a well-drafted post, versus 45+ minutes for writing from scratch.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Publish.&lt;/strong&gt; Automation takes the reviewed markdown and handles everything else: converting to HTML, uploading images, setting SEO metadata, assigning categories, generating a featured image, and pushing to WordPress. No Gutenberg. No manual image uploads. One action.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The bottleneck in most teams' pipelines is stage 4. Stages 1 through 3 are conceptually simple; it's the connection between reviewed markdown and published WordPress post where things fall apart. That's the gap the right tooling needs to close.&lt;/p&gt;

&lt;h2&gt;
  
  
  Connecting AI Agents to WordPress
&lt;/h2&gt;

&lt;p&gt;AI agents can call APIs. WordPress has a REST API. On paper, this means an AI agent should be able to publish a post directly to WordPress. In practice, the WordPress REST API handles the basics — creating a post, setting a title, adding content — but stops short of everything a real post needs.&lt;/p&gt;

&lt;p&gt;To publish a complete post programmatically, you need to handle: uploading each image and rewriting URLs in the content, setting the featured image via a separate media attachment call, writing SEO metadata through the Yoast or Rank Math REST API (each with its own authentication and field structure), assigning categories and tags by ID (which means first looking up whether they exist), and converting markdown to valid Gutenberg block HTML rather than raw HTML.&lt;/p&gt;

&lt;p&gt;Each of these is a separate API call with its own failure mode. Building and maintaining this yourself is feasible for a developer, but it's not what you want an AI agent to reason about on every publish. The missing piece is a layer that abstracts all of this complexity into a single, reliable endpoint.&lt;/p&gt;

&lt;p&gt;That's what &lt;a href="https://notipo.com/auth/register" rel="noopener noreferrer"&gt;Notipo's API&lt;/a&gt; does. An AI agent sends one POST request with the content and metadata. Notipo handles the WordPress-specific complexity: image upload, SEO fields, featured image, Gutenberg formatting. Here's what a realistic API payload from an AI agent looks like:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"title"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"How to Reduce Churn in B2B SaaS"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"content"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"# How to Reduce Churn in B2B SaaS&lt;/span&gt;&lt;span class="se"&gt;\n\n&lt;/span&gt;&lt;span class="s2"&gt;Churn is the silent killer..."&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"status"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"draft"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"seo"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"meta_title"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"How to Reduce Churn in B2B SaaS (Proven Strategies)"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"meta_description"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"A practical guide to identifying churn risk early and..."&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"focus_keyword"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"reduce churn B2B SaaS"&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"categories"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;"Growth"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Retention"&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"tags"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;"churn"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"saas"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"customer success"&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"featured_image"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"generate"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"prompt"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Abstract illustration of customer retention funnel"&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The AI agent generates this payload based on the draft it wrote. Notipo receives it, processes the WordPress-specific work, and creates the post. The agent doesn't need to know how WordPress handles image attachments or how Rank Math stores SEO fields. It just needs to produce structured content and metadata — something AI is well-suited for.&lt;/p&gt;

&lt;h2&gt;
  
  
  Building the Pipeline Step by Step
&lt;/h2&gt;

&lt;p&gt;Here's how to set up the full pipeline using Notipo as the publishing layer.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 1: Connect Notipo to your WordPress site.&lt;/strong&gt; Create a &lt;a href="https://notipo.com/auth/register" rel="noopener noreferrer"&gt;Notipo account&lt;/a&gt; and go to Settings → WordPress. Enter your site URL and generate an application password in WordPress (Users → Profile → Application Passwords). Notipo will verify the connection and check which SEO plugin you have installed.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 2: Use Notipo's editor or API to receive AI drafts.&lt;/strong&gt; You can write directly in Notipo's built-in markdown editor, or use the API to push drafts programmatically from an AI agent. If you're using the editor, there's an AI generation button that lets you provide a brief and get a draft inline. If you're building an automated pipeline, use the API endpoint with your API key.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 3: Review the draft in Notipo.&lt;/strong&gt; The draft appears in Notipo's editor. Edit the markdown directly — fix anything the AI got wrong, adjust the structure, add images by pasting or uploading. The SEO fields panel on the right lets you set the meta title, meta description, and focus keyword. You can also set the featured image here: upload one, use an existing WordPress media library image, or let Notipo generate one.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 4: Publish.&lt;/strong&gt; Click Publish. Notipo converts the markdown to clean HTML, uploads any images you added (and rewrites the URLs in the content), applies SEO metadata via the Rank Math or Yoast API, sets the featured image, assigns categories and tags, and creates the post in WordPress. The whole process takes a few seconds. The post appears in WordPress as a fully formatted draft or live post, depending on the status you set.&lt;/p&gt;

&lt;h2&gt;
  
  
  Advanced: Fully Automated Pipeline (No Human Review)
&lt;/h2&gt;

&lt;p&gt;For teams that have validated their AI output quality on a specific content type, it's possible to remove the human review step entirely. This makes sense for high-volume, templated content: news summaries, product update announcements, weekly roundups, or SEO-targeted informational pages where factual accuracy is verifiable from a data source.&lt;/p&gt;

&lt;p&gt;The typical approach for a semi-automated pipeline: the AI agent generates content and hits the Notipo API with &lt;code&gt;"status": "draft"&lt;/code&gt;. A human gets a notification, opens WordPress, spot-checks the draft (30 seconds, not 20 minutes), and clicks publish. The mechanical work is gone; only the judgment call remains.&lt;/p&gt;

&lt;p&gt;For fully automated pipelines, set &lt;code&gt;"status": "publish"&lt;/code&gt; in the API payload. The post goes live immediately. Use this only for content types where errors are low-stakes and easily corrected — not for long-form editorial content where a hallucinated fact or wrong attribution could damage credibility.&lt;/p&gt;

&lt;p&gt;A production-grade automated pipeline typically adds a validation step before the publish call: a second AI pass that checks for obvious errors, a word count and structure check, and a duplicate content check against existing posts. These can be implemented as functions in the agent's workflow, called before the Notipo API request is made.&lt;/p&gt;

&lt;h2&gt;
  
  
  What Gets Automated in This Pipeline
&lt;/h2&gt;

&lt;p&gt;To make it concrete, here's exactly what Notipo handles automatically when an AI agent sends it a content payload:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Markdown to HTML conversion — full spec including headings, lists, tables, blockquotes, code blocks with language tags, and inline formatting.&lt;/li&gt;
&lt;li&gt;Image upload and URL rewriting — images referenced in the markdown (by URL or included in the payload) are uploaded to the WordPress media library. The image URLs in the content are rewritten to point to the uploaded copies.&lt;/li&gt;
&lt;li&gt;Featured image generation — if no featured image is provided, Notipo generates one based on the post title and category. It's uploaded and set as the post thumbnail automatically.&lt;/li&gt;
&lt;li&gt;Rank Math and Yoast SEO metadata — meta title, meta description, and focus keyword are written via the SEO plugin's REST API. No manual Yoast panel interaction needed.&lt;/li&gt;
&lt;li&gt;Category and tag assignment — categories and tags are matched by name or created if they don't exist. No need to look up taxonomy IDs beforehand.&lt;/li&gt;
&lt;li&gt;Scheduling support — set a future publish date in the payload and WordPress schedules the post automatically.&lt;/li&gt;
&lt;li&gt;Gutenberg-compatible output — content is formatted as Gutenberg blocks, not raw HTML, so it's editable in the WordPress block editor if manual changes are needed after the fact.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  What You Still Need to Do Yourself
&lt;/h2&gt;

&lt;p&gt;Automation doesn't replace editorial judgment. There are parts of the content pipeline that work better with a human in the loop, and trying to fully automate them produces worse outcomes.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Topic selection and content strategy.&lt;/strong&gt; AI can suggest topics based on keyword data or trends, but the decision about what to publish — what fits your audience, what moves your goals forward, what doesn't cannibalize existing content — is a strategic call. The best content strategies come from understanding the audience in a way AI currently can't replicate without a lot of guided input.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Accuracy review and brand voice.&lt;/strong&gt; AI drafts are a starting point, not a finished product. For technical or specialized content, a subject matter expert needs to verify facts. For brand-sensitive content, someone who knows the voice needs to review the tone. This review can be fast (10 minutes) if the draft is good and the brief was specific — but it shouldn't be skipped.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Link building strategy.&lt;/strong&gt; Notipo handles internal link formatting — if you add links in your markdown, they're preserved in the published post. But which posts should link to which, how to build external backlinks, and how to structure your internal link graph are decisions that require knowing your site's authority structure and SEO goals. That strategy is yours.&lt;/p&gt;

&lt;h2&gt;
  
  
  Getting Started
&lt;/h2&gt;

&lt;p&gt;The fastest way to see this pipeline in action is to set up Notipo with your WordPress site and publish one post through it — manually, without any AI integration. Get the publishing step working cleanly first. Once you can take markdown from the editor to a fully formatted WordPress post in one click, adding AI to the drafting step is straightforward.&lt;/p&gt;

&lt;p&gt;From there, you can layer in automation: use Notipo's built-in AI generation for drafts, or connect your own AI agent to the API. The pipeline doesn't need to be fully automated from day one. Start with the part that saves you the most time — usually the publishing step — and build from there.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://notipo.com/auth/register" rel="noopener noreferrer"&gt;Create a free Notipo account&lt;/a&gt; to connect your WordPress site and start publishing without the manual formatting work. The free tier covers five posts per month — enough to validate the pipeline before committing to it.&lt;/p&gt;

</description>
      <category>wordpress</category>
      <category>ai</category>
      <category>automation</category>
      <category>productivity</category>
    </item>
    <item>
      <title>Publish to WordPress Without the Block Editor</title>
      <dc:creator>Kjetil Furås</dc:creator>
      <pubDate>Thu, 23 Apr 2026 19:48:19 +0000</pubDate>
      <link>https://dev.to/kfuras/publish-to-wordpress-without-the-block-editor-2i8k</link>
      <guid>https://dev.to/kfuras/publish-to-wordpress-without-the-block-editor-2i8k</guid>
      <description>&lt;p&gt;Gutenberg divides people. Some find the drag-and-drop block editor intuitive. Plenty of developers, technical writers, and content teams find it gets in the way — whether that's because it mangles markdown, doesn't work well with code-heavy posts, or simply doesn't fit into an existing review workflow. The good news is that WordPress has a REST API, and there are several legitimate ways to publish content without ever opening the block editor.&lt;/p&gt;

&lt;p&gt;This guide covers each option in detail: what it does, where it falls short, and what kind of publisher it works best for.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why People Skip Gutenberg
&lt;/h2&gt;

&lt;p&gt;The block editor isn't bad for everyone. If you're building landing pages with custom layouts, or you enjoy clicking through block settings, it works well enough. But for writers and developers who live in other tools, it creates real friction:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Markdown gets mangled&lt;/li&gt;
&lt;li&gt;You can't write in your own editor&lt;/li&gt;
&lt;li&gt;Code-heavy posts are painful&lt;/li&gt;
&lt;li&gt;No SEO automation from external tools&lt;/li&gt;
&lt;li&gt;Slow for teams with external review workflows&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;None of these are reasons to abandon WordPress entirely. The platform has too much going for it — SEO plugins, hosting options, media management, plugin ecosystem. The fix is publishing through a different interface, not switching platforms.&lt;/p&gt;

&lt;h2&gt;
  
  
  Option 1 — Classic Editor Plugin
&lt;/h2&gt;

&lt;p&gt;The simplest escape hatch: install the &lt;a href="https://wordpress.org/plugins/classic-editor/" rel="noopener noreferrer"&gt;Classic Editor plugin&lt;/a&gt; from the WordPress repository. This replaces Gutenberg with the old TinyMCE-based editor that WordPress used before version 5.0. It's free, officially supported by the WordPress team, and takes about 30 seconds to set up.&lt;/p&gt;

&lt;p&gt;Once active, you get a plain rich-text editing area and a sidebar with post settings. You can also switch individual posts between classic and block editor if you want to keep Gutenberg for some content.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Pros:&lt;/strong&gt; Free, one-click install, officially supported, well understood.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Cons:&lt;/strong&gt; You're still inside WordPress. Writing still happens in a browser textarea, not your preferred editor. No image automation, no SEO metadata from external sources, no code highlighting.&lt;/p&gt;

&lt;h2&gt;
  
  
  Option 2 — WordPress REST API
&lt;/h2&gt;

&lt;p&gt;WordPress ships with a REST API at &lt;code&gt;/wp-json/wp/v2/&lt;/code&gt;. You can create, update, and publish posts via standard HTTP requests — no browser required. This opens the door to automation: CI/CD pipelines, scripts triggered on Git push, scheduled publishing jobs, or any tool that can make HTTP calls.&lt;/p&gt;

&lt;p&gt;Here's a minimal example using &lt;code&gt;curl&lt;/code&gt; to create a draft post with Application Passwords authentication:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;curl &lt;span class="nt"&gt;-X&lt;/span&gt; POST https://yourblog.com/wp-json/wp/v2/posts   &lt;span class="nt"&gt;-H&lt;/span&gt; &lt;span class="s2"&gt;"Content-Type: application/json"&lt;/span&gt;   &lt;span class="nt"&gt;-u&lt;/span&gt; &lt;span class="s2"&gt;"your-username:xxxx xxxx xxxx xxxx xxxx xxxx"&lt;/span&gt;   &lt;span class="nt"&gt;-d&lt;/span&gt; &lt;span class="s1"&gt;'{
    "title": "My Blog Post",
    "content": "&amp;lt;p&amp;gt;Post content as HTML.&amp;lt;/p&amp;gt;",
    "status": "draft",
    "categories": [5],
    "tags": [12, 18]
  }'&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Publishing a real post via the REST API isn't just one call. It's several: image uploads, featured image assignment, SEO metadata, and code highlighting.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Pros:&lt;/strong&gt; Platform-agnostic, automatable, works in any language, free.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Cons:&lt;/strong&gt; You're building and maintaining a publishing tool.&lt;/p&gt;

&lt;h2&gt;
  
  
  Option 3 — Desktop Markdown Editors
&lt;/h2&gt;

&lt;p&gt;Several native Mac apps let you write in markdown and publish to WordPress directly. Ulysses and iA Writer are writing-focused apps with WordPress publishing built in. MarsEdit is a dedicated blog editor for macOS.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Pros:&lt;/strong&gt; Native app performance, beautiful writing environments, no browser required, direct publish to WordPress.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Cons:&lt;/strong&gt; Mostly Apple-only, limited automation, weak SEO support, weak code-block handling.&lt;/p&gt;

&lt;h2&gt;
  
  
  Option 4 — Static Site Generators with WordPress Headless
&lt;/h2&gt;

&lt;p&gt;A more architectural approach: decouple the WordPress backend from the frontend entirely. Use WordPress purely as a headless CMS while building the public-facing site in Next.js, Astro, Hugo, or another static site generator.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Pros:&lt;/strong&gt; Developers work entirely in their existing tools. Full control over rendering, performance, and code highlighting.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Cons:&lt;/strong&gt; Significant upfront engineering investment.&lt;/p&gt;

&lt;h2&gt;
  
  
  Option 5 — Notipo (Write Markdown, Publish Everything)
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://notipo.com/auth/register" rel="noopener noreferrer"&gt;Notipo&lt;/a&gt; is a markdown editor built specifically for WordPress publishing. You write in the built-in editor — or sync content from Notion — and Notipo handles the entire publishing pipeline via the WordPress REST API. You never open Gutenberg.&lt;/p&gt;

&lt;p&gt;What gets handled automatically on each publish:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Markdown to HTML&lt;/li&gt;
&lt;li&gt;Image uploads&lt;/li&gt;
&lt;li&gt;Featured image handling or generation&lt;/li&gt;
&lt;li&gt;SEO metadata for Rank Math or Yoast&lt;/li&gt;
&lt;li&gt;Code highlighting&lt;/li&gt;
&lt;li&gt;Categories and tags&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The key difference from the REST API approach: Notipo is a complete tool, not a starting point. You don't build the image upload logic, the SEO connector, or the featured image pipeline yourself. It's already there.&lt;/p&gt;

&lt;h2&gt;
  
  
  Which One Should You Pick?
&lt;/h2&gt;

&lt;p&gt;The right choice depends on what you're optimizing for:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Want a simpler editor inside WordPress? Use the Classic Editor plugin.&lt;/li&gt;
&lt;li&gt;Want to automate publishing from scripts or CI? Use the REST API directly.&lt;/li&gt;
&lt;li&gt;Want a beautiful Mac writing app? Use iA Writer or Ulysses.&lt;/li&gt;
&lt;li&gt;Want a developer-focused headless setup? Use a static site generator.&lt;/li&gt;
&lt;li&gt;Want the full pipeline automated without building anything? Use &lt;a href="https://notipo.com/auth/register" rel="noopener noreferrer"&gt;Notipo&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  The Bottom Line
&lt;/h2&gt;

&lt;p&gt;Gutenberg is optional. WordPress's REST API has been stable for years, and there are mature tools at every level of the stack — from a simple plugin swap to a fully automated publishing pipeline.&lt;/p&gt;

&lt;p&gt;If you want to skip Gutenberg entirely and publish from a markdown editor with images, SEO, and featured images handled automatically, &lt;a href="https://notipo.com/auth/register" rel="noopener noreferrer"&gt;try Notipo free&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>wordpress</category>
      <category>markdown</category>
      <category>productivity</category>
      <category>blogging</category>
    </item>
    <item>
      <title>How to Use AI to Write and Publish WordPress Posts</title>
      <dc:creator>Kjetil Furås</dc:creator>
      <pubDate>Thu, 23 Apr 2026 19:48:16 +0000</pubDate>
      <link>https://dev.to/kfuras/how-to-use-ai-to-write-and-publish-wordpress-posts-36ca</link>
      <guid>https://dev.to/kfuras/how-to-use-ai-to-write-and-publish-wordpress-posts-36ca</guid>
      <description>&lt;p&gt;Most people use AI to write blog posts, then spend ten minutes copying the output into WordPress. They paste the text, watch Gutenberg mangle the formatting, re-upload the images, type out the SEO fields by hand, and finally hit publish. That's half the automation. The content is AI-generated — but the publishing is still fully manual.&lt;/p&gt;

&lt;p&gt;The complete pipeline looks different: AI writes the content, then publishes it to WordPress directly. No copy-paste, no formatting fixes, no manual uploads. Here's what that pipeline actually involves, and how to build one.&lt;/p&gt;

&lt;h2&gt;
  
  
  What “AI Writing to WordPress” Actually Means
&lt;/h2&gt;

&lt;p&gt;There are two separate things happening in a fully automated AI writing pipeline. The first is content generation: using a model like Claude or GPT-4 to draft the post. The second is publishing: taking that content and getting it into WordPress with all the metadata, images, and formatting intact.&lt;/p&gt;

&lt;p&gt;The content generation part is easy. Any AI writing tool can do it. The publishing part is where most setups fall apart, because WordPress isn't a document you paste text into — it's an application with a database, a media library, SEO plugins, and a block editor that needs structured input.&lt;/p&gt;

&lt;p&gt;Getting AI output into WordPress without manual steps requires connecting the AI to WordPress via an API. The AI doesn't log in to your admin panel. Instead, it calls the WordPress REST API (or a service that wraps it) to create the post, upload images, and set metadata programmatically. That's what turns AI writing into AI publishing.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Manual Approach (and Why It Breaks Down)
&lt;/h2&gt;

&lt;p&gt;The typical workflow for someone using AI to write WordPress posts goes like this: ask ChatGPT or Claude to write a 1,500-word post, copy the output, open the WordPress editor, paste it in. Then the work starts.&lt;/p&gt;

&lt;p&gt;Gutenberg doesn't render AI output cleanly. Headings sometimes convert correctly, sometimes don't. Lists get wrapped in extra paragraph tags. Any markdown formatting — bold, italics, code blocks — either works partially or breaks entirely, depending on how you pasted it. You end up in the block editor fixing formatting for ten minutes before the post looks right.&lt;/p&gt;

&lt;p&gt;Then there's everything else: find or generate an image, upload it to the media library, set it as the featured image. Open the Yoast or Rank Math sidebar, type the meta description, set the focus keyword, check the SEO score. Assign a category and tags. Set the publish date. Hit publish.&lt;/p&gt;

&lt;p&gt;For a single post, that's manageable. For ten posts a week, it's a part-time job. The writing is automated, but the publishing overhead hasn't moved — and at scale, that overhead becomes the bottleneck.&lt;/p&gt;

&lt;h2&gt;
  
  
  How AI Agents Publish to WordPress Directly
&lt;/h2&gt;

&lt;p&gt;Modern AI agents aren't just text generators. They can call external APIs as part of their workflow. An agent can generate content, then immediately make HTTP requests to publish that content — without any human in the loop.&lt;/p&gt;

&lt;p&gt;WordPress exposes a REST API at &lt;code&gt;/wp-json/wp/v2/&lt;/code&gt;. An AI agent can use it to create posts (&lt;code&gt;POST /posts&lt;/code&gt;), upload images to the media library (&lt;code&gt;POST /media&lt;/code&gt;), assign categories, and set featured images. SEO plugins like Rank Math and Yoast expose their own REST API extensions for setting meta descriptions and focus keywords.&lt;/p&gt;

&lt;p&gt;In theory, an AI agent could call all of these endpoints in sequence after generating the content. In practice, assembling that pipeline yourself is significant engineering work: handling authentication, converting markdown to the right HTML format, re-uploading and re-linking images, calling SEO plugin APIs, and stitching the whole thing together reliably.&lt;/p&gt;

&lt;p&gt;That's where a tool like Notipo fits in. Instead of building all of that yourself, the agent makes a single API call to Notipo. Notipo takes the content and handles the entire WordPress pipeline — markdown conversion, image upload, SEO metadata, featured image, publish. The agent doesn't need to know anything about how WordPress works internally.&lt;/p&gt;

&lt;h2&gt;
  
  
  Setting It Up with Notipo's API
&lt;/h2&gt;

&lt;p&gt;Notipo exposes an API endpoint designed for exactly this use case. An AI agent — or any script — can send a single request with the post content and metadata, and Notipo handles everything else.&lt;/p&gt;

&lt;p&gt;A typical request looks like this:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;curl &lt;span class="nt"&gt;-X&lt;/span&gt; POST https://app.notipo.com/api/posts   &lt;span class="nt"&gt;-H&lt;/span&gt; &lt;span class="s2"&gt;"Authorization: Bearer YOUR_API_KEY"&lt;/span&gt;   &lt;span class="nt"&gt;-H&lt;/span&gt; &lt;span class="s2"&gt;"Content-Type: application/json"&lt;/span&gt;   &lt;span class="nt"&gt;-d&lt;/span&gt; &lt;span class="s1"&gt;'{
    "title": "10 Ways to Reduce Churn in SaaS",
    "content": "## Why churn happens

Most SaaS churn...",
    "seo_description": "Learn the top strategies for reducing SaaS churn and improving retention.",
    "focus_keyword": "reduce SaaS churn",
    "category": "Growth",
    "tags": ["churn", "retention", "saas"],
    "status": "publish"
  }'&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The &lt;code&gt;content&lt;/code&gt; field accepts markdown. Notipo parses it, converts it to clean HTML, extracts any image references, uploads them to your WordPress media library, and rewrites the image URLs to point to your site. The SEO fields get written to Rank Math or Yoast (whichever is active on your site). The category and tags are matched to existing taxonomy terms or created if they don't exist.&lt;/p&gt;

&lt;p&gt;If you don't provide a featured image URL, Notipo can generate one automatically based on the post title and category. The generated image is uploaded to your media library and set as the post thumbnail before publishing.&lt;/p&gt;

&lt;p&gt;From the agent's perspective, publishing a post is a single API call. Everything that used to require manual WordPress work happens inside that call.&lt;/p&gt;

&lt;h2&gt;
  
  
  Using AI Directly in Notipo's Editor
&lt;/h2&gt;

&lt;p&gt;You don't need to build an API pipeline to use AI with Notipo. If you want to draft posts yourself — with AI assistance — Notipo has writing tools built into the editor.&lt;/p&gt;

&lt;p&gt;You can open a new post, use the AI writing panel to generate a draft, edit it directly in the markdown editor, and publish to WordPress from the same interface. The AI-generated content flows into the editor, and you can refine it before it goes live. No switching between tabs, no copy-pasting, no reformatting.&lt;/p&gt;

&lt;p&gt;This is the right flow for writers who want AI assistance without fully automating the process. You stay in control of the final content, but you don't lose time on the publishing mechanics. Write or edit in Notipo, click publish, and the post is live on WordPress with all metadata handled.&lt;/p&gt;

&lt;h2&gt;
  
  
  What the Pipeline Handles Automatically
&lt;/h2&gt;

&lt;p&gt;Whether you're using the API or the editor, the publishing pipeline takes care of the same set of tasks that normally require manual work in WordPress:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Markdown to HTML conversion — headings, bold, italic, links, lists, tables, and code blocks all convert cleanly. No Gutenberg formatting issues.&lt;/li&gt;
&lt;li&gt;Image upload — images referenced in the markdown are fetched and uploaded to your WordPress media library. The HTML is updated to use the new hosted URLs.&lt;/li&gt;
&lt;li&gt;Featured image — set from a URL you provide, or auto-generated from the post title. Uploaded to WordPress and set as the post thumbnail.&lt;/li&gt;
&lt;li&gt;SEO metadata — meta description, focus keyword, and SEO title written to Rank Math or Yoast via their REST APIs.&lt;/li&gt;
&lt;li&gt;Code syntax highlighting — fenced code blocks are converted with language classes compatible with Highlight.js and Prism.js.&lt;/li&gt;
&lt;li&gt;Categories and tags — matched to existing WordPress taxonomy terms or created on the fly.&lt;/li&gt;
&lt;li&gt;Publish status — post to draft for review or straight to published, set per request.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The result is a fully formatted, SEO-ready post in WordPress — the same output you'd get from spending 20–30 minutes in the admin panel, but without the manual steps.&lt;/p&gt;

&lt;h2&gt;
  
  
  Who Is This For?
&lt;/h2&gt;

&lt;p&gt;Automating the AI-to-WordPress pipeline makes the most sense in a few specific situations:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Content teams publishing multiple posts per week&lt;/li&gt;
&lt;li&gt;Developers building AI writing tools&lt;/li&gt;
&lt;li&gt;Solopreneurs running a blog alongside other work&lt;/li&gt;
&lt;li&gt;Anyone tired of the copy-paste-fix cycle&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The manual workflow isn't broken for occasional publishing. But the more you publish, the more the friction compounds. At some point, the time spent on publishing mechanics exceeds the time spent on writing — and that's when automation starts to make a real difference.&lt;/p&gt;

&lt;p&gt;If you want to try the pipeline, &lt;a href="https://notipo.com/auth/register" rel="noopener noreferrer"&gt;sign up for Notipo&lt;/a&gt; and connect your WordPress site. The free tier covers up to 5 posts per month — enough to test the full workflow and see whether it fits how you publish.&lt;/p&gt;

</description>
      <category>wordpress</category>
      <category>ai</category>
      <category>automation</category>
      <category>blogging</category>
    </item>
    <item>
      <title>WordPress Publishing Workflow: Draft to Live Post in Under 2 Minutes</title>
      <dc:creator>Kjetil Furås</dc:creator>
      <pubDate>Thu, 23 Apr 2026 19:42:48 +0000</pubDate>
      <link>https://dev.to/kfuras/wordpress-publishing-workflow-draft-to-live-post-in-under-2-minutes-397a</link>
      <guid>https://dev.to/kfuras/wordpress-publishing-workflow-draft-to-live-post-in-under-2-minutes-397a</guid>
      <description>&lt;h2&gt;
  
  
  The WordPress Publishing Bottleneck
&lt;/h2&gt;

&lt;p&gt;Most WordPress users spend 10 to 20 minutes per post on things that aren't writing. You paste your draft into the Block Editor, watch the formatting break, then fix headings one by one. You upload images manually, drag them into position, set alt text. You fill in SEO fields — meta title, description, focus keyword, slug. You pick a featured image or design one in Canva.&lt;/p&gt;

&lt;p&gt;That's 10 to 20 minutes of overhead on every single post. If you publish twice a week, that's two hours a month spent on formatting and uploading — not writing. The WordPress publishing workflow is the bottleneck, not the writing itself.&lt;/p&gt;

&lt;p&gt;The Block Editor was designed for page builders and site designers. For writers who just want to publish a blog post, it adds friction at every step. And the more often you publish, the more that friction compounds.&lt;/p&gt;

&lt;h2&gt;
  
  
  What a Fast WordPress Publishing Workflow Looks Like
&lt;/h2&gt;

&lt;p&gt;A fast publishing workflow has three properties: you write in a clean editor, you publish in one action, and the output on WordPress looks exactly like what you wrote. No reformatting step in between.&lt;/p&gt;

&lt;p&gt;Here's the target state:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Write in markdown.&lt;/strong&gt; No Block Editor, no Gutenberg blocks, no formatting toolbar. Just text with headings, bold, links, code blocks, and images — the way developers and technical writers already work.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;One click to publish.&lt;/strong&gt; Formatting, image uploads, SEO metadata, featured image — all handled automatically. You don't touch the WordPress admin.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Under 2 minutes.&lt;/strong&gt; From “final draft” to “live on your site.” Not 20 minutes of manual work. Two minutes.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;That's not a theoretical ideal. It's what the workflow actually looks like when you remove the Block Editor from the process entirely.&lt;/p&gt;

&lt;h2&gt;
  
  
  Step by Step: Draft to Live Post With Notipo
&lt;/h2&gt;

&lt;p&gt;Notipo is a markdown-to-WordPress publishing tool. You write in a clean markdown editor, and Notipo handles everything between your draft and a live WordPress post. Here's the actual flow:&lt;/p&gt;

&lt;h3&gt;
  
  
  1. Write Your Post in Markdown
&lt;/h3&gt;

&lt;p&gt;Open the Notipo editor and write your post using standard markdown. Headings, paragraphs, bold, italic, links, images, code blocks — everything you'd use in any markdown file. The editor is distraction-free: no sidebar, no block palette, no formatting menus. Just your content.&lt;/p&gt;

&lt;p&gt;If you prefer writing in a local editor like VS Code, iA Writer, or Obsidian, you can do that too. Notipo also syncs from Notion if that's where your content lives. The publishing step is the same regardless of where you write.&lt;/p&gt;

&lt;h3&gt;
  
  
  2. Preview What WordPress Will Show
&lt;/h3&gt;

&lt;p&gt;Before publishing, the preview renders your markdown exactly as it will appear on WordPress. Headings are styled, code blocks have syntax highlighting, images are positioned. What you see is what gets published — no surprises after the fact.&lt;/p&gt;

&lt;h3&gt;
  
  
  3. Hit Publish
&lt;/h3&gt;

&lt;p&gt;One click. Here's what happens behind the scenes:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Markdown is converted to clean WordPress HTML — proper heading hierarchy, semantic markup, no leftover formatting artifacts&lt;/li&gt;
&lt;li&gt;Images are uploaded to your WordPress media library automatically — no manual drag-and-drop&lt;/li&gt;
&lt;li&gt;SEO metadata is set: meta title, meta description, slug, focus keyword&lt;/li&gt;
&lt;li&gt;A featured image is generated and attached to the post&lt;/li&gt;
&lt;li&gt;The post goes live on your WordPress site&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;No copy-paste. No reformatting. No manual image uploads. No switching between tabs. The entire process from clicking “publish” to the post being live takes under 30 seconds.&lt;/p&gt;

&lt;h2&gt;
  
  
  What About Code Blocks?
&lt;/h2&gt;

&lt;p&gt;If you write technical content, code blocks matter. In the Block Editor, getting syntax-highlighted code into WordPress is painful — you either install a plugin, paste into a “code” block that strips formatting, or manually add HTML classes.&lt;/p&gt;

&lt;p&gt;With Notipo, code blocks in your markdown are automatically converted with syntax highlighting. Write a fenced code block with a language tag — &lt;code&gt;&lt;/code&gt;`&lt;code&gt;javascript&lt;/code&gt; — and it renders with full highlighting on WordPress. No plugins needed. The highlighting is baked into the HTML, so it works on any WordPress theme.&lt;/p&gt;

&lt;h2&gt;
  
  
  What About SEO?
&lt;/h2&gt;

&lt;p&gt;SEO metadata is part of the publishing step, not a separate task. When you set a title, description, and focus keyword in Notipo, they're written directly to WordPress — including to Rank Math or Yoast fields if you use those plugins.&lt;/p&gt;

&lt;p&gt;That means your meta title, meta description, and slug are set automatically. You don't need to open the WordPress admin, scroll to the SEO panel, and type them in manually. One less step, one less place to forget something.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Time Difference Is Real
&lt;/h2&gt;

&lt;p&gt;Here's what the traditional WordPress publishing workflow looks like, step by step:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Paste draft into Block Editor: 1 minute&lt;/li&gt;
&lt;li&gt;Fix broken formatting (headings, lists, code blocks): 3–5 minutes&lt;/li&gt;
&lt;li&gt;Upload and position images: 3–5 minutes&lt;/li&gt;
&lt;li&gt;Fill in SEO fields: 2 minutes&lt;/li&gt;
&lt;li&gt;Create and upload featured image: 3–5 minutes&lt;/li&gt;
&lt;li&gt;Review and publish: 1 minute&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Total: 13 to 19 minutes of overhead per post.&lt;/p&gt;

&lt;p&gt;With Notipo, the same workflow:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Write in markdown editor: 0 extra minutes (you were going to write anyway)&lt;/li&gt;
&lt;li&gt;Set SEO fields inline: 30 seconds&lt;/li&gt;
&lt;li&gt;Click publish: 30 seconds&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Total: under 2 minutes. The formatting, images, featured image, and SEO metadata are handled automatically.&lt;/p&gt;

&lt;p&gt;If you publish twice a week, that's 26 to 38 minutes saved per week. Over a year, that's roughly 30 hours you get back — an entire work week that was spent copying, pasting, and reformatting.&lt;/p&gt;

&lt;h2&gt;
  
  
  Free Plan vs Pro
&lt;/h2&gt;

&lt;p&gt;Notipo has a free tier: 5 posts per month, no credit card required. That's enough to test the workflow and see if it fits how you write.&lt;/p&gt;

&lt;p&gt;The Pro plan is $19/month and removes the post limit. You also get automatic image hosting (images are uploaded to your WordPress media library), AI-generated featured images, priority support, and API access for automation.&lt;/p&gt;

&lt;p&gt;If you're publishing more than 5 posts a month, Pro pays for itself in time saved on the first post.&lt;/p&gt;

&lt;h2&gt;
  
  
  Try It
&lt;/h2&gt;

&lt;p&gt;The best way to evaluate a WordPress publishing workflow is to try it with a real post. Sign up for free at &lt;a href="https://notipo.com" rel="noopener noreferrer"&gt;notipo.com&lt;/a&gt;, connect your WordPress site, and publish one post. The whole setup takes about 3 minutes.&lt;/p&gt;

&lt;p&gt;If you're curious how AI agents can take this even further — drafting content and publishing to WordPress automatically — check out &lt;a href="https://notipo.com/blog/wordpress-content-pipeline-ai-agents" rel="noopener noreferrer"&gt;How to Build a WordPress Content Pipeline with AI Agents&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>wordpress</category>
      <category>blogging</category>
      <category>productivity</category>
      <category>markdown</category>
    </item>
    <item>
      <title>How to Use Claude Code Subagents to Run Parallel Tasks</title>
      <dc:creator>Kjetil Furås</dc:creator>
      <pubDate>Thu, 23 Apr 2026 19:42:47 +0000</pubDate>
      <link>https://dev.to/kfuras/how-to-use-claude-code-subagents-to-run-parallel-tasks-59hf</link>
      <guid>https://dev.to/kfuras/how-to-use-claude-code-subagents-to-run-parallel-tasks-59hf</guid>
      <description>&lt;p&gt;I’ve been using Claude Code subagents daily for the past few months. They’re the feature that turned Claude Code from a useful assistant into something that actually scales — running multiple tasks at once without losing context or focus.&lt;/p&gt;

&lt;p&gt;Here’s how they work, when to reach for them, and the patterns that actually matter in practice.&lt;/p&gt;

&lt;h2&gt;
  
  
  What Claude Code Subagents Are
&lt;/h2&gt;

&lt;p&gt;A subagent is a separate Claude Code instance that your main session spawns to handle a scoped task. The parent agent keeps its context clean while the child does focused work — exploring files, running searches, reviewing code, or building features in isolation.&lt;/p&gt;

&lt;p&gt;The key thing to understand: the subagent starts with zero context from your conversation. It doesn’t know what you’ve been working on, what files you’ve read, or what you’ve tried. You have to brief it like a colleague who just walked into the room. This is by design — it keeps both agents focused and prevents context pollution.&lt;/p&gt;

&lt;h2&gt;
  
  
  When to Use Subagents vs Doing It Yourself
&lt;/h2&gt;

&lt;p&gt;Not everything needs a subagent. Here’s the decision framework I use:&lt;/p&gt;

&lt;p&gt;Use a subagent when:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;You need to explore a large codebase and don’t know where things are yet&lt;/li&gt;
&lt;li&gt;You have independent research tasks that can run in parallel&lt;/li&gt;
&lt;li&gt;The work needs isolation (a separate git worktree, for example)&lt;/li&gt;
&lt;li&gt;You want to protect your main context from noisy search results&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Just do it yourself when:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;You already know the target file and what to change&lt;/li&gt;
&lt;li&gt;It’s a simple edit — three lines of code don’t need a subagent&lt;/li&gt;
&lt;li&gt;The task depends on something you just learned in this conversation&lt;/li&gt;
&lt;li&gt;You need to make a judgment call that requires full context&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The threshold is roughly: if you’d context-switch to do it, spawn a subagent. If you’d just do it inline, do it inline.&lt;/p&gt;

&lt;h2&gt;
  
  
  Practical Example: Parallel Code Review
&lt;/h2&gt;

&lt;p&gt;This is where subagents shine. Say you have a PR with changes across the backend, frontend, and test suite. Instead of reviewing everything sequentially, you spawn three subagents — each reviewing a different dimension of the same PR.&lt;/p&gt;

&lt;p&gt;Here’s what that looks like in practice. You tell Claude Code something like:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Review this PR for security issues, performance concerns, and test coverage gaps. Run all three reviews in parallel.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Claude Code spawns three subagents simultaneously:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Security reviewer — checks for injection vulnerabilities, auth bypasses, exposed secrets, unsafe input handling&lt;/li&gt;
&lt;li&gt;Performance reviewer — looks for N+1 queries, missing indexes, unnecessary re-renders, large payload sizes&lt;/li&gt;
&lt;li&gt;Test coverage reviewer — identifies untested code paths, missing edge cases, brittle test patterns&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Each subagent gets a self-contained prompt with the PR diff and a specific focus area. They run concurrently, so a review that would take 15 minutes sequentially finishes in 5.&lt;/p&gt;

&lt;p&gt;When all three return, you get three focused reports. No context bleed between them — the security reviewer isn’t distracted by performance opinions, and vice versa.&lt;/p&gt;

&lt;h2&gt;
  
  
  Practical Example: Research Then Implement
&lt;/h2&gt;

&lt;p&gt;Not all subagent work is parallel. Sometimes you need a sequential pattern: research first, then act on the findings.&lt;/p&gt;

&lt;p&gt;Say you need to migrate from a deprecated API across your codebase. You don’t know how many call sites exist or what patterns they use. The approach:&lt;/p&gt;

&lt;p&gt;Step 1: Spawn a research subagent to find every usage of the deprecated API. Give it a clear brief:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Find all usages of the &lt;code&gt;legacyAuth.verify()&lt;/code&gt; method across the codebase. For each usage, note the file, the surrounding context, and whether it’s in a hot path or a background job. Report back with a summary.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;The subagent explores, searches, reads files, and returns a structured report: “Found 12 usages across 8 files. 3 are in request middleware (hot path), 5 are in background workers, 4 are in tests.”&lt;/p&gt;

&lt;p&gt;Step 2: Now you have the full picture in your main context. You implement the migration yourself, file by file, using the research to prioritize: fix the hot-path middleware first, then the workers, then update the tests.&lt;/p&gt;

&lt;p&gt;This pattern — delegate the exploration, keep the implementation — is how I handle most refactoring tasks.&lt;/p&gt;

&lt;h2&gt;
  
  
  Running Subagents in the Background
&lt;/h2&gt;

&lt;p&gt;Claude Code gives you two modes for subagents: foreground and background.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Foreground (default):&lt;/strong&gt; You wait for the result before doing anything else. Use this when the subagent’s output determines your next step — like the research-then-implement pattern above.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Background:&lt;/strong&gt; The subagent runs independently and you get notified when it’s done. Use this for genuinely parallel work where you don’t need the result immediately.&lt;/p&gt;

&lt;p&gt;The distinction matters. If you put everything in the background, you’ll end up with results you can’t act on because they arrived out of order. If you put everything in the foreground, you’re waiting unnecessarily.&lt;/p&gt;

&lt;p&gt;My rule of thumb: if I’m going to read the result and then decide what to do, foreground. If I already know what I’m doing and the subagent is handling something separate, background.&lt;/p&gt;

&lt;h2&gt;
  
  
  Tips From Running Subagents in Production
&lt;/h2&gt;

&lt;p&gt;I run subagents as part of an autonomous agent system — scheduled cron jobs, code review bots, Sentry error fixers. Here’s what I’ve learned:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Write self-contained prompts. The subagent has zero context from your conversation. Don’t say “fix the bug we discussed” — say “fix the null reference error in &lt;code&gt;src/auth/middleware.ts&lt;/code&gt; at line 47 where &lt;code&gt;user.email&lt;/code&gt; is accessed before the null check.” Include file paths, line numbers, and what specifically needs to change.&lt;/li&gt;
&lt;li&gt;Don’t over-delegate. Spawning a subagent has overhead — context initialization, prompt processing, result synthesis. For a three-line fix, just do it. Subagents earn their cost on tasks that would pollute your context or benefit from parallelism.&lt;/li&gt;
&lt;li&gt;Use worktree isolation for code changes. When a subagent needs to modify files, give it a git worktree so it works on an isolated copy. This prevents conflicts with your main working tree and makes it safe to run multiple coding subagents in parallel.&lt;/li&gt;
&lt;li&gt;Limit parallel spawns. Three to five concurrent subagents is the sweet spot. Beyond that, you’re juggling too many results and the synthesis overhead cancels out the time savings.&lt;/li&gt;
&lt;li&gt;Trust the push-based completion model. Don’t poll for subagent status. You get notified when they’re done. Polling wastes cycles and adds noise.&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  How This Fits Into Larger Agent Architectures
&lt;/h2&gt;

&lt;p&gt;Subagents aren’t just a Claude Code feature — they’re a pattern. In my setup with OpenClaw, the main agent delegates specialized work to coding agents, research agents, and review agents. Each one operates in its own session with its own context, and results flow back automatically.&lt;/p&gt;

&lt;p&gt;The Claude Code subagent model is the smallest unit of this pattern: one agent, scoped task, clean handoff. If you’re building autonomous workflows — scheduled jobs, error-fixing pipelines, multi-repo operations — subagents are how you decompose the work without losing coherence.&lt;/p&gt;

&lt;p&gt;If you’re building agent workflows like this, I share operator notes and templates in &lt;a href="https://www.skool.com/build-and-automate" rel="noopener noreferrer"&gt;Build &amp;amp; Automate&lt;/a&gt; — the community where I break down what’s actually working in production.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>claude</category>
      <category>coding</category>
      <category>productivity</category>
    </item>
    <item>
      <title>How to Publish Markdown to WordPress (Without Copy-Paste)</title>
      <dc:creator>Kjetil Furås</dc:creator>
      <pubDate>Mon, 20 Apr 2026 08:23:42 +0000</pubDate>
      <link>https://dev.to/kfuras/how-to-publish-markdown-to-wordpress-without-copy-paste-3be9</link>
      <guid>https://dev.to/kfuras/how-to-publish-markdown-to-wordpress-without-copy-paste-3be9</guid>
      <description>&lt;p&gt;You write in markdown. Your blog runs on WordPress. And somewhere in between, things go wrong. Gutenberg mangles your formatting. Images need to be uploaded separately. Code blocks lose their syntax highlighting. You end up spending more time fixing the post than writing it.&lt;/p&gt;

&lt;p&gt;It doesn't have to be this way. There are tools that take your markdown and publish it to WordPress directly — handling images, metadata, and formatting automatically. Here's how each approach works, what breaks, and what actually solves the problem.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why Markdown and WordPress Don't Get Along
&lt;/h2&gt;

&lt;p&gt;WordPress switched to Gutenberg (the block editor) in 2018. Since then, pasting markdown into WordPress has been a gamble. Gutenberg converts some markdown syntax into blocks, ignores the rest, and occasionally creates a mess of nested paragraphs and stray HTML.&lt;/p&gt;

&lt;p&gt;The core problem: Gutenberg is a visual block editor. Markdown is a plain-text format. They represent content differently, and WordPress doesn't have a reliable built-in bridge between the two.&lt;/p&gt;

&lt;p&gt;Specifically, here's what breaks when you paste markdown into WordPress:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Images&lt;/strong&gt; — markdown image references don't get uploaded to your media library. They either point to external URLs (which can break) or get stripped entirely.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Code blocks&lt;/strong&gt; — fenced code blocks become plain &lt;code&gt;&amp;lt;pre&amp;gt;&lt;/code&gt; tags with no syntax highlighting.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Front matter&lt;/strong&gt; — YAML front matter (title, category, tags) gets treated as regular text content.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Tables&lt;/strong&gt; — markdown tables are hit-or-miss. Some convert to HTML tables, some render as plain text.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;SEO metadata&lt;/strong&gt; — there's no way to set meta descriptions, focus keywords, or Open Graph tags from your markdown file.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Option 1: The Jetpack Markdown Module
&lt;/h2&gt;

&lt;p&gt;Jetpack includes a markdown module that lets you write posts in markdown syntax directly inside the WordPress editor. Enable it under Jetpack → Settings → Writing, and you can use a "Markdown" block in Gutenberg.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Pros:&lt;/strong&gt; Free. Works inside WordPress. Handles basic markdown syntax (headings, bold, italic, links, lists).&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Cons:&lt;/strong&gt; You're still writing inside WordPress, not in your favorite editor. No image handling — you still upload images manually. No code syntax highlighting. No SEO metadata from markdown. And you need the full Jetpack plugin installed, which is heavy.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Best for:&lt;/strong&gt; Writers who want markdown syntax but don't mind working inside the WordPress admin panel.&lt;/p&gt;

&lt;h2&gt;
  
  
  Option 2: Convert Markdown to HTML, Then Paste
&lt;/h2&gt;

&lt;p&gt;Tools like &lt;code&gt;pandoc&lt;/code&gt;, Marked, or online markdown converters can turn your &lt;code&gt;.md&lt;/code&gt; file into HTML. You then paste the HTML into a Custom HTML block in WordPress.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Pros:&lt;/strong&gt; Works with any markdown file. You keep writing in your preferred editor. Free.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Cons:&lt;/strong&gt; Manual process every time you publish. Images still need to be uploaded and linked separately. No featured image generation. No SEO metadata. Code blocks are unstyled HTML. If you update the post, you go through the whole process again.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Best for:&lt;/strong&gt; Occasional publishers who don't mind the manual work.&lt;/p&gt;

&lt;h2&gt;
  
  
  Option 3: WordPress REST API with a Script
&lt;/h2&gt;

&lt;p&gt;The WordPress REST API lets you create posts programmatically. You could write a script that reads a markdown file, converts it to HTML, and pushes it to WordPress via &lt;code&gt;POST /wp-json/wp/v2/posts&lt;/code&gt;.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;markdown&lt;/span&gt;
&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;requests&lt;/span&gt;

&lt;span class="k"&gt;with&lt;/span&gt; &lt;span class="nf"&gt;open&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;my-post.md&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="k"&gt;as&lt;/span&gt; &lt;span class="n"&gt;f&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="n"&gt;md_content&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;f&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;read&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;

&lt;span class="n"&gt;html&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;markdown&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;markdown&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;md_content&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;extensions&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;fenced_code&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;tables&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;])&lt;/span&gt;

&lt;span class="n"&gt;response&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;requests&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;post&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;https://yourblog.com/wp-json/wp/v2/posts&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;auth&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;username&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;xxxx xxxx xxxx xxxx xxxx xxxx&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;
    &lt;span class="n"&gt;json&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;title&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;My Blog Post&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;content&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;html&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;status&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;draft&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Pros:&lt;/strong&gt; Full control. Can be automated in CI/CD or run from the command line. Free (if you write the script yourself).&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Cons:&lt;/strong&gt; You're building and maintaining your own publishing tool. Image handling requires separate API calls to upload each image, then rewrite the HTML to use the new URLs. Code highlighting requires adding a client-side library. SEO metadata requires the Yoast or Rank Math REST API. Featured images require another API call. Every edge case (tables, embeds, captions) needs custom code.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Best for:&lt;/strong&gt; Developers who enjoy building tooling and have simple content (mostly text, few images).&lt;/p&gt;

&lt;h2&gt;
  
  
  Option 4: Desktop Apps with WordPress Publishing
&lt;/h2&gt;

&lt;p&gt;Apps like Ulysses, iA Writer, and MarsEdit let you write in markdown and publish to WordPress from the app. They connect to your WordPress site via the XML-RPC or REST API.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Pros:&lt;/strong&gt; Beautiful writing environment. Native app performance. Write and publish from the same place.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Cons:&lt;/strong&gt; Typically macOS/iOS only. No automatic image optimization or media library management — images are uploaded as-is. No syntax highlighting for code blocks. No SEO metadata. No featured image generation. Subscription pricing ($5–$50/month depending on the app).&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Best for:&lt;/strong&gt; Non-technical writers who value a clean writing experience and don't need code blocks or SEO automation.&lt;/p&gt;

&lt;h2&gt;
  
  
  Option 5: Notipo — Write Markdown, Publish Everything
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://notipo.com" rel="noopener noreferrer"&gt;Notipo&lt;/a&gt; is a markdown editor built specifically for WordPress publishing. You write in the built-in editor (or sync from Notion), and Notipo handles the entire pipeline:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Images&lt;/strong&gt; — uploaded to your WordPress media library automatically. No broken links, no external hosting.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Code blocks&lt;/strong&gt; — fenced code blocks are converted to syntax-highlighted HTML. Works with any theme that loads a highlighter.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;SEO metadata&lt;/strong&gt; — set focus keywords, meta descriptions, and SEO titles. Notipo writes these to Rank Math or Yoast via their REST APIs.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Featured images&lt;/strong&gt; — generated automatically based on your post title and category, or upload your own.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Categories and tags&lt;/strong&gt; — set from the editor and applied on publish.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;One-click publish&lt;/strong&gt; — your markdown goes to WordPress as a fully formatted post with all metadata in a single action.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The difference from the other options: Notipo doesn't just convert markdown to HTML. It handles everything that usually requires manual work after the conversion — the images, the metadata, the featured image, the code highlighting. You write, click publish, and the post is live.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Pricing:&lt;/strong&gt; Free for up to 5 posts per month. Pro plan is $19/month for unlimited posts.&lt;/p&gt;

&lt;h2&gt;
  
  
  Which Option Should You Pick?
&lt;/h2&gt;

&lt;p&gt;It depends on how much of the publishing pipeline you want to automate:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Just want markdown syntax in WordPress?&lt;/strong&gt; Enable the Jetpack markdown module. It's free and simple.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Publish occasionally and don't mind manual work?&lt;/strong&gt; Convert to HTML with pandoc and paste it in. Quick and free.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Developer who wants full control?&lt;/strong&gt; Build a REST API script. You'll spend a weekend on image handling, but you own the whole pipeline.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Writer who wants a beautiful app?&lt;/strong&gt; iA Writer or Ulysses, if you're on Apple and don't need code blocks.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Want the full pipeline automated?&lt;/strong&gt; &lt;a href="https://notipo.com" rel="noopener noreferrer"&gt;Notipo&lt;/a&gt; handles images, code highlighting, SEO, featured images, and publishing in one step. It's the only option that covers everything.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The manual approaches work fine when you're publishing one post a month. But if you're publishing weekly or more, the time spent on image uploads, formatting fixes, and metadata entry adds up fast. That's where automation pays for itself.&lt;/p&gt;

</description>
      <category>wordpress</category>
      <category>markdown</category>
      <category>webdev</category>
      <category>productivity</category>
    </item>
    <item>
      <title>Best Markdown Editors for WordPress Publishing in 2026</title>
      <dc:creator>Kjetil Furås</dc:creator>
      <pubDate>Sun, 19 Apr 2026 18:14:43 +0000</pubDate>
      <link>https://dev.to/kfuras/best-markdown-editors-for-wordpress-publishing-in-2026-1o30</link>
      <guid>https://dev.to/kfuras/best-markdown-editors-for-wordpress-publishing-in-2026-1o30</guid>
      <description>&lt;p&gt;Compare the best markdown editors that publish to WordPress — Notipo, Ulysses, iA Writer, MarsEdit, and Jetpack. Features, pricing, and which one fits your workflow.&lt;/p&gt;

&lt;p&gt;If you write in markdown and publish to WordPress, the Gutenberg editor is not your friend. It's a block editor designed for drag-and-drop page building, not for writing long-form content in plain text. Pasting markdown into Gutenberg is a guaranteed formatting headache.&lt;/p&gt;

&lt;p&gt;The good news is there are dedicated tools that let you write in markdown and publish to WordPress without touching Gutenberg. I've used most of them over the past few years. Here's how they compare.&lt;/p&gt;

&lt;h2&gt;
  
  
  What to Look For
&lt;/h2&gt;

&lt;p&gt;Before the comparison, here are the features that actually matter:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Native WordPress publishing&lt;/strong&gt; — can it publish directly via the REST API, or do you need to copy-paste?&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Image handling&lt;/strong&gt; — does it upload images to your WordPress media library?&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Code block support&lt;/strong&gt; — does it convert fenced code blocks to syntax-highlighted blocks?&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;SEO metadata&lt;/strong&gt; — can you set focus keywords, meta descriptions, and titles?&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Featured images&lt;/strong&gt; — does it handle featured image creation?&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Gutenberg output&lt;/strong&gt; — does it create proper Gutenberg blocks, or raw HTML?&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  1. Notipo
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://notipo.com" rel="noopener noreferrer"&gt;Notipo&lt;/a&gt; is built specifically for the markdown-to-WordPress pipeline. Full disclosure: I built it, so I'm biased. But I built it because nothing else did what I needed.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What it does:&lt;/strong&gt; Write in the browser-based markdown editor (or sync from Notion, or use the API). Notipo converts to Gutenberg blocks, uploads images to your media library, generates AI featured images, sets Rank Math SEO metadata, and publishes. One click.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Code blocks:&lt;/strong&gt; Converted to Prismatic plugin blocks with automatic language detection.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Pricing:&lt;/strong&gt; Free (5 posts/month). Pro at $19/month for unlimited posts, AI featured images, and webhook triggers.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Best for:&lt;/strong&gt; Developers and technical writers who want the full pipeline automated — especially if your posts include code.&lt;/p&gt;

&lt;h2&gt;
  
  
  2. Ulysses
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;What it does:&lt;/strong&gt; A polished writing app for Mac and iOS with built-in WordPress publishing. Write in a markdown-like syntax, organize with folders and tags, and publish directly.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Code blocks:&lt;/strong&gt; Basic support. Standard HTML code blocks, not syntax-highlighted.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Image handling:&lt;/strong&gt; Uploads to WordPress media library. No AI generation.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;SEO:&lt;/strong&gt; No built-in SEO metadata support.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Pricing:&lt;/strong&gt; $5.99/month or $49.99/year. Apple platforms only.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Best for:&lt;/strong&gt; Writers who want a beautiful native Mac writing experience.&lt;/p&gt;

&lt;h2&gt;
  
  
  3. iA Writer
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;What it does:&lt;/strong&gt; The gold standard for distraction-free markdown writing with WordPress publishing built in.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Code blocks:&lt;/strong&gt; Standard HTML code blocks. No syntax highlighting integration.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Image handling:&lt;/strong&gt; Uploads inline images. Featured images need to be set manually.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;SEO:&lt;/strong&gt; None. Metadata is handled in WordPress.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Pricing:&lt;/strong&gt; One-time purchase — $49.99 (Mac), $29.99 (iOS/Android/Windows).&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Best for:&lt;/strong&gt; Writers who want a minimal, focused editor and handle SEO in WordPress.&lt;/p&gt;

&lt;h2&gt;
  
  
  4. MarsEdit
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;What it does:&lt;/strong&gt; Desktop blog editor for Mac. Connects to WordPress and lets you write and publish from a native app.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Code blocks:&lt;/strong&gt; Raw HTML.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Image handling:&lt;/strong&gt; Uploads to WordPress media library.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;SEO:&lt;/strong&gt; Supports custom fields for SEO plugin integration.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Pricing:&lt;/strong&gt; $59.95 one-time. Mac only.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Best for:&lt;/strong&gt; Mac users who want a traditional desktop blogging client.&lt;/p&gt;

&lt;h2&gt;
  
  
  5. Jetpack
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;What it does:&lt;/strong&gt; Adds markdown support directly to the WordPress editor.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Code blocks:&lt;/strong&gt; Standard WordPress code blocks.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;SEO:&lt;/strong&gt; Separate Jetpack SEO tools available.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Pricing:&lt;/strong&gt; Free markdown module.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Best for:&lt;/strong&gt; People who want to stay inside WordPress but write in markdown.&lt;/p&gt;

&lt;h2&gt;
  
  
  Quick Comparison
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Feature&lt;/th&gt;
&lt;th&gt;Notipo&lt;/th&gt;
&lt;th&gt;Ulysses&lt;/th&gt;
&lt;th&gt;iA Writer&lt;/th&gt;
&lt;th&gt;MarsEdit&lt;/th&gt;
&lt;th&gt;Jetpack&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Direct WP publish&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;td&gt;Built-in&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Gutenberg blocks&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;td&gt;No&lt;/td&gt;
&lt;td&gt;No&lt;/td&gt;
&lt;td&gt;No&lt;/td&gt;
&lt;td&gt;Partial&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Code highlighting&lt;/td&gt;
&lt;td&gt;Prismatic&lt;/td&gt;
&lt;td&gt;Basic&lt;/td&gt;
&lt;td&gt;None&lt;/td&gt;
&lt;td&gt;None&lt;/td&gt;
&lt;td&gt;None&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;SEO metadata&lt;/td&gt;
&lt;td&gt;Rank Math&lt;/td&gt;
&lt;td&gt;No&lt;/td&gt;
&lt;td&gt;No&lt;/td&gt;
&lt;td&gt;Custom fields&lt;/td&gt;
&lt;td&gt;Separate&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;AI featured images&lt;/td&gt;
&lt;td&gt;Yes (Pro)&lt;/td&gt;
&lt;td&gt;No&lt;/td&gt;
&lt;td&gt;No&lt;/td&gt;
&lt;td&gt;No&lt;/td&gt;
&lt;td&gt;No&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Platform&lt;/td&gt;
&lt;td&gt;Web&lt;/td&gt;
&lt;td&gt;Apple&lt;/td&gt;
&lt;td&gt;All&lt;/td&gt;
&lt;td&gt;Mac&lt;/td&gt;
&lt;td&gt;WordPress&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Free tier&lt;/td&gt;
&lt;td&gt;5 posts/mo&lt;/td&gt;
&lt;td&gt;No&lt;/td&gt;
&lt;td&gt;No&lt;/td&gt;
&lt;td&gt;No&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h2&gt;
  
  
  My Recommendation
&lt;/h2&gt;

&lt;p&gt;If you're a developer or technical writer whose posts include code, &lt;a href="https://app.notipo.com/auth/register" rel="noopener noreferrer"&gt;Notipo&lt;/a&gt; is the obvious choice. Nothing else converts fenced code blocks to syntax-highlighted WordPress blocks automatically. And nothing else handles the full pipeline — images, SEO, featured images, and publishing — in one step.&lt;/p&gt;

&lt;p&gt;If you're a non-technical writer who wants a beautiful native app and doesn't need code highlighting, iA Writer or Ulysses are both excellent. iA Writer wins on pricing (one-time purchase), Ulysses wins on organization features.&lt;/p&gt;

&lt;p&gt;If you want to stay inside WordPress and just need markdown syntax, Jetpack's markdown module is free and works fine.&lt;/p&gt;

&lt;p&gt;The real question is: how much of the publishing pipeline do you want automated? If the answer is "all of it," there's only one option.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;Kjetil Furås builds automations with AI agents and infrastructure as code. Follow along on &lt;a href="https://x.com/kjetilfuras" rel="noopener noreferrer"&gt;X&lt;/a&gt; or join the &lt;a href="https://www.skool.com/build-automate" rel="noopener noreferrer"&gt;Build &amp;amp; Automate community on Skool&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>wordpress</category>
      <category>markdown</category>
      <category>webdev</category>
      <category>productivity</category>
    </item>
    <item>
      <title>Write First, Sync Later: How Notipo Works Without Notion</title>
      <dc:creator>Kjetil Furås</dc:creator>
      <pubDate>Sun, 19 Apr 2026 18:14:07 +0000</pubDate>
      <link>https://dev.to/kfuras/write-first-sync-later-how-notipo-works-without-notion-3hk0</link>
      <guid>https://dev.to/kfuras/write-first-sync-later-how-notipo-works-without-notion-3hk0</guid>
      <description>&lt;p&gt;You don't need Notion to use Notipo. Write in the built-in markdown editor, and Notipo handles images, SEO, code highlighting, and WordPress publishing automatically.&lt;/p&gt;

&lt;p&gt;People keep asking me if they need Notion to use Notipo. The name doesn't help — "Notipo" sounds like it's all about Notion. Fair assumption, but no. You can use Notipo without ever opening Notion.&lt;/p&gt;

&lt;p&gt;Here's how the writing-first flow works, step by step.&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 1: Connect Your WordPress Site
&lt;/h2&gt;

&lt;p&gt;After signing up, you add your WordPress site using an &lt;a href="https://notipo.com/blog/wordpress-application-passwords" rel="noopener noreferrer"&gt;application password&lt;/a&gt;. This takes about two minutes. Notipo verifies the connection and pulls in your existing categories and tags.&lt;/p&gt;

&lt;p&gt;That's the only setup. No Notion OAuth, no database template, no workspace configuration.&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 2: Write in the Markdown Editor
&lt;/h2&gt;

&lt;p&gt;Click "New Post" and you get a clean markdown editor. No distractions, no sidebar, no block palette. Just a title field and a writing area.&lt;/p&gt;

&lt;p&gt;The editor supports standard markdown: headings, bold, italic, links, ordered and unordered lists, blockquotes, inline images, and fenced code blocks. If you've written a GitHub README, you already know the syntax.&lt;/p&gt;

&lt;p&gt;You can also set the category, tags, and SEO metadata (focus keyword, meta title, meta description) right from the editor. These fields are optional — Notipo will generate sensible defaults if you leave them blank.&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 3: Hit Publish
&lt;/h2&gt;

&lt;p&gt;When you're ready, click Publish. Here's what Notipo does behind the scenes:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Markdown to Gutenberg&lt;/strong&gt; — your markdown is converted to proper WordPress Gutenberg blocks, not just raw HTML. This means your posts look native in the WordPress editor if you ever need to edit them there.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Image upload&lt;/strong&gt; — any images in your post are uploaded to your WordPress media library with permanent URLs. No expiring links, no broken images.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Featured image&lt;/strong&gt; — if you have AI featured images enabled (Pro), Notipo generates a branded 1200×628 image based on your title and category.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Code highlighting&lt;/strong&gt; — fenced code blocks are converted to Prismatic plugin blocks with automatic language detection.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;SEO metadata&lt;/strong&gt; — Notipo writes your focus keyword, meta title, and meta description directly to Rank Math via its REST API.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The entire process takes about 10 seconds. You get a link to the live WordPress post when it's done.&lt;/p&gt;

&lt;h2&gt;
  
  
  What About Drafts?
&lt;/h2&gt;

&lt;p&gt;You don't have to publish immediately. Save as draft and the post sits in your Notipo dashboard. You can preview, edit, and publish when you're ready. You can also publish to WordPress as a draft first — it creates the post with "Draft" status so you can preview it on your actual site before going live.&lt;/p&gt;

&lt;h2&gt;
  
  
  The API Route
&lt;/h2&gt;

&lt;p&gt;There's a third way to get content into Notipo: the API. Send a POST request with your markdown content, title, and metadata, and Notipo creates and publishes the post. This is how &lt;a href="https://notipo.com/blog/openclaw-wordpress-publishing" rel="noopener noreferrer"&gt;AI agents publish through Notipo&lt;/a&gt; — one HTTP request handles everything.&lt;/p&gt;

&lt;p&gt;So the full picture is three input methods:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Markdown editor&lt;/strong&gt; — write directly in the browser&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Notion sync&lt;/strong&gt; — connect your workspace and publish by changing a status&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;API&lt;/strong&gt; — send content programmatically&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;All three feed into the same pipeline. Same image handling, same SEO, same code highlighting, same WordPress publishing. The only difference is where the content starts.&lt;/p&gt;

&lt;h2&gt;
  
  
  When to Add Notion Later
&lt;/h2&gt;

&lt;p&gt;The "sync later" part of the title is real. Some users start with the editor, get comfortable with the publishing pipeline, and then connect Notion when they want a more structured editorial workflow — databases, properties, status-based publishing, team collaboration.&lt;/p&gt;

&lt;p&gt;Notion sync is great if you already use Notion for content planning. But it's not a prerequisite. You can publish hundreds of posts through the editor and never touch Notion.&lt;/p&gt;

&lt;h2&gt;
  
  
  Try It Now
&lt;/h2&gt;

&lt;p&gt;The free plan gives you 5 posts per month with the markdown editor, code highlighting, and SEO metadata. &lt;a href="https://app.notipo.com/auth/register" rel="noopener noreferrer"&gt;Sign up here&lt;/a&gt; — you can publish your first post in about five minutes.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;Kjetil Furås builds automations with AI agents and infrastructure as code. Follow along on &lt;a href="https://x.com/kjetilfuras" rel="noopener noreferrer"&gt;X&lt;/a&gt; or join the &lt;a href="https://www.skool.com/build-automate" rel="noopener noreferrer"&gt;Build &amp;amp; Automate community on Skool&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>wordpress</category>
      <category>markdown</category>
      <category>webdev</category>
      <category>writing</category>
    </item>
    <item>
      <title>Why We Built a Markdown Editor for WordPress</title>
      <dc:creator>Kjetil Furås</dc:creator>
      <pubDate>Sun, 19 Apr 2026 18:13:35 +0000</pubDate>
      <link>https://dev.to/kfuras/why-we-built-a-markdown-editor-for-wordpress-5hk8</link>
      <guid>https://dev.to/kfuras/why-we-built-a-markdown-editor-for-wordpress-5hk8</guid>
      <description>&lt;p&gt;60% of Notipo signups never finished onboarding because Notion was required. So I built a markdown editor that publishes to WordPress directly — no Notion needed.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Data That Changed Everything
&lt;/h2&gt;

&lt;p&gt;When I launched Notipo, the pitch was simple: connect your Notion workspace, change a status, and your post publishes to WordPress automatically. Images, SEO metadata, code highlighting — all handled. I thought the Notion integration was the product.&lt;/p&gt;

&lt;p&gt;Turns out, I was wrong.&lt;/p&gt;

&lt;p&gt;A few weeks after launch, I opened PostHog and looked at the funnel. People were signing up — that part was working. But 60% of them never finished onboarding. They'd create an account, see the "Connect your Notion workspace" step, and leave.&lt;/p&gt;

&lt;p&gt;At first I assumed the OAuth flow was confusing. Maybe the Notion permissions screen was scaring people off. So I simplified the copy, added a video walkthrough, made the button bigger. Nothing changed.&lt;/p&gt;

&lt;p&gt;Then I started talking to users who did make it through. The pattern was obvious: the people who loved Notipo were already heavy Notion users. They had databases, templates, editorial calendars. For them, connecting Notion was natural.&lt;/p&gt;

&lt;p&gt;But the people who bounced? They wanted to write and publish to WordPress. That's it. They didn't use Notion. They didn't want to learn Notion. They just wanted a clean writing experience that ended with a published WordPress post.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Wrong Assumption
&lt;/h2&gt;

&lt;p&gt;I'd built Notipo around my own workflow. I write in Notion because I like it — the block editor, the databases, the properties. For me, the Notion-to-WordPress pipeline is the natural way to publish. I assumed everyone else felt the same way.&lt;/p&gt;

&lt;p&gt;That assumption filtered into everything: the landing page led with "Notion to WordPress," the onboarding required a Notion connection before you could do anything, and the blog content was entirely about Notion workflows. If you weren't a Notion user, the whole product felt like it wasn't for you.&lt;/p&gt;

&lt;p&gt;The real value of Notipo was never the Notion integration. It was everything that happens &lt;em&gt;after&lt;/em&gt; you write — the automatic image handling, the SEO metadata, the code syntax highlighting, the one-click WordPress publishing. The Notion connection was just one way to get content in.&lt;/p&gt;

&lt;h2&gt;
  
  
  Building the Editor
&lt;/h2&gt;

&lt;p&gt;So I built a markdown editor directly into Notipo. The goal was straightforward: give people a clean place to write that feeds into the same publishing pipeline — without requiring any external tools.&lt;/p&gt;

&lt;p&gt;You open the editor, write your post in markdown, add a title and category, and hit publish. Notipo converts the markdown to WordPress Gutenberg blocks, uploads any images to your media library, generates a featured image if you have that enabled, sets your Rank Math SEO metadata, and publishes. Same pipeline as the Notion flow, different input.&lt;/p&gt;

&lt;p&gt;The editor supports everything you'd expect: headings, lists, bold/italic, links, inline images, and fenced code blocks with language detection. It's not trying to be VS Code or Notion — it's a focused writing tool that gets out of the way.&lt;/p&gt;

&lt;h2&gt;
  
  
  Notion Didn't Go Away
&lt;/h2&gt;

&lt;p&gt;The Notion integration is still there and it's still great. If you write in Notion, you can still connect your workspace and publish by changing a status. Nothing about that workflow changed.&lt;/p&gt;

&lt;p&gt;What changed is the positioning. Notion is now a power-user add-on, not the core experience. The onboarding no longer requires a Notion connection. You can sign up, connect your WordPress site, and publish your first post in under five minutes — all without ever hearing the word "Notion."&lt;/p&gt;

&lt;h2&gt;
  
  
  What I Learned
&lt;/h2&gt;

&lt;p&gt;The biggest lesson was that your own workflow is a terrible proxy for your users' workflow. I used Notion, so I assumed everyone did. The data said otherwise.&lt;/p&gt;

&lt;p&gt;The second lesson was that the core value of a product isn't always where you think it is. I thought the value was "Notion to WordPress." The actual value was "write once, publish to WordPress with everything handled." The input method — Notion, markdown editor, API — was just a detail.&lt;/p&gt;

&lt;p&gt;If you're building a product and your onboarding has a step that makes 60% of users leave, don't try to optimize that step. Ask whether it should be required at all.&lt;/p&gt;

&lt;h2&gt;
  
  
  Try It
&lt;/h2&gt;

&lt;p&gt;The markdown editor is live now for all users, including the free plan. &lt;a href="https://app.notipo.com/auth/register" rel="noopener noreferrer"&gt;Sign up&lt;/a&gt;, connect your WordPress site, and publish your first post. No Notion required.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;Kjetil Furås builds automations with AI agents and infrastructure as code. Follow along on &lt;a href="https://x.com/kjetilfuras" rel="noopener noreferrer"&gt;X&lt;/a&gt; or join the &lt;a href="https://www.skool.com/build-automate" rel="noopener noreferrer"&gt;Build &amp;amp; Automate community on Skool&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>wordpress</category>
      <category>markdown</category>
      <category>webdev</category>
      <category>productivity</category>
    </item>
    <item>
      <title>How to Publish Notion Pages to the Web (With SEO and Your Own Domain)</title>
      <dc:creator>Kjetil Furås</dc:creator>
      <pubDate>Sat, 18 Apr 2026 08:50:13 +0000</pubDate>
      <link>https://dev.to/kfuras/how-to-publish-notion-pages-to-the-web-with-seo-and-your-own-domain-2n9</link>
      <guid>https://dev.to/kfuras/how-to-publish-notion-pages-to-the-web-with-seo-and-your-own-domain-2n9</guid>
      <description>&lt;p&gt;Notion's "Publish to web" button is the fastest way to share a page publicly. It's also the worst way to publish content you want people to actually find. No custom domain. No meta tags. No sitemap. Images hosted on temporary S3 URLs that expire within an hour. Google can't reliably index it, and readers see a &lt;code&gt;notion.site&lt;/code&gt; URL instead of your brand.&lt;/p&gt;

&lt;p&gt;If you want to publish Notion pages as real web content — with your own domain, SEO metadata, permanent images, and analytics — you need a publishing layer between Notion and the web. WordPress is the most common choice, and &lt;a href="https://notipo.com" rel="noopener noreferrer"&gt;Notipo&lt;/a&gt; connects the two automatically.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why Notion's Built-in Publishing Falls Short
&lt;/h2&gt;

&lt;p&gt;Notion's native publish feature was designed for quick sharing, not for content that needs to rank or convert. Here's what's missing:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;No custom domain&lt;/strong&gt; — every page lives on &lt;code&gt;yourworkspace.notion.site&lt;/code&gt;. You can't point your own domain at it without third-party workarounds.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;No SEO control&lt;/strong&gt; — no meta descriptions, no focus keywords, no canonical URLs. Google sees a generic Notion page with no optimization signals.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Temporary images&lt;/strong&gt; — Notion serves images from AWS S3 with signed URLs that expire after about one hour. Shared links, social previews, and cached pages all break once the URL rotates.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;No analytics&lt;/strong&gt; — no page views, no traffic sources, no conversion tracking. You're publishing blind.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;No sitemap or RSS&lt;/strong&gt; — search engines have no structured way to discover your pages.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;For internal docs or team wikis, none of this matters. For blog posts, landing pages, or any content meant to attract organic traffic, it's a dealbreaker.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Two Approaches to Publishing Notion Pages
&lt;/h2&gt;

&lt;h3&gt;
  
  
  1. Notion as a headless CMS with a custom frontend
&lt;/h3&gt;

&lt;p&gt;Frameworks like Next.js or Astro can pull content from the Notion API and render it as static pages. This gives you full control over design and hosting, but you're building and maintaining a custom site. Every Notion block type needs a renderer. Image expiry needs a caching layer. SEO needs manual wiring. It works, but it's a development project, not a publishing workflow.&lt;/p&gt;

&lt;h3&gt;
  
  
  2. Notion synced to WordPress
&lt;/h3&gt;

&lt;p&gt;WordPress already handles domains, SEO, sitemaps, analytics, and image hosting. The missing piece is getting content from Notion into WordPress without copy-pasting. A sync tool like Notipo bridges this gap — content flows from Notion to WordPress automatically, and WordPress handles everything else.&lt;/p&gt;

&lt;h2&gt;
  
  
  How Notipo Publishes Notion Pages to WordPress
&lt;/h2&gt;

&lt;p&gt;The pipeline is straightforward:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Write in Notion&lt;/strong&gt; — use a database with properties for title, slug, category, tags, SEO keyword, and meta description.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Connect Notion and WordPress&lt;/strong&gt; — Notipo connects to both via OAuth (Notion) and application passwords (WordPress). Setup takes about two minutes.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Publish&lt;/strong&gt; — change the page status or trigger a sync. Notipo converts Notion blocks to Gutenberg blocks, downloads and re-uploads images to your WordPress media library (permanent URLs), writes SEO metadata to your plugin, and optionally generates a featured image.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Update&lt;/strong&gt; — edit the Notion page and re-sync. Notipo updates the existing WordPress post in place — same URL, same post ID, no duplicates.&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  What Gets Synced
&lt;/h2&gt;

&lt;p&gt;Every sync handles the full content stack:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Text and formatting&lt;/strong&gt; — headings, bold, italic, links, lists, blockquotes, callouts, toggles, dividers. Notion blocks map to Gutenberg blocks.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Images&lt;/strong&gt; — every image is downloaded from Notion's temporary URL and uploaded to your WordPress media library. The published post uses permanent WordPress URLs, not expiring S3 links.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Code blocks&lt;/strong&gt; — language detection preserved. Pair with Highlight.js or Prism.js for syntax highlighting.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;SEO metadata&lt;/strong&gt; — focus keyword, SEO title, and meta description written directly to your SEO plugin. Notipo auto-detects Rank Math, Yoast SEO, SEOPress, and All in One SEO.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Featured images&lt;/strong&gt; — generated automatically from the post title, or use a cover image from Notion.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Categories and tags&lt;/strong&gt; — mapped from Notion properties to WordPress taxonomies.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Setting Up Your Notion Database
&lt;/h2&gt;

&lt;p&gt;Your Notion database needs a few standard properties:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Title&lt;/strong&gt; — the page title (built-in Notion property)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Slug&lt;/strong&gt; — text property for the URL path&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Category&lt;/strong&gt; — select property matching your WordPress categories&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Tags&lt;/strong&gt; — multi-select property for WordPress tags&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;SEO Keyword&lt;/strong&gt; — text property for the focus keyword&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Meta Description&lt;/strong&gt; — text property for the meta description&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Status&lt;/strong&gt; — select property (Draft, Review, Publish)&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Publishing via the API or CLI
&lt;/h2&gt;

&lt;p&gt;Beyond the web dashboard, Notipo exposes a REST API and CLI for programmatic publishing. A single API call handles the entire pipeline:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;curl &lt;span class="nt"&gt;-X&lt;/span&gt; POST https://notipo.com/api/posts &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-H&lt;/span&gt; &lt;span class="s2"&gt;"X-API-Key: your-api-key"&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-H&lt;/span&gt; &lt;span class="s2"&gt;"Content-Type: application/json"&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-d&lt;/span&gt; &lt;span class="s1"&gt;'{
    "title": "My Notion Page",
    "body": "# Content in markdown",
    "category": "Blog",
    "seoKeyword": "publish notion pages",
    "slug": "my-notion-page"
  }'&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The API creates a Notion page, syncs it to WordPress, uploads images, writes SEO metadata, and generates a featured image — all in one request.&lt;/p&gt;

&lt;h2&gt;
  
  
  Notion Publishing vs. Other Approaches
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Notion native publish&lt;/strong&gt; — instant, no setup. But no SEO, no custom domain, broken images after an hour. Only useful for quick internal sharing.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Super.so / Potion.so&lt;/strong&gt; — wraps Notion pages with a custom domain and some styling. Still depends on Notion's rendering, limited SEO control, and you're locked into their proxy layer.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Custom Next.js / Astro site&lt;/strong&gt; — maximum flexibility, but you're maintaining a codebase. Every new Notion block type needs a custom renderer.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Notipo + WordPress&lt;/strong&gt; — Notion stays your writing tool, WordPress handles publishing. Full SEO control, permanent images, 4 SEO plugins supported, featured image generation. No code to maintain.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Limitations to Know
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;One-way sync&lt;/strong&gt; — content flows from Notion to WordPress only. Edits in wp-admin don't sync back to Notion. Notion is the source of truth.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;WordPress required&lt;/strong&gt; — Notipo publishes to self-hosted WordPress sites. It doesn't work with WordPress.com free plans or non-WordPress platforms.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Block coverage&lt;/strong&gt; — most Notion block types are supported. Databases-as-content and some advanced layouts may not map perfectly to Gutenberg blocks.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  FAQ
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Can I publish Notion pages to the web?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Notion has a built-in "Publish to web" option, but it uses a notion.site subdomain with no SEO control, no custom domain, and temporary image URLs. To publish properly — with your own domain and permanent images — sync to WordPress using Notipo.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Do Notion published pages show up on Google?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Notion's native published pages are not reliably indexed. They lack meta descriptions, canonical URLs, sitemaps, and structured data. Publishing to WordPress through Notipo gives you full SEO control.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Is there a free way to publish Notion pages to WordPress?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Notipo's free tier lets you publish up to 5 pages per month — including image caching, SEO metadata, and featured image generation. No credit card required. Pro is $19/month with a 7-day free trial.&lt;/p&gt;




&lt;p&gt;&lt;a href="https://notipo.com/auth/register" rel="noopener noreferrer"&gt;Create a free Notipo account&lt;/a&gt; and start publishing Notion pages to WordPress in about two minutes.&lt;/p&gt;

</description>
      <category>notion</category>
      <category>wordpress</category>
      <category>seo</category>
      <category>blogging</category>
    </item>
    <item>
      <title>Notion CMS: Can You Use Notion as a Content Management System?</title>
      <dc:creator>Kjetil Furås</dc:creator>
      <pubDate>Sat, 18 Apr 2026 08:45:32 +0000</pubDate>
      <link>https://dev.to/kfuras/notion-cms-can-you-use-notion-as-a-content-management-system-3c9l</link>
      <guid>https://dev.to/kfuras/notion-cms-can-you-use-notion-as-a-content-management-system-3c9l</guid>
      <description>&lt;p&gt;Notion has everything you'd expect from a content management system. Databases with custom properties. Rich text editing. Status columns for editorial workflows. Drag-and-drop media. Templates. Collaboration. It looks like a CMS, and many teams already use it as one.&lt;/p&gt;

&lt;p&gt;But Notion was built for internal docs and project management — not for publishing content to the web. The moment you need a custom domain, SEO control, permanent image URLs, or analytics, Notion stops being enough. The question isn't whether Notion can be a CMS. It's whether Notion can be &lt;em&gt;your&lt;/em&gt; CMS — and what you need to add to make it work.&lt;/p&gt;

&lt;h2&gt;
  
  
  What Makes Notion Work as a CMS
&lt;/h2&gt;

&lt;p&gt;Notion's database features map surprisingly well to CMS requirements:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Databases as content types&lt;/strong&gt; — each database is a content collection. Blog posts, landing pages, documentation — one database per type, with custom properties for metadata.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Properties as fields&lt;/strong&gt; — title, slug, category, tags, author, publish date, SEO keyword, meta description. Every field a traditional CMS offers, you can create as a Notion property.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Status workflows&lt;/strong&gt; — Draft, In Review, Published. Notion's status property gives you a basic editorial pipeline.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Rich content editing&lt;/strong&gt; — headings, images, code blocks, callouts, tables, toggles, embeds. Notion's block editor handles most content types.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Real-time collaboration&lt;/strong&gt; — multiple writers and editors working on the same page simultaneously, with comments and mentions.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Templates&lt;/strong&gt; — create a blog post template with pre-filled properties and placeholder content. Every new post starts from a consistent structure.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;For content creation and editorial management, Notion is genuinely excellent. Most dedicated CMS platforms have worse editing experiences.&lt;/p&gt;

&lt;h2&gt;
  
  
  Where Notion Falls Short as a CMS
&lt;/h2&gt;

&lt;p&gt;The gap appears when you try to publish. A CMS needs to serve content to readers, and Notion wasn't designed for that:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;No custom domains&lt;/strong&gt; — Notion's "Share to Web" publishes to &lt;code&gt;notion.site&lt;/code&gt; subdomains. You can't serve content from your own domain without a third-party wrapper.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;No SEO control&lt;/strong&gt; — no meta descriptions, no focus keywords, no Open Graph tags, no structured data. Google sees your content but can't rank it properly.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Temporary image URLs&lt;/strong&gt; — Notion stores images on Amazon S3 with signed URLs that expire after about one hour. Any system that embeds Notion image URLs directly will show broken images within hours.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;No sitemap&lt;/strong&gt; — search engines rely on sitemaps to discover content. Notion doesn't generate one.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;No analytics&lt;/strong&gt; — no Google Analytics, no Search Console, no conversion tracking. You can't measure what's working.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;No page speed optimization&lt;/strong&gt; — Notion pages are JavaScript-heavy SPAs. Core Web Vitals scores are poor compared to server-rendered HTML.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;No plugins or extensions&lt;/strong&gt; — WordPress has 60,000+ plugins for forms, e-commerce, membership, caching. Notion has none of this.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;These aren't minor gaps. They're the difference between a content editor and a publishing platform.&lt;/p&gt;

&lt;h2&gt;
  
  
  How to Use Notion as a Headless CMS for WordPress
&lt;/h2&gt;

&lt;p&gt;The term "headless CMS" means separating where you create content from where you display it. Notion becomes the backend (the "body"), and WordPress becomes the frontend (the "head"). A sync tool connects the two.&lt;/p&gt;

&lt;p&gt;Here's how the Notion CMS pipeline works with &lt;a href="https://notipo.com" rel="noopener noreferrer"&gt;Notipo&lt;/a&gt;:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Set up your Notion database&lt;/strong&gt; — create a database with properties for Title, Slug, Category, Tags, SEO Keyword, Meta Description, and Status.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Connect Notion to Notipo&lt;/strong&gt; — authorize your Notion workspace via OAuth.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Connect WordPress&lt;/strong&gt; — add your WordPress site URL and an application password.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Write in Notion&lt;/strong&gt; — headings, images, code blocks, callouts, and tables all sync to WordPress as Gutenberg blocks.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Publish&lt;/strong&gt; — change the Status property to Publish. Notipo syncs everything including images to the WordPress media library, SEO metadata to your plugin, and generates a featured image.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The sync is one-way: Notion to WordPress. Notion is always the source of truth.&lt;/p&gt;

&lt;h2&gt;
  
  
  SEO With a Notion CMS
&lt;/h2&gt;

&lt;p&gt;Notipo auto-detects and writes metadata to four SEO plugins:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Rank Math&lt;/strong&gt; — focus keyword, SEO title, meta description&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Yoast SEO&lt;/strong&gt; — focus keyword, SEO title, meta description&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;SEOPress&lt;/strong&gt; — target keyword, title, description&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;All in One SEO&lt;/strong&gt; — focus keyword, title, description&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;No configuration needed. Install any of these plugins on your WordPress site, add SEO Keyword and Meta Description properties to your Notion database, and Notipo handles the rest.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Image Problem (and the Fix)
&lt;/h2&gt;

&lt;p&gt;Every Notion CMS setup has to solve the image problem. Notion stores images on Amazon S3 with temporary signed URLs that expire after approximately one hour.&lt;/p&gt;

&lt;p&gt;Notipo solves this by downloading each image during sync and uploading it to your WordPress media library. The WordPress URL is permanent. On subsequent syncs, it checks which images are already cached and only uploads new or changed ones.&lt;/p&gt;

&lt;h2&gt;
  
  
  Pricing
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Notion&lt;/strong&gt; — free plan covers unlimited pages and databases&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;WordPress hosting&lt;/strong&gt; — starts around $3/month&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Notipo Free&lt;/strong&gt; — 5 posts per month, full image caching, SEO metadata sync&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Notipo Pro&lt;/strong&gt; — $19/month for unlimited posts, AI-generated featured images, and priority sync. 7-day free trial, no credit card required.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  FAQ
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Can Notion be used as a CMS?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Notion works well as a content management backend — databases, properties, status workflows, and rich editing. But it lacks publishing features like custom domains, SEO metadata, sitemaps, and permanent image URLs. To use Notion as a full CMS, pair it with WordPress and a sync tool like Notipo.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Is Notion better than WordPress as a CMS?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Notion is a better writing and content organization tool. WordPress is a better publishing platform. The ideal setup uses both: Notion for drafting, WordPress for SEO and serving content. Notipo connects the two automatically.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Does Notion have an API for CMS use?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Yes. The Notion API lets you read pages and database entries programmatically. Sync tools like Notipo use the API to pull content and publish it to WordPress — including images, formatting, and metadata.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What are the limitations of using Notion as a CMS?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Notion images use temporary S3 URLs that expire after about one hour. There's no built-in SEO control, no custom domains for published pages, no sitemap generation, and no analytics.&lt;/p&gt;

</description>
      <category>notion</category>
      <category>wordpress</category>
      <category>cms</category>
      <category>blogging</category>
    </item>
    <item>
      <title>Notion WordPress Integration: Connect Notion to WordPress in 2026</title>
      <dc:creator>Kjetil Furås</dc:creator>
      <pubDate>Sat, 18 Apr 2026 08:28:56 +0000</pubDate>
      <link>https://dev.to/kfuras/notion-wordpress-integration-connect-notion-to-wordpress-in-2026-3i64</link>
      <guid>https://dev.to/kfuras/notion-wordpress-integration-connect-notion-to-wordpress-in-2026-3i64</guid>
      <description>&lt;p&gt;Notion is where you write. WordPress is where you publish. The problem: there's no official Notion WordPress integration. Connecting them requires a third-party tool, and the tool you pick determines whether images break, SEO metadata transfers, and formatting survives the move.&lt;/p&gt;

&lt;p&gt;This guide covers every way to integrate Notion with WordPress — what each approach handles, what it doesn't, and how to set up a sync that actually works.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why Notion and WordPress Need an Integration
&lt;/h2&gt;

&lt;p&gt;Notion is a better writing environment than the WordPress editor. Drag-and-drop blocks, inline databases, slash commands, nested pages — writers are faster in Notion. But Notion has no SEO, no custom domain, no analytics, and Google rarely indexes Notion pages.&lt;/p&gt;

&lt;p&gt;WordPress handles all of that. What it lacks is a good writing experience. The ideal setup: write in Notion, publish to WordPress, and never copy-paste between them.&lt;/p&gt;

&lt;p&gt;A Notion WordPress integration bridges this gap. It reads your Notion content, converts it to WordPress-compatible format (Gutenberg blocks), handles images, maps SEO metadata, and publishes.&lt;/p&gt;

&lt;h2&gt;
  
  
  What a Good Integration Must Handle
&lt;/h2&gt;

&lt;p&gt;Not all Notion-to-WordPress integrations are equal. The critical features:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Image handling&lt;/strong&gt; — Notion stores images on S3 with temporary URLs that expire in about an hour. The integration must download images and upload them to your WordPress media library.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;SEO metadata&lt;/strong&gt; — focus keyword, meta description, and SEO title should transfer to your SEO plugin (Rank Math, Yoast, SEOPress, or All in One SEO)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Featured images&lt;/strong&gt; — either mapped from a Notion property or auto-generated&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Code blocks&lt;/strong&gt; — language metadata must survive so syntax highlighting works&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Gutenberg blocks&lt;/strong&gt; — content should convert to proper WordPress blocks, not raw HTML&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Categories and tags&lt;/strong&gt; — mapped from Notion database properties&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Re-sync&lt;/strong&gt; — updating a post in Notion should update the same WordPress post, not create a duplicate&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Option 1: Notipo (API-Based Sync)
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://notipo.com" rel="noopener noreferrer"&gt;Notipo&lt;/a&gt; is a dedicated Notion-to-WordPress sync service. It connects to both platforms via their APIs and handles the full content pipeline.&lt;/p&gt;

&lt;h3&gt;
  
  
  How It Works
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;Connect your Notion workspace via OAuth&lt;/li&gt;
&lt;li&gt;Connect WordPress with your site URL and an application password&lt;/li&gt;
&lt;li&gt;Duplicate the Notipo template database into your workspace&lt;/li&gt;
&lt;li&gt;Write a post in Notion, fill in properties (category, tags, SEO keyword, meta description)&lt;/li&gt;
&lt;li&gt;Set the status to "Publish" — Notipo syncs automatically&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;
  
  
  What Notipo Handles
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Images downloaded and uploaded to WordPress media library (permanent URLs)&lt;/li&gt;
&lt;li&gt;SEO metadata written to Rank Math, Yoast, SEOPress, or All in One SEO&lt;/li&gt;
&lt;li&gt;Featured images auto-generated (standard or AI-powered on Pro)&lt;/li&gt;
&lt;li&gt;Code blocks with language metadata preserved&lt;/li&gt;
&lt;li&gt;Gutenberg block conversion for headings, lists, quotes, callouts, toggles&lt;/li&gt;
&lt;li&gt;Categories and tags mapped from Notion database properties&lt;/li&gt;
&lt;li&gt;Re-syncs update the existing WordPress post — no duplicates&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  API and CLI Access
&lt;/h3&gt;

&lt;p&gt;Notipo Pro includes a REST API and CLI for programmatic publishing:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Publish a post via the Notipo CLI&lt;/span&gt;
npx notipo publish &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--title&lt;/span&gt; &lt;span class="s2"&gt;"My Blog Post"&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--body&lt;/span&gt; &lt;span class="s2"&gt;"Markdown content here..."&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--category&lt;/span&gt; &lt;span class="s2"&gt;"Guides"&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--seo-keyword&lt;/span&gt; &lt;span class="s2"&gt;"target keyword"&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--slug&lt;/span&gt; &lt;span class="s2"&gt;"my-blog-post"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Pricing
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Free&lt;/strong&gt; — 5 posts/month, full image handling, SEO metadata, code highlighting, standard featured images&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Pro ($19/month)&lt;/strong&gt; — unlimited posts, AI featured images, instant sync, REST API and CLI access. 7-day free trial, no credit card required.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Option 2: WP Sync for Notion (WordPress Plugin)
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://wordpress.org/plugins/wp-sync-for-notion/" rel="noopener noreferrer"&gt;WP Sync for Notion&lt;/a&gt; is a WordPress plugin that pulls content from Notion. You install it on your WordPress site, connect your Notion API key, and link individual pages or databases.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Free&lt;/strong&gt; — sync individual Notion pages, basic content conversion, image downloading, manual sync trigger&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Pro (~$9/month)&lt;/strong&gt; — full database sync, scheduled/webhook sync, SEO plugin integration, property mapping&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Option 3: Zapier or Make (Automation Platforms)
&lt;/h2&gt;

&lt;p&gt;Zapier and Make can create a basic Notion WordPress integration. The trigger watches a Notion database, and the action creates a WordPress post via the REST API.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What breaks:&lt;/strong&gt; Images (Notion S3 URLs expire within an hour), formatting (raw block data needs Gutenberg conversion), SEO metadata (not handled natively), featured images (not handled), re-syncs (need extra logic).&lt;/p&gt;

&lt;h2&gt;
  
  
  Option 4: Custom Integration via Notion API
&lt;/h2&gt;

&lt;p&gt;Build a custom integration using the &lt;a href="https://developers.notion.com/" rel="noopener noreferrer"&gt;Notion API&lt;/a&gt; and the &lt;a href="https://developer.wordpress.org/rest-api/" rel="noopener noreferrer"&gt;WordPress REST API&lt;/a&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="c1"&gt;// Pseudocode: custom Notion → WordPress sync&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;notionPage&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nx"&gt;notion&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;pages&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;retrieve&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt; &lt;span class="nx"&gt;page_id&lt;/span&gt; &lt;span class="p"&gt;});&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;blocks&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nx"&gt;notion&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;blocks&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;children&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;list&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt; &lt;span class="na"&gt;block_id&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;page_id&lt;/span&gt; &lt;span class="p"&gt;});&lt;/span&gt;

&lt;span class="c1"&gt;// Convert Notion blocks to Gutenberg HTML&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;gutenbergHtml&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;convertBlocks&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;blocks&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;results&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

&lt;span class="c1"&gt;// Download images from Notion S3 URLs before they expire&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;processedHtml&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nf"&gt;downloadAndReplaceImages&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;gutenbergHtml&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;wpClient&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

&lt;span class="c1"&gt;// Create or update WordPress post&lt;/span&gt;
&lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nx"&gt;wp&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;posts&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;create&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt;
  &lt;span class="na"&gt;title&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;notionPage&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;properties&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;Title&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;title&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;].&lt;/span&gt;&lt;span class="nx"&gt;plain_text&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="na"&gt;content&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;processedHtml&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="na"&gt;status&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;publish&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="p"&gt;});&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Building this from scratch means handling every edge case yourself: nested blocks, image expiry, Gutenberg block syntax, SEO plugin meta keys, featured image generation, and update-vs-create logic.&lt;/p&gt;

&lt;h2&gt;
  
  
  Important: All Integrations Are One-Way
&lt;/h2&gt;

&lt;p&gt;Every Notion WordPress integration available today syncs in one direction: Notion to WordPress. You write and edit in Notion, and changes flow to WordPress. Notion is the single source of truth.&lt;/p&gt;

&lt;h2&gt;
  
  
  FAQ
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Does Notion have a built-in WordPress integration?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;No. You need a third-party tool — Notipo, WP Sync for Notion, or an automation platform.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What is the best Notion to WordPress integration?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Notipo is the most complete option — images, SEO for 4 plugins, featured images, code highlighting, and Gutenberg blocks. WP Sync is simpler but needs Pro for SEO and database sync.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Can I sync Notion to WordPress automatically?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Yes. Notipo watches a Notion database and syncs on status change. WP Sync Pro supports scheduled sync.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;Originally published at &lt;a href="https://notipo.com/blog/notion-wordpress-integration" rel="noopener noreferrer"&gt;notipo.com/blog/notion-wordpress-integration&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

</description>
      <category>notion</category>
      <category>wordpress</category>
      <category>automation</category>
      <category>blogging</category>
    </item>
  </channel>
</rss>
