Creating & Publishing Posts
The posts commands let you list, create, and delete posts from the command line without touching the Notion UI.
notipo posts
Lists all posts in your Notipo account with their current status, WordPress post ID, live URL (once published), Notion page ID, and last updated timestamp.
notipo posts[
{
"id": "clx7p2k3m0000abc1def2ghi3",
"title": "Why Every Developer Should Have a Blog",
"status": "PUBLISHED",
"wpPostId": 1003934,
"wpUrl": "https://yourblog.com/why-every-developer-should-have-a-blog/",
"notionPageId": "321842af-972f-813a-85a3-e6ad450b4869",
"updatedAt": "2025-06-12T10:41:22.000Z"
}
]notipo posts create
Creates a Notion page and immediately triggers the full Notipo sync/publish pipeline — without opening the Notion UI. Notipo fetches the page, converts it to Gutenberg blocks, uploads images, generates a featured image, sets SEO metadata, and creates a WordPress draft (or publishes live if --publish is set).
This is the primary command for AI agents and automated publishing pipelines — the entire Notion-to-WordPress pipeline runs in a single CLI invocation.
Flags
| Flag |
|---|
--title <title> |
--body <text> |
--category <name> |
--tags <a,b,c> |
--seo-keyword <keyword> |
--image-title <title> |
--slug <slug> |
--publish |
--wait |
Minimal example — create a draft
The only required flag is --title. Notipo creates a Notion page, syncs it, and returns a job ID to track progress.
notipo posts create --title "Why Every Developer Should Have a Blog"{
"jobId": "ce372d00-7d67-4613-bd1d-adc711c35846",
"notionPageId": "321842af-972f-813a-85a3-e6ad450b4869",
"message": "Post created. Run `notipo jobs` to monitor progress."
}Full example — all flags
Pass --body with Markdown content. Use #, ##, ### for headings and  for images — Notipo converts them to Gutenberg blocks.
notipo posts create
--title "Why Every Developer Should Have a Blog"
--body "## Introduction
Writing forces clarity.
## Benefits
You learn more by writing than by reading."
--category "Developer Tips"
--tags "writing,productivity,career"
--seo-keyword "developer blog"
--image-title "Developer writing at a desk with code on screen"
--slug "developer-blog-guide"Publish immediately and wait for the live URL
Add --publish to go live instead of creating a draft. Add --wait to block until the full pipeline completes — the response includes the live wpUrl. The most useful combination for AI agents that need to return a published URL.
notipo posts create
--title "Why Every Developer Should Have a Blog"
--category "Developer Tips"
--seo-keyword "developer blog"
--publish --wait{
"status": "COMPLETED",
"type": "PUBLISH_POST",
"result": {
"wpPostId": 1003934,
"wpUrl": "https://yourblog.com/developer-blog-guide/",
"steps": ["Fetching from Notion…", "Converting to Gutenberg…", "Uploading images…", "Generating featured image…", "Setting SEO metadata…", "Publishing to WordPress…"]
}
}Two-Phase Job Flow
When --publish is used, Notipo runs two sequential background jobs. The --wait flag waits for both before returning.
Without --publish, only SYNC_POST runs and the post stays as a WordPress draft. You can publish it later by changing the Notion status to Publish.
notipo posts delete <id>
Deletes a post by its Notipo ID. Cleans up the WordPress post and all associated media uploaded by Notipo, and resets the Notion page status so it can be re-synced if needed. The id is the Notipo post ID from notipo posts — not the WordPress post ID.
notipo posts delete clx7p2k3m0000abc1def2ghi3{
"ok": true,
"deleted": "clx7p2k3m0000abc1def2ghi3"
}