Agent skill

SEO Content Optimization

by magnus919 in magnus919/hermes-profiles

Audit and optimize content sites for search — page title audits, schema injection (Organization, FAQ, LocalBusiness), meta description rewrites, URL hygiene, local landing pages, and measurement.

MITAuto-check passedMarketing & SEO

Install SEO Content Optimization

skills CLI
$ npx skills add magnus919/hermes-profiles --skill seo-content-optimization -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install magnus919/hermes-profiles seo-content-optimization --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/magnus919/hermes-profiles.git skills-src && mkdir -p .claude/skills && cp -r skills-src/skills/seo-content-optimization .claude/skills/seo-content-optimization && rm -rf skills-src

Use ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.

Claude Code skills documentation · loads skills from .claude/skills/

Facts

Skill name
seo-content-optimization
GitHub stars
282
Token cost
~3.1k tokens
SKILL.md length
1,286 words
Files
2 (incl. references)
Skills in repo
31
Repo updated
First seen
Licence
MIT

At a glance

Audit and optimize content sites for search — page title audits, schema injection (Organization, FAQ, LocalBusiness), meta description rewrites, URL hygiene, local landing pages, and measurement.

  • Works in 7 steps: Audit page titles and meta descriptions → Audit structured data → Inject missing schema → …
  • Tasks that involve On-page SEO
  • SKILL.md covers Signals to Run This, Process, Site-Specific Notes and LLM-Friendly Content (/llms.txt), plus 1 more section
  • Calls curl; reaches schema.org and en.wikipedia.org

What it does

SEO Content Optimization is an agent skill from magnus919/hermes-profiles. Audit and optimize content sites for search — page title audits, schema injection (Organization, FAQ, LocalBusiness), meta description rewrites, URL hygiene, local landing pages, and measurement. Complements /content-strategy (what to write next) by optimizing what already exists.

Its SKILL.md is about 3.1k tokens, which your agent loads only when the skill is triggered. The skill folder holds 2 other files, including reference files (for example `references/llmstxt-standard.md`).

It sits in Marketing & SEO, covering On-page SEO, Landing pages and Content strategy. The repository describes itself as: Curated Hermes Agent profiles for specialist swarms — opinionated, Hermes-optimized, artifact-pyramid native. The licence is MIT.

When your agent uses it

  • Tasks that involve On-page SEO
  • Tasks that involve Landing pages
  • Tasks that involve Content strategy

Example prompts

  • “/seo-content-optimization”

Requirements

  • Python 3

Workflow steps

7 steps, taken from the step headings in SKILL.md.

  1. Audit page titles and meta descriptions
  2. Audit structured data
  3. Inject missing schema
  4. Rewrite page titles (meta_title, not H1)
  5. Audit and optimize URL slugs
  6. Create local landing pages (if applicable)
  7. Measure

What it can do on your machine

Read from SKILL.md and the folder at commit 867a555. It shows what the files ask for, not the result of running them.

  • Tool permissions

    Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    Shell commands in SKILL.md call:

    • curl

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    Hosts in commands or code, which the agent is likely to contact:

    • schema.org
    • en.wikipedia.org
    • discord.gg

    Also links to:

    • search.google.com

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names no API keys, tokens, secrets or passwords.

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

SEO Content Optimization loads about 3.1k tokens when it runs, and up to ~4.4k if it reads all its reference files. Until then it costs about 77 tokens; SKILL.md has 1,286 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~77
When it runs · the whole SKILL.md, loaded when a task matches
~3.1k
With references · SKILL.md plus every file in references/, read only if the agent opens them
~4.4k

Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.

Safety

Auto-check passed

The automated check found no risky patterns in SKILL.md.

Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.

SKILL.md

The full file from magnus919/hermes-profiles at commit 867a555, republished under its MIT licence (© magnus919). 1,286 words, ~3,121 tokens.

Download SKILL.mdSave it as .claude/skills/seo-content-optimization/SKILL.md (or your agent's skills folder). This skill also uses 1 other file; get the full folder from GitHub.
name
seo-content-optimization
description
Audit and optimize content sites for search — page title audits, schema injection (Organization, FAQ, LocalBusiness), meta description rewrites, URL hygiene, local landing pages, and measurement. Complements /content-strategy (what to write next) by optimizing what already exists.
title
SEO Content Optimization
domain
devops

SEO Content Optimization

Audit-and-fix workflow for improving search rankings on Magnus's content sites. This is the "optimize what exists" counterpart to /content-strategy's "what to write next."

Sites in scope: magnus919.com (Hugo), rdumesh.org (Ghost), groktop.us (Ghost Pro), southeastme.sh (Ghost)

Signals to Run This

  • User says "we're not ranking for X" or "SEO is bad"
  • User asks to audit a site's search presence
  • User mentions poor Google visibility for local terms
  • As part of site launch / relaunch

Process

1. Audit page titles and meta descriptions

Fetch the site's sitemap to get all published URLs (see content-strategy skill for sitemap-fetching protocol — try bare domain, www subdomain, Ghost split-sitemaps).

For each published page:

  • Check the <title> tag via curl
    bash
    curl -s https://example.com/page/ | grep -i '<title'
  • Check meta description
    bash
    curl -s https://example.com/page/ | grep -i 'name="description"'
  • Evaluate against:
    • Does the title include the primary keyword near the front?
    • Does it include location terms (for local sites)?
    • Is it under 60 characters (Google display limit)?
    • Is the meta description under 160 chars, compelling, and keyword-rich?
2. Audit structured data

Check for existing schema:

javascript
// in browser console
document.querySelectorAll('script[type="application/ld+json"]')

For each JSON-LD block, verify:

  • Is there an Organization or LocalBusiness schema?
  • Does it include areaServed with specific cities?
  • Is there FAQPage schema on FAQ content?
  • Is there BreadcrumbList?
  • Is Article schema correctly populated?
3. Inject missing schema

Organization schema — site-wide (Ghost Code Injection → ghost_head). The critical fields for local SEO:

html
<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "Organization",
  "name": "Site Name",
  "description": "Description with city and keyword signals.",
  "url": "https://example.com",
  "areaServed": [
    {"@type": "City", "name": "City1", "sameAs": "https://en.wikipedia.org/wiki/City1,_NC"},
    {"@type": "City", "name": "City2"}
  ],
  "sameAs": [
    "https://discord.gg/..."
  ]
}
</script>

FAQ schema — page-level. Enables rich FAQ results in search. For Ghost sites, use the ghost-cli schema inject command instead of post-level code injection — it's cleaner and doesn't require editing the post HTML:

bash
ghost-cli --site rdumesh schema validate --json '{"@context":"...","@type":"FAQPage",...}'
ghost-cli --site rdumesh schema inject my-post --file /tmp/faq-schema.json

FAQPage JSON-LD structure:

json
{
  "@context": "https://schema.org",
  "@type": "FAQPage",
  "mainEntity": [
    {
      "@type": "Question",
      "name": "Question text?",
      "acceptedAnswer": {
        "@type": "Answer",
        "text": "Answer text."
      }
    }
  ]
}

TechArticle schema — for hardware/software/technical blog posts. More specific than Article (which Ghost outputs by default), gives Google better content classification. Include proficiencyLevel and about for deeper signals:

json
{
  "@type": "TechArticle",
  "headline": "Post Title",
  "proficiencyLevel": "Beginner|Intermediate|Advanced",
  "about": {
    "@type": "Thing",
    "name": "Topic name"
  }
}

Hybrid @graph pattern — when a post benefits from multiple schema types (FAQPage + HowTo + TechArticle), wrap them in a @graph array in a single injection:

json
{
  "@context": "https://schema.org",
  "@graph": [
    {"@type": "TechArticle", "headline": "..."},
    {"@type": "FAQPage", "mainEntity": [...]},
    {"@type": "HowTo", "name": "...", "step": [...]}
  ]
}

This is cleaner than multiple separate JSON-LD blocks and ensures all types are processed together by Google.

When to use each type:

TypeArticle Content SignalSERP Impact
TechArticleTechnical hardware/software contentBetter classification, no visual rich result
FAQPage3+ natural Q&A pairs (headings + paragraph answers)Expandable FAQ rich result (high CTR)
HowToStep-by-step procedures, CLI commands, build instructionsStep preview rich result

Fallback for non-Ghost sites: For Hugo sites (magnus919.com), schema is baked into static HTML at build time via Hugo partials — see the magnus919.com section below for implementation approaches. For Ghost sites, always prefer schema inject via ghost-cli over manual code injection.

4. Rewrite page titles (meta_title, not H1)

In Ghost CMS, page titles and H1s are independent. Set meta_title via the Admin API or Ghost post settings — it controls the <title> tag and what shows in search results. The visible H1 on the page stays unchanged.

Pattern: Primary keyword near front | pipe-separated site name suffix. For local sites, include city names. For Ghost sites, use the ghost-cli to set these:

bash
ghost-cli --site rdumesh meta set <slug> \
  --meta-title "Primary Keyword Context | Site Name" \
  --meta-description "150-160 char summary with keyword and call to action."
TypeFormatExample
Local landingKeyword + city + site"Free Mesh Network for Raleigh, Durham & Chapel Hill, NC
Technical guideKeyword + site"915 MHz Pine Tree Attenuation: What LoRa Mesh Operators Need to Know
Hardware guideProduct + keyword + site"Heltec V4.3 Solar Repeater: Power Consumption & EasySkyMesh Firmware
FAQKeyword + cities + site"Mesh Radio Network FAQ: RDUMesh for Raleigh, Durham, Chapel Hill"
AnnouncementTopic + site"Chapel Hill Mesh Network Expansion — RDUMesh Backhaul Case Study"

Set via ghost-cli meta set for Ghost sites (see ghost-cli skill) or via Hugo template variables for magnus919.com.

5. Audit and optimize URL slugs

In Ghost CMS, slugs can be changed independently of titles and the ghost-cli doesn't have a dedicated slug command — use the Admin API directly (see ghost-cli skill's "Slug Optimization" section for the pattern). Issues to flag:

  • -2 suffixes (signal duplicate content) — fix slug, ensure 301 redirect from old URL
  • Excessively long slugs (>55 chars) — shorten by removing filler words (why, what, the, a, of, and, how, for)
  • Ghost auto-generates slugs from the initial post title, so if the title changes later, the slug doesn't update
  • Target 30-45 characters, leading with the primary keyword
  • OK to change before publish. Changing after publish requires a 301 redirect.
6. Create local landing pages (if applicable)

For sites serving specific geographic areas, create dedicated short pages (500-800 words) per city/region. These don't need to be deep essays — they exist to tell Google "this site serves this place."

Ghost CMS: always create as Pages, not Posts. Pages don't trigger email notifications to subscribers. Posts do.

Each should include:

  • City name in H1 and first paragraph
  • 2-3 paragraphs of substantive local content (not keyword stuffing)
  • Link to the relevant coverage map or router page
  • CTA to join/participate
  • Internal links to 2-3 other relevant posts

Ghost Admin API pitfall — Ghost v6 uses Lexical format, not raw HTML. When creating pages via the API, sending "html" in the payload does NOT store the content. You must provide "lexical" as a JSON string in Ghost's Lexical editor format. The html field is read-only — derived from Lexical on the backend.

Minimal Lexical page structure for a short page with paragraphs and headings:

python
lexical = json.dumps({
    "root": {
        "children": [
            {
                "children": [{"detail": 0, "format": 0, "mode": "normal", "style": "", "text": "Paragraph text.", "type": "text", "version": 1}],
                "direction": "ltr", "format": "", "indent": 0, "type": "paragraph", "version": 1
            },
            {
                "children": [{"detail": 0, "format": 0, "mode": "normal", "style": "", "text": "Section Heading", "type": "text", "version": 1}],
                "direction": "ltr", "format": "", "indent": 0, "type": "heading", "tag": "h2", "version": 1
            }
        ],
        "direction": "ltr", "format": "", "indent": 0, "type": "root", "version": 1
    }
})

For ordered lists, use "type": "list", "listType": "number" with "type": "listitem" children.

Show full SKILL.md (439 more words)Show less
7. Measure
  • Immediate: curl | grep <title> to confirm titles deployed
  • Schema validation: Google Rich Results Test (https://search.google.com/test/rich-results)
  • Crawl: Google Search Console after 1-2 weeks
  • Ranking: Manual spot-checks for targeted queries (incognito browser)

Site-Specific Notes

rdumesh.org
  • Self-hosted Ghost on Ubuntu. Admin API at same domain as public.
  • Biggest gap: city-specific landing pages and schema with areaServed.
  • FAQ schema on the FAQ page is a high-impact copy-paste.
groktop.us
  • Ghost Pro behind custom domain. Admin API at admin domain groktopus-hybrid-workforce.ghost.io.
  • Enterprise AI audience — local SEO doesn't apply.
  • Focus on meta title optimization and Article schema completeness.
magnus919.com
  • Hugo static site (Terminal theme v4). Currently emits zero JSON-LD. The Terminal theme's head.html partial does not include any schema markup.

  • Hugo has no built-in runtime schema injection (unlike Ghost's ghost_head), but several zero-cost approaches exist:

    ApproachEffortOutput
    Hugo internal template ({{ template "_internal/schema.html" . }})Add one line to head.htmlBasic WebSite (home) + Article (pages) with Organization, dates, author
    Custom partial (layouts/partials/schema.html)Write a Handlebars partial with per-page-kind conditionalsFull control over @type, fields, and which pages get which schema
    PaperMod-style partial (see _vendor for reference)Adapt existing schema_json.html from vendored PaperMod themeOrganization + BreadcrumbList + BlogPosting with articleBody, wordCount, keywords

    Unlike Ghost's injection-based approach, Hugo schema is baked into static HTML at build time — no runtime overhead, but changes require a rebuild.

  • Site already has good organic content depth; focus on page title optimization and internal linking.

southeastme.sh
  • Nascent site — SEO work is premature. Focus on content strategy first.

LLM-Friendly Content (/llms.txt)

An emerging complement to traditional SEO: making your site consumable by LLM agents during inference. While SEO targets Google's crawler, llms.txt targets the agents that visit your site looking for context.

The standard: A markdown file at /llms.txt providing a curated, concise overview — H1 title, blockquote summary, and H2 sections with link lists. The ## Optional section can be skipped for tighter context.

How it differs from SEO:

  • SEO optimizes for ranking in search results (traffic goal)
  • llms.txt optimizes for LLM comprehension (utility goal)
  • Both require clear, concise content architecture
  • llms.txt is far simpler — one markdown file vs. structured data + meta + backlinks

Quick check when evaluating a site:

  • /llms.txt exists? Read it first.
  • No /llms.txt? Check /sitemap.xml for full page list.
  • Neither? The site forces LLMs to parse HTML — opportunity to create one.

See references/llmstxt-standard.md for the full standard reference — format spec, best practices, implementation approaches for Hugo/Ghost/Next.js, the llms_txt2ctx CLI tool, and content negotiation via Accept: text/markdown.

See Also

  • references/llmstxt-standard.md — full /llms.txt standard reference
  • ghost-webhooks skill reference admin-api-content-editing.md — Admin API auth and update patterns
  • content-strategy skill — what to write next (complements this skill)
  • hugo-blog skill — Hugo-specific llms.txt implementation details (custom output formats, content negotiation)

© magnus919, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

SKILL.md and 1 other file (references) in skills/seo-content-optimization of magnus919/hermes-profiles.

  • SKILL.md
  • references/llmstxt-standard.md

Open the folder on GitHubat commit 867a555

Compare with similar skills

SEO Content Optimization next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.

SEO Content Optimization compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
SEO Content Optimization this skillmagnus919/hermes-profiles282—~3.1kAutomated safety check: PassMIT
Blog OutlineAgriciDaniel/claude-blog2.3k1 repos~1.5kAutomated safety check: PassMIT
Metadata Checkjdevalk/skills105—~1kAutomated safety check: PassMIT
Content Writeraaron-he-zhu/aaron-marketing-skills2.9k—~3.6kAutomated safety check: PassApache-2.0
Pricing Pageboraoztunc/skills3972 repos~1.4kAutomated safety check: PassApache-2.0
SEO Performance Reviewfjrevoredo/mini-diarium308—~3kAutomated safety check: PassMIT

Similar skills

  • Blog Outline

    AgriciDaniel/claude-blog

    SERP-informed outline generation with H2/H3 heading hierarchy, competitive content gap analysis, section-by-section word count targets, chart and image placement markers, optional FAQ question…

    2.3k GitHub starsUsed in 1 repo~1.5k tokens
    Marketing & SEOAuto-check passed
  • Metadata Check

    jdevalk/skills

    Reviews short high-value strings — page titles, meta descriptions, schema description fields, FAQ answers, GitHub repo taglines, profile bios, social-card copy, and other metadata where Flesch and…

    105 GitHub stars~1k tokensUpdated 3 mo ago
    Marketing & SEOAuto-check passed
  • Content Writer

    aaron-he-zhu/aaron-marketing-skills

    A skill your agent uses when the user asks to "write SEO content", "draft a blog post / landing page", "update outdated content", or "fix traffic/ranking decay"; two modes — new drafts pages with…

    2.9k GitHub stars~3.6k tokensUpdated today
    Marketing & SEOAuto-check passed
  • Pricing Page

    boraoztunc/skills

    A skill your agent uses when designing or rewriting a high-converting SaaS pricing page (structure, plan design, copywriting, SEO/AEO, FAQs, layout patterns, experiments).

    397 GitHub starsUsed in 2 repos~1.4k tokens
    Marketing & SEOAuto-check passed
  • SEO Performance Review

    fjrevoredo/mini-diarium

    Applies to Mini Diarium's marketing site (website/) and its SEO data under docs/seo/.

    308 GitHub stars~3k tokensUpdated today
    Business, Finance & HRAuto-check passed
  • SEO Keyword Clustering

    AgriciDaniel/claude-seo

    Clusters keywords by how much their search results overlap and designs a hub-and-spoke content plan with an internal link matrix and an interactive cluster map.

    19k GitHub starsUsed in 2 repos~3.3k tokens
    Marketing & SEOAuto-check passed

More from magnus919/hermes-profiles

All 31 skills in this repo
  • Data Scientist

    magnus919/hermes-profiles

    PhD-level expertise in data science, statistics, and machine learning.

    282 GitHub stars~3.3k tokensUpdated 3 mo ago
    Auto-check passed
  • Brand Designer

    magnus919/hermes-profiles

    Create comprehensive brand identity documentation for any brand.

    282 GitHub stars~2.3k tokensUpdated 3 mo ago
    Auto-check passed
  • Sdd Authoring

    magnus919/hermes-profiles

    Specification authoring for AI-native SDD — writes formal specifications in structured formats (Gherkin, user stories, acceptance criteria), enforces spec quality gates, and produces…

    282 GitHub stars~1.4k tokensUpdated 3 mo ago
    Auto-check passed
  • Sdd Verification

    magnus919/hermes-profiles

    SDD acceptance criteria verification — maps specification acceptance criteria to tests, validates implementation output against spec requirements, and produces artifact-pyramid-compliant…

    282 GitHub stars~1.8k tokensUpdated 3 mo ago
    Auto-check passed
  • Sdd Work Decomposition

    magnus919/hermes-profiles

    SDD work decomposition — translates formal specifications into dependency-aware task plans with per-task acceptance criteria.

    282 GitHub stars~1.4k tokensUpdated 3 mo ago
    Auto-check passed
  • Artifact Pyramids

    magnus919/hermes-profiles

    Progressive disclosure for what AI agents produce. An agent skill from magnus919/hermes-profiles.

    282 GitHub stars~2.5k tokensUpdated 3 mo ago
    Auto-check passed

Questions about SEO Content Optimization

What does SEO Content Optimization do?

Audit and optimize content sites for search — page title audits, schema injection (Organization, FAQ, LocalBusiness), meta description rewrites, URL hygiene, local landing pages, and measurement. SEO Content Optimization is an agent skill from magnus919/hermes-profiles. Audit and optimize content sites for search — page title audits, schema injection (Organization, FAQ, LocalBusiness), meta description rewrites, URL hygiene, local landing pages, and measurement.

When should I use SEO Content Optimization?

SEO Content Optimization fits situations like: tasks that involve On-page SEO; tasks that involve Landing pages; tasks that involve Content strategy.

How do I install SEO Content Optimization in Claude Code?

Run `npx skills add magnus919/hermes-profiles --skill seo-content-optimization -a claude-code`. Or copy the skill folder (skills/seo-content-optimization in magnus919/hermes-profiles) into .claude/skills/seo-content-optimization in your project. Claude Code loads it when a task matches its description.

How do I install SEO Content Optimization in Codex?

Run `npx skills add magnus919/hermes-profiles --skill seo-content-optimization -a codex`. Or copy the skill folder (skills/seo-content-optimization in magnus919/hermes-profiles) into .agents/skills/seo-content-optimization in your project. Codex loads it when a task matches its description.

Can I use SEO Content Optimization in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add magnus919/hermes-profiles --skill seo-content-optimization -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/seo-content-optimization, .gemini/skills/seo-content-optimization, .github/skills/seo-content-optimization and .opencode/skills/seo-content-optimization in your project.

What does SEO Content Optimization need to run?

Going by SKILL.md and its folder, SEO Content Optimization needs the command-line tools its instructions call (curl). Our summary lists: Python 3.

Does SEO Content Optimization access the network?

SKILL.md names 4 domains. In commands or code: schema.org, en.wikipedia.org and discord.gg; the agent is likely to contact these when it follows the instructions. As links in the text: search.google.com. This is read from the text; nothing was executed.

Is SEO Content Optimization safe to install?

Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.

What licence does SEO Content Optimization use?

SEO Content Optimization is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does SEO Content Optimization use?

About 3.1k tokens (SKILL.md is roughly 12k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full. Its references folder adds about 1.3k tokens, read only when the agent opens those files.

What are the alternatives to SEO Content Optimization?

Skills that share tags, products or a category with SEO Content Optimization: Blog Outline (AgriciDaniel/claude-blog, 2.3k stars), Metadata Check (jdevalk/skills, 105 stars), Content Writer (aaron-he-zhu/aaron-marketing-skills, 2.9k stars) and Pricing Page (boraoztunc/skills, 397 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains SEO Content Optimization?

magnus919 (a GitHub user) maintains it in magnus919/hermes-profiles, which has 282 GitHub stars. The repository holds 31 skills in this directory. The repository was last updated on June 27, 2026.

Source: magnus919/hermes-profiles on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.