SEO/GEO content engine. Seed, cluster, roadmap, brief, write, and publish — turning keywords into live articles. Delivers a compounding pipeline of organic traffic and AI-citation-friendly content, month over month.
Documents
PostKing · Blog
Try itPublish blogs that build authority and traffic. Generate, refine, and ship articles PostKing-hosted or pushed to WordPress, Medium, or Substack. Delivers a steady stream of SEO-ready articles without the writer's block.
What it does
Create blog publications and generate, iterate on, and publish articles on PostKing — hosted, or pushed to WordPress, Medium, or Substack.
The skill document
PostKing Blog
Handles the blog lifecycle on PostKing: publications (the containers articles live under), AI article generation, review/editing, and publishing — either to the PostKing-hosted blog or out to connected external platforms. Requires an active brand — use the postking skill's brand-pick flow first if one isn't set.
When to Use
Use this skill when the user wants to create or manage a blog publication; generate, review, edit, or rewrite a blog article; publish an article (hosted or external); check on an in-progress generation; or manage blog authors/categories.
When NOT to Use
- Social posts, content weeks, or repurposing to social →
postking-social. - Landing pages or side pages →
postking-landing-pages. - The SEO/GEO keyword-to-roadmap pipeline (seeds → keywords → clusters → briefs) that eventually produces briefs for articles →
postking-seo. This skill covers direct/manual blog generation and publishing, not that pipeline's brief-to-article automation. - Saved voice profile management or a standalone de-slop pass →
postking-brand-voice. - No active brand yet →
postking-getting-started.
Minimal tool subset
list_publications,create_publication,update_publication,list_blogs— publications.generate_blog_post,get_blog_status,get_job— async generation + polling.get_blog_article,update_blog_article,rewrite_text— review and iterate.publish_blog_article,list_publishing_connections,schedule_blog_article— publishing.list_blog_authors,create_blog_author,list_blog_categories,create_blog_category— metadata.import_blog_articles,delete_blog_article— housekeeping.
Procedure
Set up a publication
list_publications({ brandId? })(orlist_blogs, which also returns astatusBreakdownof existing articles) — find an existing publication.create_publication({ title, description?, layout?, brandId? })if none exists — returns apublicationId.
Generate a blog article
generate_blog_post({ publicationId, topic, voiceProfileId?, targetLength?, primaryKeywords?, secondaryKeywords?, brandId? })— note the param names:primaryKeywords/secondaryKeywords, notkeywords;targetLength(short/medium/long), notlength. Async; returnsarticleId+operationId.- Poll
get_blog_status({ articleId }), orget_job({ pollUrl: operationId, brandId, wait: true }), until status iscompleted(orfailed). get_blog_article({ articleId })— review the draft (full content, SEO fields,previewUrl,editUrl).
Review and iterate
update_blog_article({ articleId, title?, content?, excerpt?, status?, metaTitle?, metaDescription?, authorId?, categoryId? })for direct edits — only the fields you pass are changed.rewrite_text({ text, voice?, platform: "blog" })to polish a specific passage, then paste the result back in viaupdate_blog_article.- Re-run
generate_blog_postwith a refinedtopic/primaryKeywordsfor a fresh pass instead of patching piecemeal changes.
Publish
- PostKing-hosted:
update_blog_article({ articleId, status: "published" })makes it live on the brand's PostKing blog immediately. - Scheduled hosted publish:
schedule_blog_article({ articleId, scheduledAt })— future ISO 8601 datetime; auto-publishes (and auto-pushes to anyautoPublish-flagged external connections) when the time arrives. - External (WordPress / Medium / Substack, connected via the dashboard):
list_publishing_connections({ publicationId })to find connection IDs, thenpublish_blog_article({ articleId, connectionIds: [...] }). get_blog_status({ articleId })— confirm the final status and get the live URL(s).
CLI fast path
| Goal | Command |
|---|---|
| List publications / articles | pking blogs list [--status draft|published] / pking publications list |
| Create a publication | pking publications create --title "..." [--description "..."] |
| Generate a blog | pking blogs generate --publication --topic "..." [--keywords "kw1,kw2"] [--voice ] [--length short|medium|long] --wait |
| Check generation status | pking blogs status |
| View an article | pking blogs view |
| Publish (hosted, or external via connections) | pking blogs publish [--connections ] |
| Delete | pking blogs delete |
For the full command catalog, use the postking skill's references/commands.md, or run pking blogs --help / pking publications --help.
Pitfalls
generate_blog_postparam names:primaryKeywords/secondaryKeywordsandtargetLength, notkeywords/length. Passing the wrong names silently drops them (extra zod fields are ignored, not errored).- Hosted publish vs. external publish are different tools.
publish_blog_articlerequires a non-emptyconnectionIdsarray — it's for pushing to external platforms, not for making the PostKing-hosted copy live. Useupdate_blog_article({ status: "published" })for that. - No
pking blogs auto-assign-ctaCLI command exists. If the user wants a CTA auto-assigned to a piece of content, that capability is the MCP toolseo_auto_assign_cta(owned by thepostking-seoskill's surface) — don't invent a CLI equivalent. - Generation is async and can take a couple of minutes. Poll
get_blog_statusorget_jobrather than assuming failure early;get_jobsupportswait: trueto block instead of polling manually. update_blog_articleis a partial update. Omitted fields are left unchanged — no need to resend the whole article to change one field.
Verification
get_credits({ detail: "short" })— confirms auth and balance.list_publications({})— returns at least one publication once set up (or an empty list if none created yet, which is expected pre-setup).
Related skills
SEO/GEO content engine. Seed, cluster, roadmap, brief, write, and publish — turning keywords into live articles. Delivers a compounding pipeline of organic traffic and AI-citation-friendly content, month over month.
Write technical blog posts as a professional tech blogger, following a strict structure, conversational style, and Markdown formatting. Output is rendered into a standalone HTML file. Use when the user asks to write, draft, or produce a technical blog post, tutorial, tech article, or dev-focused exp
Guided 7-phase pipeline that turns a technical idea into a developer-targeted article, with checkpoints at each phase.
Publish to Medium without an API token. Medium closed its API to new integrations in Jan 2025, so this skill uses the one stable path left: it writes your post as Medium-ready HTML, deploys it to your own GitHub Pages, and uses Medium's URL importer to create a draft. Say 'blog about X' and it scaffolds your blog repo on first run, then drafts each post end to end. It always stops at a draft for your review and never auto-publishes. Needs GitHub, Medium, and the gh CLI.
Never run out of things to post. Generate, approve, and schedule across LinkedIn, X, Instagram, Threads, and Facebook, plus a recurring weekly cadence (Smart Week). Delivers a full, on-brand posting calendar without the daily grind.