Free · MIT-0 licensed

publishing-skills

Three composable Claude skills for end-to-end long-tail SEO blog publishing on Ghost CMS. Validate the topic has real demand, draft and publish through the Admin API, and illustrate the post - each step a small skill the agent can compose, swap, or run alone.

The three skills

blog-topic-research

Before you draft, validate. The skill runs WebSearch and WebFetch against the topic, looks for real demand signals (Reddit threads, GitHub issues, Stack Overflow questions, PAA boxes), and refuses topics that are just "the docs but reworded." Output: a research-proof scaffold the writer skill can consume.

ghost-blog-writer

End-to-end pipeline for a Ghost post: research, draft to HTML, scrub LLM tells, run the AI-SEO audit, build the FAQPage + BreadcrumbList + HowTo JSON-LD, and POST to the Admin API. Handles Ghost-specific traps - Lexical strips script tags, feature_image_alt is silently capped at 191 chars - so the post lands the way you wrote it.

blog-figure-svg

Generates accessible SVG figures - flow diagrams, comparison bar charts, taxonomy diagrams, annotated terminal mocks, OG feature cards - with a consistent system-font palette, title and desc accessibility metadata, and PNG rasterization for CMS delivery. One figure per ~500 body words is the rule of thumb.

How they chain

  1. blog-topic-research - picks a long-tail query, confirms real demand signals (Reddit threads, GitHub issues, PAA boxes), and bails on topics that would just paraphrase vendor docs. Output: a research scaffold the writer can consume directly.
  2. ghost-blog-writer - drafts in HTML, scrubs the prose for LLM tells, runs the AI-SEO audit, builds the FAQPage + BreadcrumbList + HowTo JSON-LD schema blocks, and POSTs to the Ghost Admin API.
  3. blog-figure-svg - invoked during the illustration pass. Generates accessible SVGs with a consistent system-font palette; one figure per roughly 500 body words.
  4. Ghost CMS - the post lands as draft or live. JSON-LD renders into the head via codeinjection_head. RSS, sitemap, OG image - all wired automatically by Ghost.

Each skill is independent. Run the writer alone if you bring your own topic. Run the research alone to vet an editorial backlog. Run the figure generator for any blog or doc that needs charts.

What makes it different

Most AI writing tools are a single prompt you paste and hope for the best. publishing-skills is three composable skill files you wire together the way your workflow needs.

Single-file skills, no build step

Each skill is one SKILL.md with YAML frontmatter - the convention every Claude-compatible runtime now understands. Drop it into .claude/skills/ and reload. No npm dependencies for the skill itself.

Ghost-specific gotchas, encoded

Lexical strips <script> from body HTML - JSON-LD must go in codeinjection_head. feature_image_alt is silently capped at 191 chars. Tags are objects, not strings. The skill's pre-publish validator catches all of these before you POST.

AI-citation schema, built in

Every post ships with FAQPage, BreadcrumbList, and (for procedural how-tos) HowTo JSON-LD. These are the schema types AI Overviews and citation engines pull from. Ghost emits Article + Person + Organization by default; this stack adds the three that matter for LLM citation.

Generalized, not branded

Extracted from automatelab.tech's internal pipeline, but the site-specific bits are parameterized: tag taxonomies, cluster palettes, backlog state, author slug. The skills work against any Ghost blog - your tag list, your author, your palette.

Scrub before publish

Em-dashes, smart quotes, ellipsis characters, "delve into", "leverage" as a verb - the writer scrubs the unmistakable LLM tells before the post ever reaches the Admin API. Posts read like a human wrote them.

MIT-0, no attribution required

Public-domain-equivalent license. Use it on client work, in commercial products, fork it, rename it. No backlink required. The skills are tooling, not marketing.

See it in action

The full pipeline - topic pick, research, HTML draft, JSON-LD schema, feature image, Ghost Admin API POST - is documented on the blog: Three Claude skills for end-to-end Ghost blog publishing. It covers the Ghost-specific gotchas in detail and shows the actual payload structure.

Install via clawhub

npm i -g clawhub clawhub login clawhub skill install blog-topic-research clawhub skill install ghost-blog-writer clawhub skill install blog-figure-svg

Each command pulls the latest version of the skill into your project's .claude/skills/ directory. Restart your agent host (Claude Code, Cursor, Cline) so the skills reload.

Or via git clone

git clone https://github.com/ratamaha-git/publishing-skills.git
cp -r publishing-skills/skills/* .claude/skills/

Both paths produce the same files. clawhub gives you versioned installs and update notifications; git-clone gives you full control over what version you're running.

FAQ

What does it cost?
The skills are MIT-0 licensed and free. You pay only for your agent's model usage (Claude, GPT, etc.) and your Ghost hosting.
Do I need all three skills?
No. They work independently. ghost-blog-writer alone can draft and publish if you bring your own topic. blog-topic-research alone is useful for vetting any editorial backlog. blog-figure-svg alone is a general SVG figure generator for any blog or doc. They're most powerful chained - the writer can consume the research scaffold and invoke the figure generator during illustration.
Which CMS does ghost-blog-writer support?
Ghost CMS only. It uses the Ghost Admin API with the ?source=html convention and handles Ghost-specific traps like Lexical's silent stripping of <script> tags from body HTML and the varchar(191) cap on feature_image_alt. For WordPress, Hugo, or other CMSes you'd need a different writer skill.
Which agent runtimes does this work in?
Anything that supports the SKILL.md + YAML frontmatter convention: Claude Code, Claude Desktop, Cursor, Cline, and most agent harnesses that have adopted skills. The skills don't depend on MCP - they're pure prompt scaffolds plus Python helpers, so they work even in runtimes without MCP support.
What credentials are required?
For ghost-blog-writer: a Ghost Admin API key (from Settings -> Integrations) and your Ghost URL, set as GHOST_URL and GHOST_ADMIN_KEY env vars. Nothing else. The research skill uses your agent's built-in WebSearch/WebFetch. The figure skill needs Python plus one SVG rasterizer (ImageMagick / rsvg-convert / Inkscape / cairosvg).
Where do I report bugs or request features?
Open an issue on the GitHub repo. For paid setup tailored to your stack - your tag taxonomy, your style guide, your editorial workflow - use the contact form.

Want the pipeline wired into your editorial workflow?

We use these skills daily to ship long-tail SEO posts on automatelab.tech. If you want them tuned to your tag taxonomy, your style guide, your editorial backlog - or a full editorial pipeline set up from scratch - we can do that.

Get in touch