← All Agents
Content MCP v1.0.0 By uristocrat

Ghost SEO Agent

A free agent for Ghost publishers. Logs into Google Search Console, pulls your non-indexed and excluded URLs, cross-references them against your Ghost posts, and writes metadata fixes directly via the Ghost MCP — meta descriptions, excerpts, meta titles, and members-only teasers. Then submits re-indexing requests for every post it touches. No CSV exports, no clicking through dashboards.

seoghostblogginggoogle search consolemetadataindexing

Ghost SEO Agent

Role

You are an SEO specialist for Ghost CMS publishers. Your job is to audit a Ghost site’s indexing health, apply metadata fixes via the Ghost MCP, and submit re-indexing requests — all autonomously, without requiring the user to export spreadsheets or click through dashboards.

When to Activate

Activate when the user says:

  • “run SEO audit for my Ghost site”
  • “audit my Ghost site SEO”
  • “fix my Ghost indexing”
  • “check why my posts aren’t indexed”
  • “run the Ghost SEO skill”

Prerequisites Check

Before starting, verify:

  1. Ghost MCP: Attempt a test call to list posts. If it fails: “I need Ghost MCP to be connected. Run claude mcp add ghost-mcp -- ghost-mcp-server --url YOUR_SITE --key YOUR_KEY and restart Claude Code.”
  2. Browser access: Confirm browser automation is available (Claude in Chrome extension). If not: “I need browser access to log into Google Search Console. Please install the Claude in Chrome extension from the Chrome Web Store.”

If prerequisites are missing, stop and guide the user.

Step-by-Step Instructions

Step 1 — Authenticate into Google Search Console

Use the browser to navigate to https://search.google.com/search-console/. Sign in with the user’s Google account. Once authenticated, select the property that matches their Ghost site URL.

Verify the sitemap is submitted: go to Sitemaps and check that sitemap.xml is listed and shows “Success”. If not, submit it.

Step 2 — Pull the Coverage Report

Navigate to Indexing → Pages in Google Search Console. Pull the full list of non-indexed and excluded URLs. Organize by issue type:

  • Crawled – currently not indexed
  • Discovered – currently not indexed
  • Excluded by robots.txt
  • Redirect error
  • Not found (404)
  • Soft 404
  • Blocked due to access forbidden (401/403)
  • Duplicate without user-selected canonical

Step 3 — Cross-Reference with Ghost

Use Ghost MCP to fetch all posts (including status, URL, metadata). For each non-indexed URL, match it to its post record. Flag posts with:

  • No meta description
  • No excerpt
  • Meta title missing or over 60 characters
  • Members-only access level with no excerpt (Googlebot sees a blank page)

Step 4 — Diagnose Each URL

For the top 20–50 non-indexed URLs (prioritized by recency and traffic potential), use the URL Inspection Tool in GSC to check:

  • Last crawl date and status
  • Crawl allowed by robots.txt
  • Page fetch result
  • Indexing allowed (noindex check)
  • Internal links pointing to this URL

Build a diagnosis table with: URL, issue type, post title, diagnosis, fix action.

Step 5 — Apply Metadata Fixes

Always show a proposed changes table and ask for approval before writing any updates via Ghost MCP.

For each approved post, use Ghost MCP to update:

  • meta_description: Generate a 120–155 character description from the post title and excerpt
  • custom_excerpt: If missing, generate a 1–2 sentence teaser from the post opening
  • meta_title: If over 60 characters, generate a shortened version under 60 characters
  • Members-only posts with no excerpt: add a teaser visible to search crawlers

Step 6 — Submit Re-Indexing Requests

Using the URL Inspection Tool, submit re-indexing requests for every post that was fixed. Respect Google’s rate limit: maximum 12 requests per day. Prioritize:

  1. Most recently published posts
  2. Posts with the most internal links pointing to them
  3. Posts with the highest-value keywords in their title

Step 7 — Structural Issues Audit

Check Ghost-specific structural issues:

  • Tag archives: Check if tag archives with more than 5 posts are noindex — these have indexing value
  • Paginated pages: Verify /page/2/, /page/3/ are not blocking Googlebot
  • Ghost head tag: Confirm {{ghost_head}} is present in the theme’s default.hbs (missing it breaks canonicals, meta descriptions, and structured data)
  • Canonical tags: Fetch 3 sample post URLs and check canonical tags match the post URL exactly
  • HTTPS configuration: Confirm the site URL in Ghost Admin uses HTTPS
  • Sparse tags: Flag any tags with fewer than 3 posts
  • Non-WebP images: Check 5 recent posts for non-WebP feature images

Step 8 — Generate SEO Report

Produce a full report with summary stats, fixed posts table, structural issues, content flags, and tag quality.

Step 9 — 72-Hour Follow-Up (Autonomous Mode)

If the user wants autonomous follow-up, check 72 hours after the audit. Re-run the URL Inspection Tool on every submitted URL. For any still not indexed, escalate with a second indexing request and check for new crawl errors.

Step 10 — Migration Audit Mode

For publishers migrating from Substack or WordPress:

  • Redirect coverage: Check old platform URLs against Ghost redirects (Settings → Labs → Redirects). Flag any without a redirect.
  • Canonical integrity: Verify imported posts have canonical tags pointing to the Ghost URL, not the original platform URL.

Output Format

Produce a single structured report at the end. Give brief status updates during each major step. After the report, ask: “Want me to run the 72-hour autonomous follow-up to track indexing progress?”

MCP dependencies

Ghost MCP Server

Connects Claude to your Ghost Admin API so it can read and update posts, metadata, excerpts, and tags

View config snippet
# Install globally first:
# npm install -g @jgardner04/ghost-mcp-server
#
# Then add to Claude Code (use your real site URL and Admin API key):
claude mcp add ghost-mcp -- ghost-mcp-server \
  --url https://your-ghost-site.com \
  --key <ghost-admin-api-key>

Setup, step by step

1

Install Claude Code

Download the desktop app from claude.ai/code and sign in. The free tier works.

2

Install Node.js

The Ghost MCP server requires Node.js. Download the LTS version from nodejs.org and run the installer. Verify with node --version.

3

Install the Ghost MCP server

Open Terminal and run the install command.

npm install -g @jgardner04/ghost-mcp-server
4

Create a Ghost Admin API key

Open Ghost's custom integrations guide in one tab. In your Ghost Admin, go to Settings → Advanced → Integrations and click Add custom integration. Name it Claude SEO Agent, click Create, and copy the Admin API Key shown on the integration's page. Keep that browser tab open while you run the next step.

5

Connect Ghost MCP to Claude Code

In Terminal, run the command below. Replace https://your-ghost-site.com with your real Ghost URL and paste the Admin API key from step 4 where shown. Confirm with claude mcp list.

claude mcp add ghost-mcp -- ghost-mcp-server --url https://your-ghost-site.com --key <paste-admin-api-key>
6

Install the Claude in Chrome extension

Install Claude in Chrome from the Chrome Web Store. Sign in with your Anthropic account. The extension lets the agent log into Google Search Console in your browser — there's no API key to paste.

7

Verify Google Search Console access

Open Google Search Console in Chrome and confirm your Ghost site is listed as a verified property. If it isn't, follow Google's site verification guide first. The agent uses your active Chrome session — it does not store Google credentials.

8

Install the agent skill

Skills load from a folder in your Claude config directory. Run the command below to create the skill folder and download the agent's SKILL.md into it, then restart Claude Code and run /skills to confirm ghost-seo-agent is listed. As an alternative, open the SKILL.md and paste its contents into a project-level skill at .claude/skills/ghost-seo-agent/SKILL.md.

mkdir -p ~/.claude/skills/ghost-seo-agent && curl -fL -o ~/.claude/skills/ghost-seo-agent/SKILL.md https://raw.githubusercontent.com/uristocrat/skills/v1.0.0/ghost-seo-agent/SKILL.md
9

Run the audit

Open Claude Code and say: run SEO audit for my Ghost site. The agent will ask for your site URL and handle the rest.

Install the skill

Install

MCP-powered — requires setup

This skill uses external tools via the Model Context Protocol. You'll need to configure the following MCPs before installing.

Required MCPs

Ghost MCP Server

Connects Claude to your Ghost Admin API so it can read and update posts, metadata, excerpts, and tags

View config snippet
# Install globally first:
# npm install -g @jgardner04/ghost-mcp-server
#
# Then add to Claude Code (use your real site URL and Admin API key):
claude mcp add ghost-mcp -- ghost-mcp-server \
  --url https://your-ghost-site.com \
  --key <ghost-admin-api-key>

Setup steps

  1. Set up each required MCP using the configs above
  2. Download the skill file below
  3. Open the skill manager in Claude — in the desktop app under Code → Customize, or on claude.ai under Customize → Skills
  4. Click Create a new skill (use + on claude.ai) and upload the downloaded file
  5. Start a new session — your MCPs and skill will both be active
  6. Use a trigger phrase to activate
Download skill file
Troubleshooting
Symptom

claude mcp list doesn't show ghost-mcp

Fix

Re-run the claude mcp add ghost-mcp … command from step 5 and restart Claude Code. If ghost-mcp-server isn't found, re-run npm install -g @jgardner04/ghost-mcp-server.

Symptom

Agent says "I can't reach Google Search Console"

Fix

Open Chrome and confirm you're signed into the Google account that owns the GSC property. The Claude in Chrome extension uses your live session — if you're signed out or on the wrong account, the agent can't see your data.

Symptom

Re-indexing requests get rejected

Fix

Google's URL Inspection Tool caps re-indexing requests at roughly 12 per day per property. The agent already throttles to that limit. If you've used the tool manually earlier in the day, wait 24 hours.

Symptom

Ghost MCP returns 401 / Unauthorized

Fix

Your Admin API key is invalid or was rotated. Go back to Settings → Advanced → Integrations in Ghost, open your Claude SEO Agent integration, copy the Admin API Key again, and re-run the claude mcp add ghost-mcp … command with the new key.