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…
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.
$ npx skills add magnus919/hermes-profiles --skill seo-content-optimization -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install magnus919/hermes-profiles seo-content-optimization --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ 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-srcUse ~/.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/
Install the "seo-content-optimization" agent skill from https://github.com/magnus919/hermes-profiles/tree/main/skills/seo-content-optimization into .claude/skills/seo-content-optimization/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "seo-content-optimization", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/magnus919/hermes-profiles/tree/main/skills/seo-content-optimizationType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add magnus919/hermes-profiles --skill seo-content-optimization -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install magnus919/hermes-profiles seo-content-optimization --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/magnus919/hermes-profiles.git skills-src && mkdir -p .agents/skills && cp -r skills-src/skills/seo-content-optimization .agents/skills/seo-content-optimization && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "seo-content-optimization" agent skill from https://github.com/magnus919/hermes-profiles/tree/main/skills/seo-content-optimization into .agents/skills/seo-content-optimization/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "seo-content-optimization", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add magnus919/hermes-profiles --skill seo-content-optimization -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install magnus919/hermes-profiles seo-content-optimization --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/magnus919/hermes-profiles.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/skills/seo-content-optimization .cursor/skills/seo-content-optimization && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "seo-content-optimization" agent skill from https://github.com/magnus919/hermes-profiles/tree/main/skills/seo-content-optimization into .cursor/skills/seo-content-optimization/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "seo-content-optimization", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/magnus919/hermes-profiles.git --path skills/seo-content-optimization--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add magnus919/hermes-profiles --skill seo-content-optimization -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install magnus919/hermes-profiles seo-content-optimization --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/magnus919/hermes-profiles.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/skills/seo-content-optimization .gemini/skills/seo-content-optimization && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "seo-content-optimization" agent skill from https://github.com/magnus919/hermes-profiles/tree/main/skills/seo-content-optimization into .gemini/skills/seo-content-optimization/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "seo-content-optimization", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install magnus919/hermes-profiles seo-content-optimizationInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add magnus919/hermes-profiles --skill seo-content-optimization -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/magnus919/hermes-profiles.git skills-src && mkdir -p .github/skills && cp -r skills-src/skills/seo-content-optimization .github/skills/seo-content-optimization && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "seo-content-optimization" agent skill from https://github.com/magnus919/hermes-profiles/tree/main/skills/seo-content-optimization into .github/skills/seo-content-optimization/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "seo-content-optimization", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add magnus919/hermes-profiles --skill seo-content-optimization -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install magnus919/hermes-profiles seo-content-optimization --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/magnus919/hermes-profiles.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/skills/seo-content-optimization .opencode/skills/seo-content-optimization && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "seo-content-optimization" agent skill from https://github.com/magnus919/hermes-profiles/tree/main/skills/seo-content-optimization into .opencode/skills/seo-content-optimization/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "seo-content-optimization", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
seo-content-optimizationAudit 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. 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.
7 steps, taken from the step headings in SKILL.md.
Read from SKILL.md and the folder at commit 867a555. It shows what the files ask for, not the result of running them.
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.
Shell commands in SKILL.md call:
curlFrom the folder's file list and the shell code blocks in SKILL.md.
Hosts in commands or code, which the agent is likely to contact:
schema.orgen.wikipedia.orgdiscord.ggAlso links to:
search.google.comFrom URLs in SKILL.md, links to its own repository left out.
Names no API keys, tokens, secrets or passwords.
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
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.
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.
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.
The full file from magnus919/hermes-profiles at commit 867a555, republished under its MIT licence (© magnus919). 1,286 words, ~3,121 tokens.
.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.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)
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:
<title> tag via curlcurl -s https://example.com/page/ | grep -i '<title'curl -s https://example.com/page/ | grep -i 'name="description"'Check for existing schema:
// in browser console
document.querySelectorAll('script[type="application/ld+json"]')For each JSON-LD block, verify:
areaServed with specific cities?Organization schema — site-wide (Ghost Code Injection → ghost_head). The critical fields for local SEO:
<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:
ghost-cli --site rdumesh schema validate --json '{"@context":"...","@type":"FAQPage",...}'
ghost-cli --site rdumesh schema inject my-post --file /tmp/faq-schema.jsonFAQPage JSON-LD structure:
{
"@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:
{
"@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:
{
"@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:
| Type | Article Content Signal | SERP Impact |
|---|---|---|
TechArticle | Technical hardware/software content | Better classification, no visual rich result |
FAQPage | 3+ natural Q&A pairs (headings + paragraph answers) | Expandable FAQ rich result (high CTR) |
HowTo | Step-by-step procedures, CLI commands, build instructions | Step 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.
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:
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."| Type | Format | Example |
|---|---|---|
| Local landing | Keyword + city + site | "Free Mesh Network for Raleigh, Durham & Chapel Hill, NC |
| Technical guide | Keyword + site | "915 MHz Pine Tree Attenuation: What LoRa Mesh Operators Need to Know |
| Hardware guide | Product + keyword + site | "Heltec V4.3 Solar Repeater: Power Consumption & EasySkyMesh Firmware |
| FAQ | Keyword + cities + site | "Mesh Radio Network FAQ: RDUMesh for Raleigh, Durham, Chapel Hill" |
| Announcement | Topic + 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.
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 URLFor 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:
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:
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.
curl | grep <title> to confirm titles deployedgroktopus-hybrid-workforce.ghost.io.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:
| Approach | Effort | Output |
|---|---|---|
Hugo internal template ({{ template "_internal/schema.html" . }}) | Add one line to head.html | Basic WebSite (home) + Article (pages) with Organization, dates, author |
Custom partial (layouts/partials/schema.html) | Write a Handlebars partial with per-page-kind conditionals | Full 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 theme | Organization + 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.
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:
Quick check when evaluating a site:
/llms.txt exists? Read it first./llms.txt? Check /sitemap.xml for full page list.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.
references/llmstxt-standard.md — full /llms.txt standard referenceghost-webhooks skill reference admin-api-content-editing.md — Admin API auth and update patternscontent-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
SKILL.md and 1 other file (references) in skills/seo-content-optimization of magnus919/hermes-profiles.
Open the folder on GitHubat commit 867a555
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.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| SEO Content Optimization this skillmagnus919/hermes-profiles | 282 | — | ~3.1k | Automated safety check: Pass | MIT | |
| Blog OutlineAgriciDaniel/claude-blog | 2.3k | 1 repos | ~1.5k | Automated safety check: Pass | MIT | |
| Metadata Checkjdevalk/skills | 105 | — | ~1k | Automated safety check: Pass | MIT | |
| Content Writeraaron-he-zhu/aaron-marketing-skills | 2.9k | — | ~3.6k | Automated safety check: Pass | Apache-2.0 | |
| Pricing Pageboraoztunc/skills | 397 | 2 repos | ~1.4k | Automated safety check: Pass | Apache-2.0 | |
| SEO Performance Reviewfjrevoredo/mini-diarium | 308 | — | ~3k | Automated safety check: Pass | MIT |
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…
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…
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…
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).
fjrevoredo/mini-diarium
Applies to Mini Diarium's marketing site (website/) and its SEO data under docs/seo/.
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.
magnus919/hermes-profiles
PhD-level expertise in data science, statistics, and machine learning.
magnus919/hermes-profiles
Create comprehensive brand identity documentation for any brand.
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…
magnus919/hermes-profiles
SDD acceptance criteria verification — maps specification acceptance criteria to tests, validates implementation output against spec requirements, and produces artifact-pyramid-compliant…
magnus919/hermes-profiles
SDD work decomposition — translates formal specifications into dependency-aware task plans with per-task acceptance criteria.
magnus919/hermes-profiles
Progressive disclosure for what AI agents produce. 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. 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.
SEO Content Optimization fits situations like: tasks that involve On-page SEO; tasks that involve Landing pages; tasks that involve Content strategy.
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.
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.
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.
Going by SKILL.md and its folder, SEO Content Optimization needs the command-line tools its instructions call (curl). Our summary lists: Python 3.
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.
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.
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.
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.
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.
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.