Files
magnus919_agent-skills/ghost
Magnus Hedemarkandfactory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com> 08689dfd8f fix(media-home): repair scrutiny round-1 doc-vs-reality findings
jellyfin: send the access token over exactly ONE channel per request (drop
the simultaneous X-Emby-Token header; the MediaBrowser Token= parameter is
the sole transport, legacy fallback remains documented as substitute-never-
stack and is request-capture tested); remove the dead no-op conditional in
JellyfinClient.__init__; make the login error-path test exception-safe with
patch.object; document the test-pinned dry-run plan keys and the actual
0/1/2 exit-code mapping in worked-recipes and SKILL.md.

peertube: replace the stale dry-run shape prose ('url'/'form') with the
test-pinned {dry_run, method, path, params} / form_fields keys; harden
cmd_me against a non-dict role (no AttributeError) with regression tests;
remove the dead client facade, the unused cmd_channels variable, and the
unused List/Tuple imports (ruff F401/F841 clean).

ghost: fold the 5 nested with-statements (ruff SIM117) in test_ghost.py
into single with-statements.

All three skills double-runner + proxy-trap green (25/56/37 tests);
validate-evals, paired smoke, quality validator, core gates, and catalog
check modes green.

Co-authored-by: factory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com>
2026-08-29 20:32:06 -04:00
..
2026-08-26 21:24:20 -04:00

Ghost CMS content management from the terminal

Let your agent browse, draft, publish, and schedule content on a Ghost blog or newsletter site through the Admin API — no web editor required.

Why Install This Skill

Editing a Ghost site usually means clicking through the admin UI. This skill hands your agent direct, scripted control instead:

  • See the whole editorial state — published posts, plus the drafts and scheduled queue that public site feeds never show.
  • Publish programmatically — create posts and pages as drafts, then flip them live after review, with safe collision-checked updates.
  • Schedule content — stage posts to appear at future times.
  • Keep tags tidy — list tags with usage counts, add new ones, drive exports.

It speaks Ghost's exact authentication dialect automatically: your Admin API key (id:secret) becomes a fresh short-lived signed JWT for every command, so there are no tokens to mint, rotate, or paste anywhere.

Not to be confused with Ghost's official npm ghost-cli tool, which installs and operates Ghost servers (ghost install, nginx/SSL setup, upgrades). This skill manages content on an already-running site; that one manages servers.

What You Get

Path Purpose
SKILL.md Command reference: setup, browse/create/publish recipes, gotchas
scripts/ghost CLI tool covering site info, post/page/tag operations, JSON + dry-run modes
scripts/test_ghost.py Offline test suite for the CLI (all network mocked)
references/admin-auth-and-basics.md Full JWT signing walkthrough with auth error signatures
references/content-vs-admin-api.md Content vs Admin API choice guide and draft-visibility trap
references/posts-pages-tags-endpoints.md Endpoint map, pagination loop patterns, error envelope
references/worked-recipes.md Copy-paste workflows: draft→publish, exports, scheduling
references/gotchas-field-guide.md Symptom-first troubleshooting for common failures

Quick Start

export GHOST_URL="https://your-ghost-site.com"
export GHOST_ADMIN_KEY="<RECORD_KEY>"    # Ghost Admin → Integrations → Custom integration

ghost site                # connectivity check
ghost posts --status draft
ghost create-post --title "Hello from the terminal" --html "<p>First!</p>"

Preview any write safely by adding --dry-run before the subcommand.

Triggers

Load this skill when working with Ghost CMS content: listing posts/pages/tags, drafting or publishing blog content, scheduling posts, exporting site content, fixing Ghost API authentication errors, or investigating why drafts don't show up in a Ghost site feed.

Requirements

  • Python 3.8+ with the requests library.
  • A running Ghost 5.x/6.x site where you can create a Custom Integration (Ghost Admin → Settings → Integrations).
  • The integration's Admin API Key exported as GHOST_ADMIN_KEY, plus the site URL as GHOST_URL. Keep the key server-side; it signs mutations and must never ship in client code or CI logs.