Documents

PostKing · Blog

Try it

Publish 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

  1. list_publications({ brandId? }) (or list_blogs, which also returns a statusBreakdown of existing articles) — find an existing publication.
  2. create_publication({ title, description?, layout?, brandId? }) if none exists — returns a publicationId.

Generate a blog article

  1. generate_blog_post({ publicationId, topic, voiceProfileId?, targetLength?, primaryKeywords?, secondaryKeywords?, brandId? }) — note the param names: primaryKeywords/secondaryKeywords, not keywords; targetLength (short/medium/long), not length. Async; returns articleId + operationId.
  2. Poll get_blog_status({ articleId }), or get_job({ pollUrl: operationId, brandId, wait: true }), until status is completed (or failed).
  3. 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 via update_blog_article.
  • Re-run generate_blog_post with a refined topic/primaryKeywords for 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 any autoPublish-flagged external connections) when the time arrives.
  • External (WordPress / Medium / Substack, connected via the dashboard): list_publishing_connections({ publicationId }) to find connection IDs, then publish_blog_article({ articleId, connectionIds: [...] }).
  • get_blog_status({ articleId }) — confirm the final status and get the live URL(s).

CLI fast path

GoalCommand
List publications / articlespking blogs list [--status draft|published] / pking publications list
Create a publicationpking publications create --title "..." [--description "..."]
Generate a blogpking blogs generate --publication --topic "..." [--keywords "kw1,kw2"] [--voice ] [--length short|medium|long] --wait
Check generation statuspking blogs status
View an articlepking blogs view
Publish (hosted, or external via connections)pking blogs publish [--connections ]
Deletepking 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_post param names: primaryKeywords/secondaryKeywords and targetLength, not keywords/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_article requires a non-empty connectionIds array — it's for pushing to external platforms, not for making the PostKing-hosted copy live. Use update_blog_article({ status: "published" }) for that.
  • No pking blogs auto-assign-cta CLI command exists. If the user wants a CTA auto-assigned to a piece of content, that capability is the MCP tool seo_auto_assign_cta (owned by the postking-seo skill's surface) — don't invent a CLI equivalent.
  • Generation is async and can take a couple of minutes. Poll get_blog_status or get_job rather than assuming failure early; get_job supports wait: true to block instead of polling manually.
  • update_blog_article is 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.

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

1 installs1 stars

Guided 7-phase pipeline that turns a technical idea into a developer-targeted article, with checkpoints at each phase.

26 installs

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.

1 installs1 stars

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.