Free · MIT-0 licensed

publishing-skills

Three composable Claude skills for end-to-end SEO blog publishing on any platform. Validate the topic has real demand, draft and publish through a pluggable adapter (Ghost, WordPress, static-site, or BYO), 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.

seo-blog-writer

End-to-end pipeline for a post: classify, research, draft to clean HTML, scrub LLM tells, run the AI-SEO audit, build the FAQPage + BreadcrumbList + HowTo JSON-LD, optionally auto-link technical terms to a glossary on your site, then ship through a platform adapter. The pre-publish gate asserts H2-question shape, figure count (max(1, words // 500)), bullet discipline, and currency on cited years. Ghost Admin API, WordPress REST, and static-site file output ship in the box; adding Webflow, Sanity, or any other CMS is a ~20-line snippet - the writing pipeline never changes.

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 specific 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. seo-blog-writer - drafts in clean HTML, scrubs the prose for LLM tells, runs the AI-SEO audit, builds the FAQPage + BreadcrumbList + HowTo JSON-LD schema blocks, and hands the bundle to the platform adapter.
  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. Platform adapter - the bundle ships through a pluggable publish step: --target ghost POSTs via the Ghost Admin API (JSON-LD into codeinjection_head), --target wordpress POSTs via WP REST, --target static writes <slug>.draft.html + .metadata.json into your SSG repo. BYO adapters in ~20 lines.

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.

Platform-pluggable publish step

The writing pipeline (research, classify, draft, scrub, AI-SEO audit, JSON-LD) is platform-agnostic and produces a stable bundle: <slug>.draft.html, <slug>.schema.html, <slug>.metadata.json. The publish step is a separate adapter - swap Ghost for WordPress, or move to a static site, without rewriting the pipeline.

CMS gotchas, encoded per adapter

The Ghost adapter handles Lexical's silent stripping of <script> from body HTML (JSON-LD goes into codeinjection_head), the varchar(191) cap on feature_image_alt, and tag-object shape. The WordPress adapter handles category/tag ID resolution and _embed media. The static adapter writes deterministic file names so your SSG picks them up cleanly.

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; the writer adds the three that matter for LLM citation regardless of platform.

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, hostname. The skills work against any blog on any of the supported platforms - 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 skills.sh

npx skills add AutomateLab-tech/publishing-skills

Installs all three skills into Claude Code, Cursor, Codex, Gemini CLI, GitHub Copilot, and 50+ other runtimes at once. Restart your agent host so the skills reload.

Or via clawhub

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

Each command pulls the latest version of the skill into your project's .claude/skills/ directory.

Or via git clone

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

All three paths produce the same files. skills.sh is the broadest reach across runtimes; 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. seo-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 platforms does seo-blog-writer publish to?
The writing pipeline is platform-agnostic and produces a stable bundle (<slug>.draft.html, <slug>.schema.html, <slug>.metadata.json). The publish step is pluggable - the repo ships three adapters out of the box: --target ghost (Ghost Admin API, with the ?source=html convention and JSON-LD into codeinjection_head), --target wordpress (WP REST), and --target static (file output for Hugo, Astro, Eleventy, Jekyll, Next-MDX). Adding Webflow, Sanity, Strapi, or Contentful is a ~20-line POST snippet.
Which agent runtimes does this work in?
Anything that supports the SKILL.md + YAML frontmatter convention: Claude Code, Claude Desktop, Cursor, Codex, Gemini CLI, GitHub Copilot, 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. The npx skills add installer covers 50+ runtimes in one command.
What credentials are required?
Depends on the publish target. For the Ghost adapter: a Ghost Admin API key (Settings -> Integrations) and your Ghost URL, set as GHOST_URL and GHOST_ADMIN_KEY. For the WordPress adapter: WP_URL, WP_USER, and WP_APP_PASSWORD (Application Passwords, not your login). For the static adapter: nothing - just a target directory. 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, or a custom platform adapter - use the contact form.

Want the pipeline wired into your editorial workflow?

We use these skills daily to ship 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