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.
Audit and optimize headings across AEM Edge Delivery Services pages for search intent, hierarchy, and consistency.
$ npx skills add adobe/skills --skill heading-optimizer -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install adobe/skills heading-optimizer --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/adobe/skills.git skills-src && mkdir -p .claude/skills && cp -r skills-src/plugins/aem/edge-delivery-services-content-ops/skills/heading-optimizer .claude/skills/heading-optimizer && 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 "heading-optimizer" agent skill from https://github.com/adobe/skills/tree/main/plugins/aem/edge-delivery-services-content-ops/skills/heading-optimizer into .claude/skills/heading-optimizer/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "heading-optimizer", 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/adobe/skills/tree/main/plugins/aem/edge-delivery-services-content-ops/skills/heading-optimizerType 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 adobe/skills --skill heading-optimizer -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install adobe/skills heading-optimizer --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/adobe/skills.git skills-src && mkdir -p .agents/skills && cp -r skills-src/plugins/aem/edge-delivery-services-content-ops/skills/heading-optimizer .agents/skills/heading-optimizer && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "heading-optimizer" agent skill from https://github.com/adobe/skills/tree/main/plugins/aem/edge-delivery-services-content-ops/skills/heading-optimizer into .agents/skills/heading-optimizer/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "heading-optimizer", 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 adobe/skills --skill heading-optimizer -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install adobe/skills heading-optimizer --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/adobe/skills.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/plugins/aem/edge-delivery-services-content-ops/skills/heading-optimizer .cursor/skills/heading-optimizer && 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 "heading-optimizer" agent skill from https://github.com/adobe/skills/tree/main/plugins/aem/edge-delivery-services-content-ops/skills/heading-optimizer into .cursor/skills/heading-optimizer/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "heading-optimizer", 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/adobe/skills.git --path plugins/aem/edge-delivery-services-content-ops/skills/heading-optimizer--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 adobe/skills --skill heading-optimizer -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install adobe/skills heading-optimizer --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/adobe/skills.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/plugins/aem/edge-delivery-services-content-ops/skills/heading-optimizer .gemini/skills/heading-optimizer && 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 "heading-optimizer" agent skill from https://github.com/adobe/skills/tree/main/plugins/aem/edge-delivery-services-content-ops/skills/heading-optimizer into .gemini/skills/heading-optimizer/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "heading-optimizer", 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 adobe/skills heading-optimizerInstalls 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 adobe/skills --skill heading-optimizer -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/adobe/skills.git skills-src && mkdir -p .github/skills && cp -r skills-src/plugins/aem/edge-delivery-services-content-ops/skills/heading-optimizer .github/skills/heading-optimizer && 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 "heading-optimizer" agent skill from https://github.com/adobe/skills/tree/main/plugins/aem/edge-delivery-services-content-ops/skills/heading-optimizer into .github/skills/heading-optimizer/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "heading-optimizer", 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 adobe/skills --skill heading-optimizer -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install adobe/skills heading-optimizer --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/adobe/skills.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/plugins/aem/edge-delivery-services-content-ops/skills/heading-optimizer .opencode/skills/heading-optimizer && 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 "heading-optimizer" agent skill from https://github.com/adobe/skills/tree/main/plugins/aem/edge-delivery-services-content-ops/skills/heading-optimizer into .opencode/skills/heading-optimizer/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "heading-optimizer", 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.
heading-optimizerAudit and optimize headings across AEM Edge Delivery Services pages for search intent, hierarchy, and consistency.
Heading Optimizer is an agent skill from adobe/skills. Audit and optimize headings across AEM Edge Delivery Services pages for search intent, hierarchy, and consistency. Extracts all headings (H1-H6), evaluates uniqueness, keyword alignment, specificity, and structural correctness, then generates optimized heading suggestions per page. Use when improving on-page SEO, fixing heading hierarchy issues, or standardizing heading patterns across a site.
Its SKILL.md is about 3.7k tokens, which your agent loads only when the skill is triggered. The skill folder holds 2 other files (for example `CHANGELOG.md` and `package.json`).
It sits in Marketing & SEO, covering Keyword research and On-page SEO. It works with Adobe Experience Manager. The repository describes itself as: Adobe Skills for Agents. The licence is Apache-2.0.
8 steps, taken from the step headings in SKILL.md.
Read from SKILL.md and the folder at commit cbc9952. 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.
No scripts in the folder and no shell commands in SKILL.md.
From the folder's file list and the shell code blocks in SKILL.md.
No URLs in SKILL.md.
From 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.
Heading Optimizer loads about 3.7k tokens when it runs. Until then it costs about 104 tokens; SKILL.md has 2,033 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 adobe/skills at commit cbc9952, republished under its Apache-2.0 licence (© adobe). 2,033 words, ~3,716 tokens.
.claude/skills/heading-optimizer/SKILL.md (or your agent's skills folder). This skill also uses 2 other files; get the full folder from GitHub.Audit headings across AEM Edge Delivery Services pages for search intent alignment, structural correctness, and cross-page consistency, then generate specific optimized heading suggestions that authors can apply directly in their source documents.
This skill fetches external web pages for analysis. When fetching:
.plain.html variants).In Edge Delivery Services, headings are set by the content author in the source document (Google Docs or Microsoft Word) using the built-in heading styles: Heading 1, Heading 2, through Heading 6. EDS converts these to <h1> through <h6> in the rendered HTML.
Key EDS heading behaviors:
---) in the source document creates a new section (<div> wrapper). Headings within sections create the content hierarchy..plain.html variant returns all authored content including headings, stripped of site chrome (nav, footer, header).To fix headings, the author edits the source document directly — changing the heading style in Google Docs or Word. No code changes are needed.
.plain.html conventions are EDS-specific.Before starting, create a checklist to track progress:
For a single page, fetch its .plain.html (append .plain.html to the path; for root, use /index.plain.html). For multiple pages, fetch the query index at /query-index.json first to get the page inventory, then fetch .plain.html for each page.
For each page, extract every heading element (H1 through H6) and record:
<div> wrappers or <hr> separators).Present the heading structure for each page as an outline:
/blog/seo-guide
H1: SEO Guide
H2: Overview
H3: What Is SEO?
H2: Getting Started
H3: Step 1
H3: Step 2
H2: ConclusionIf fetching via a tool that converts HTML to markdown, heading levels may be represented as #, ##, etc. Map these back to H1-H6. Some tools strip HTML attributes; if you need raw heading markup, use curl to preserve the original HTML.
The H1 is the most important heading on the page for SEO. Evaluate each page's H1 against these criteria:
| Check | Pass | Fail |
|---|---|---|
| Exactly one H1 | Page has a single H1 | Page has zero H1s or multiple H1s |
| Unique across site | No other page shares the same H1 text | Another page has an identical H1 |
| Descriptive | H1 clearly describes the page content | H1 is generic: "Home", "Welcome", "Overview", "Untitled" |
| Includes target keyword | H1 naturally contains the primary keyword or topic | H1 is vague or off-topic |
| Appropriate length | 20-70 characters | Too short (<20 chars) or too long (>70 chars) |
| Matches title tag | H1 aligns with the <title> (not necessarily identical, but topically consistent) | H1 and title are about different topics |
For each failing check, note the issue and provide a suggested fix.
H2 headings are the second most important for SEO — they define the subtopics of the page and often match the queries people search for. Evaluate all subheadings:
Flag headings that are generic and do not describe their section's content:
| Generic (Weak) | Why It's Weak | Suggested Improvement |
|---|---|---|
| Overview | Does not describe what is being overviewed | "What Is Content Delivery?" |
| Details | Meaningless without context | "Pricing and Plan Details" |
| More Information | Filler heading | "Frequently Asked Questions" |
| Getting Started | Acceptable but could be more specific | "How to Set Up Your First Project" |
| Features | Common but vague | "Key Features: Speed, Security, and Scalability" |
| Benefits | Generic | "How EDS Reduces Page Load Times by 50%" |
| Resources | Describes format, not content | "Documentation and API References" |
| Contact Us | Acceptable for contact pages | -- |
For each H2, consider: would someone search for this phrase? Good H2s match the way people ask questions or describe topics:
Flag H2s that no one would search for (e.g., "Section 2", "Part B", "Below").
Within a page, headings at the same level should follow a consistent pattern:
Check the structural correctness of the heading outline:
| Rule | Violation | Impact |
|---|---|---|
| No skipped levels | H1 followed directly by H3 (skipping H2) | Screen readers announce heading levels; skipping confuses the document outline |
| Single H1 | Multiple H1s on the page | Dilutes the primary topic signal; confuses search engines |
| Logical nesting | H3 under H2 is correct; H2 under H3 is not | Breaks the semantic outline |
| Headings not empty | A heading element with no text content | Results in an empty heading in the rendered HTML |
| Headings match content | The heading describes the content that follows it | Misleading headings confuse both readers and search engines |
For each violation, report:
| Page | Issue | Location | Details |
|---|---|---|---|
| /blog/guide | Skipped level | Section 2 | H1 jumps to H3 — missing H2 |
| /about | Multiple H1s | Sections 1, 3 | Two H1 headings: "About Us" and "Our Mission" |
| /products | Empty heading | Section 4 | H2 with no text content |
When analyzing multiple pages, check for issues that span the site:
List any pages that share the same H1 text:
| H1 Text | Pages |
|---|---|
| "Welcome" | /, /landing, /promo |
| "Overview" | /services, /products |
Each page should have a unique H1 that distinguishes it from every other page on the site.
Look for inconsistencies across similar pages. For example, if blog posts use different H1 patterns:
/blog/seo-tips — H1: "10 SEO Tips for 2026" (numbered list format)/blog/content-strategy — H1: "Content Strategy" (bare topic)/blog/analytics-guide — H1: "The Complete Guide to Analytics" (guide format)Recommend a consistent pattern for the content type (e.g., all blog posts should use "[Topic]: [Descriptive Subtitle]" or a similar convention).
If one page in a content type has an H2 section that others lack (e.g., all product pages have "Features" and "Pricing" except one), flag the inconsistency.
For each page with heading issues, produce a before/after comparison:
/blog/seo-guide — "SEO Guide"| Level | Current Heading | Issue | Suggested Heading |
|---|---|---|---|
| H1 | SEO Guide | Too short, missing keywords | SEO Guide: How to Optimize Your Site for Search in 2026 |
| H2 | Overview | Generic, not searchable | What Is SEO and Why Does It Matter? |
| H2 | Getting Started | Vague | How to Start Optimizing Your Site for Search |
| H3 | Step 1 | No descriptive content | Step 1: Research Your Target Keywords |
| H3 | Step 2 | No descriptive content | Step 2: Optimize Your Page Titles and Meta Descriptions |
| H2 | Conclusion | Generic | Key Takeaways for SEO Success |
For each suggestion, note that the author should apply the change by editing the heading style in their Google Doc or Word document. No code changes are needed.
Compile the findings into a final report:
Rate the heading quality: Strong / Needs Improvement / Poor
The tables from Step 6 for each page.
Remind the author how to fix headings in EDS:
| Problem | Cause | Solution |
|---|---|---|
| Cannot find H1 on the page | The author may not have applied Heading 1 style; the first bold/large text is not an H1 | Check the raw HTML for <h1>; if absent, recommend the author set a Heading 1 in the source doc |
| Headings appear inside blocks | Block tables in the source doc can contain headings | Note which block the heading belongs to; block headings may follow different conventions |
| Fetch tool converts headings to markdown | Tools that return markdown lose the distinction between styled and unstyled text | Use curl to get raw HTML if heading levels are ambiguous |
| Site has hundreds of pages | Full audit is too large | Scope to a content type or path prefix; sample 10-20 representative pages |
| Headings contain HTML entities | Encoded characters like & in heading text | Decode entities for display; the source doc will have the plain character |
| Author disagrees with suggestion | Heading optimization is partly subjective | Present suggestions as recommendations, not mandates; explain the SEO rationale |
© adobe, Apache-2.0. 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 2 other files in plugins/aem/edge-delivery-services-content-ops/skills/heading-optimizer of adobe/skills.
Open the folder on GitHubat commit cbc9952
Heading Optimizer 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 |
|---|---|---|---|---|---|---|
| Heading Optimizer this skilladobe/skills | 195 | — | ~3.7k | Automated safety check: Pass | Apache-2.0 | |
| SEO Keyword ClusteringAgriciDaniel/claude-seo | 18k | 2 repos | ~3.3k | Automated safety check: Pass | MIT | |
| SEO Content Brief GeneratorAgriciDaniel/claude-seo | 18k | 2 repos | ~2.6k | Automated safety check: Pass | MIT | |
| SEO Content Briefseranking/seo-skills | 160 | — | ~2.5k | Automated safety check: Pass | MIT | |
| Blog OutlineAgriciDaniel/claude-blog | 2.3k | 1 repos | ~1.5k | Automated safety check: Pass | MIT | |
| SEO Keyword Clusterseranking/seo-skills | 160 | — | ~2.5k | Automated safety check: Pass | MIT |
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.
AgriciDaniel/claude-seo
Builds research-backed SEO content briefs with competitor scoring, per-section word counts and page-type templates, for new pages or improving existing ones.
seranking/seo-skills
Generate a writer-ready SEO content brief from a target domain and topic.
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…
seranking/seo-skills
Build a content cluster plan from seed keywords — intent-grouped clusters, pillar+spokes architecture with H1/H2 suggestions per spoke, prioritised build order, and an internal-linking map.
zubair-trabzada/dataforseo-claude
Find keywords competitors rank for that you don't, via the DataForSEO Labs domainintersection endpoint.
adobe/skills
Scaffolds, implements, deploys and debugs Adobe Runtime actions in App Builder projects, with templates for webhooks, events, database CRUD, sequences and Asset Compute workers.
adobe/skills
Launches Chrome with an unpacked extension over CDP, opens its sidepanel, popup or options page, and hands over to cdp-connect for clicks, typing and screenshots.
adobe/skills
Extracts icons, metadata, text, forms, videos and social links from any web page with playwright-cli, with SVG icon classification and cleanup.
adobe/skills
Detect all languages used on a webpage — both declared (html@lang, hreflang alternate links, nested lang= attributes, meta content-language) and actually present in the body text (Google CLD3 via…
adobe/skills
Prepare any webpage for clean interaction by detecting and removing disruptive overlays (cookie banners, GDPR consent, modals, popups, newsletter signups, paywalls, login walls).
adobe/skills
Reduce a webpage to a structural skeleton with semantic tokens.
Works with
Categories
Audit and optimize headings across AEM Edge Delivery Services pages for search intent, hierarchy, and consistency. Heading Optimizer is an agent skill from adobe/skills. Audit and optimize headings across AEM Edge Delivery Services pages for search intent, hierarchy, and consistency.
Heading Optimizer fits situations like: improving on-page SEO; fixing heading hierarchy issues; standardizing heading patterns across a site.
Run `npx skills add adobe/skills --skill heading-optimizer -a claude-code`. Or copy the skill folder (plugins/aem/edge-delivery-services-content-ops/skills/heading-optimizer in adobe/skills) into .claude/skills/heading-optimizer in your project. Claude Code loads it when a task matches its description.
Run `npx skills add adobe/skills --skill heading-optimizer -a codex`. Or copy the skill folder (plugins/aem/edge-delivery-services-content-ops/skills/heading-optimizer in adobe/skills) into .agents/skills/heading-optimizer 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 adobe/skills --skill heading-optimizer -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/heading-optimizer, .gemini/skills/heading-optimizer, .github/skills/heading-optimizer and .opencode/skills/heading-optimizer in your project.
SKILL.md names no scripts, command-line tools or credentials: Heading Optimizer is instructions for the agent only.
SKILL.md contains no URLs. Any network use would come from the scripts or tools the agent runs. 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.
Heading Optimizer is published under the Apache-2.0 licence (declared in SKILL.md). It allows redistribution, so the full SKILL.md is shown on this page.
About 3.7k tokens (SKILL.md is roughly 15k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.
Skills that share tags, products or a category with Heading Optimizer: SEO Keyword Clustering (AgriciDaniel/claude-seo, 18k stars), SEO Content Brief Generator (AgriciDaniel/claude-seo, 18k stars), SEO Content Brief (seranking/seo-skills, 160 stars) and Blog Outline (AgriciDaniel/claude-blog, 2.3k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
adobe (a GitHub organization) maintains it in adobe/skills, which has 195 GitHub stars. The repository holds 105 skills in this directory. The repository was last updated on October 6, 2026.
Source: adobe/skills on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.