SEO
AgriciDaniel/seo-os
Comprehensive SEO analysis for any website or business type.
Checks the technical health of a website, from robots.txt, sitemaps and noindex tags to mobile, Core Web Vitals, JavaScript rendering and IndexNow, but not content or backlinks.
$ npx skills add AgriciDaniel/claude-seo --skill seo-technical -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install AgriciDaniel/claude-seo seo-technical --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/AgriciDaniel/claude-seo.git skills-src && mkdir -p .claude/skills && cp -r skills-src/skills/seo-technical .claude/skills/seo-technical && 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-technical" agent skill from https://github.com/AgriciDaniel/claude-seo/tree/main/skills/seo-technical into .claude/skills/seo-technical/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "seo-technical", 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/AgriciDaniel/claude-seo/tree/main/skills/seo-technicalType 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 AgriciDaniel/claude-seo --skill seo-technical -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install AgriciDaniel/claude-seo seo-technical --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/AgriciDaniel/claude-seo.git skills-src && mkdir -p .agents/skills && cp -r skills-src/skills/seo-technical .agents/skills/seo-technical && 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-technical" agent skill from https://github.com/AgriciDaniel/claude-seo/tree/main/skills/seo-technical into .agents/skills/seo-technical/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "seo-technical", 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 AgriciDaniel/claude-seo --skill seo-technical -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install AgriciDaniel/claude-seo seo-technical --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/AgriciDaniel/claude-seo.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/skills/seo-technical .cursor/skills/seo-technical && 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-technical" agent skill from https://github.com/AgriciDaniel/claude-seo/tree/main/skills/seo-technical into .cursor/skills/seo-technical/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "seo-technical", 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/AgriciDaniel/claude-seo.git --path skills/seo-technical--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 AgriciDaniel/claude-seo --skill seo-technical -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install AgriciDaniel/claude-seo seo-technical --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/AgriciDaniel/claude-seo.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/skills/seo-technical .gemini/skills/seo-technical && 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-technical" agent skill from https://github.com/AgriciDaniel/claude-seo/tree/main/skills/seo-technical into .gemini/skills/seo-technical/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "seo-technical", 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 AgriciDaniel/claude-seo seo-technicalInstalls 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 AgriciDaniel/claude-seo --skill seo-technical -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/AgriciDaniel/claude-seo.git skills-src && mkdir -p .github/skills && cp -r skills-src/skills/seo-technical .github/skills/seo-technical && 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-technical" agent skill from https://github.com/AgriciDaniel/claude-seo/tree/main/skills/seo-technical into .github/skills/seo-technical/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "seo-technical", 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 AgriciDaniel/claude-seo --skill seo-technical -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install AgriciDaniel/claude-seo seo-technical --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/AgriciDaniel/claude-seo.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/skills/seo-technical .opencode/skills/seo-technical && 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-technical" agent skill from https://github.com/AgriciDaniel/claude-seo/tree/main/skills/seo-technical into .opencode/skills/seo-technical/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "seo-technical", 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-technicalChecks the technical health of a website, from robots.txt, sitemaps and noindex tags to mobile, Core Web Vitals, JavaScript rendering and IndexNow, but not content or backlinks.
The audit is organized in numbered categories, starting with crawlability: whether robots.txt exists and is valid, whether an XML sitemap is found by a discovery script, noindex tags that are intentional versus accidental, important pages within three clicks of the homepage, and whether critical content depends on JavaScript. It also covers crawl budget for large sites.
Notes reflect current Google behavior: Googlebot reads only the first 2MB of HTML and 64MB of a PDF, so key content and JSON-LD should sit early; crawl rate adjusts itself with no manual control; and AMP gets no separate ranking advantage. A section on AI crawlers lists user agents from OpenAI and Anthropic, what each is used for and how to manage them through robots.txt.
9 steps, taken from the step headings in SKILL.md.
Read from SKILL.md and the folder at commit 4b99de2. 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 (its code samples are bash).
From the folder's file list and the shell code blocks in SKILL.md.
Links to these hosts (documentation or services it may open):
developers.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.
Technical SEO Audit loads about 4.4k tokens when it runs. Until then it costs about 48 tokens; SKILL.md has 2,105 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 AgriciDaniel/claude-seo at commit 4b99de2, republished under its MIT licence (© AgriciDaniel). 2,105 words, ~4,404 tokens.
.claude/skills/seo-technical/SKILL.md (or your agent's skills folder). This skill also uses 1 other file; get the full folder from GitHub."${CLAUDE_PLUGIN_ROOT}/scripts/claude-seo" run sitemap_discovery.py <url> --json; require a
valid entry in found, and report stale or unsafe robots.txt declarations
separately from working fallback locations/crawling/ipranges/ and googlebot.json was renamed common-crawlers.json.As of 2025-2026, AI companies actively crawl the web to train models and power AI search. Managing these crawlers via robots.txt is a critical technical SEO consideration.
Known AI crawlers (the authoritative table, with robots.txt behaviour per crawler, is in seo-geo):
| Crawler | Company | robots.txt token | Purpose |
|---|---|---|---|
| GPTBot | OpenAI | GPTBot | Model training (NOT ChatGPT Search) |
| OAI-SearchBot | OpenAI | OAI-SearchBot | ChatGPT Search citability |
| ChatGPT-User | OpenAI | ChatGPT-User | Real-time browsing (user-triggered) |
| ClaudeBot | Anthropic | ClaudeBot | Model training (NOT Claude search citability) |
| Claude-SearchBot | Anthropic | Claude-SearchBot | Claude search-result citability |
| PerplexityBot | Perplexity | PerplexityBot | Perplexity search index (not model training) |
| Bytespider | ByteDance | Bytespider | Model training |
| Google-Extended | Google-Extended | Gemini training and grounding, and training of the models behind Search gen-AI features (no effect on Search inclusion or ranking) | |
| Applebot-Extended | Apple | Applebot-Extended | Apple Intelligence training opt-out (NOT Siri/Spotlight/Safari) |
| CCBot | Common Crawl | CCBot | Open dataset |
Key distinctions:
Google-Extended prevents Gemini training and grounding use (and training of the models behind Search gen-AI features) but does NOT affect Google Search indexing or AI Overviews (those use Googlebot)GPTBot prevents OpenAI training but does NOT affect ChatGPT Search
citability, which is governed by OAI-SearchBot, nor user-triggered browsing
(ChatGPT-User). Check OAI-SearchBot for any citability claim; GPTBot
status is evidence about training use onlyClaudeBot prevents Anthropic model training but does NOT affect
citability in Claude's own search features, which is governed by
Claude-SearchBot (per Anthropic's crawler support article). Check
Claude-SearchBot for any Claude-search citability claim; ClaudeBot status
is evidence about training use onlyApplebot-Extended opts out of Apple Intelligence / generative-model
training use but does NOT affect discoverability via Siri, Spotlight, or Safari,
which follows Applebot (per Apple's support article); Applebot-Extended does
not itself crawlExample, selective AI crawler blocking:
# Allow search indexing, block AI training crawlers
User-agent: GPTBot
Disallow: /
User-agent: Google-Extended
Disallow: /
User-agent: Bytespider
Disallow: /
# Allow all other crawlers (including Googlebot for search)
User-agent: *
Allow: /Recommendation: Consider your AI visibility strategy before blocking: blocking an AI search crawler removes the site from that engine's answers. Do not promise traffic from allowing one. Cross-reference the seo-geo skill for the full AI crawler/fetcher taxonomy.
Google's user-triggered fetchers generally ignore robots.txt rules (other vendors differ: Anthropic's Claude-User honors it). Google now documents Google-Agent (user-triggered agentic browsing) plus Google-GeminiNotebook (formerly Google-NotebookLM) and Google Messages as user-triggered fetchers that cannot be blocked via robots.txt. Use server-side access controls instead. By contrast,
Google-ExtendedandGoogle-CloudVertexBotobey robots.txt. Emerging: Web Bot Auth (RFC 9421) lets bots authenticate cryptographically via aSignature-Agentheader + key directory atagent.bot.goog(used by Google-Agent); reverse-DNS verification remains the fallback.
<a href> links to each page (Google no longer uses rel=next/prev; it announced this in 2019); give each page a self-referencing canonical; load-more and infinite scroll need paginated URLs behind themhistory.pushState/replaceState (including scripts injected by third-party ad/library platforms). Added to Google's spam policies 2026-04-13; enforcement live since 2026-06-15 (manual actions + automated demotions): treat as Critical.Page experience is guidance, not a single ranking system. Only Core Web Vitals feeds ranking directly; HTTPS is a confirmed but lightweight signal (Google called it very lightweight when it was announced in 2014). Relevance can still win even when page experience is sub-par, so don't over-weight security headers. Note: the standalone Page Experience report was removed from Search Console (monitor via the Core Web Vitals + HTTPS reports).
"${CLAUDE_PLUGIN_ROOT}/scripts/claude-seo" run agentic_check.py <url> --json reports visible words in the raw HTML (server-rendered); compare with render_page.py <url> --mode always --json when Chromium is available. Without Chromium, report the raw-HTML result and say rendered content was not compared.Recommended rendering strategy:
| Strategy | Use Case |
|---|---|
| SSR | Public SEO content, dynamic pages |
| SSG | Static content, blogs, docs |
| CSR | Authenticated / behind-login content only |
Preferred frameworks: Next.js, Astro, React Router v7 (Remix), SvelteKit
Google updated its JavaScript SEO documentation in December 2025 with critical clarifications:
<meta name="robots" content="noindex"> but JavaScript removes it, Google MAY still honor the noindex from raw HTML. Serve correct robots directives in the initial HTML response.Best practice: Serve critical SEO elements (canonical, meta robots, structured data, title, meta description) in the initial server-rendered HTML rather than relying on JavaScript injection.
Agent readiness has its own sub-skill: /seo agentic <url> (seo-agentic).
It owns the Lighthouse Agentic Browsing category (a fraction, X of N, not
a 0-100 score), the accessibility tree for agents, AI agent access policy,
llms.txt, Markdown delivery, ai-catalog.json, /.well-known discovery files,
and WebMCP. During a technical audit, record only these two signals and point
to seo-agentic for the rest:
"${CLAUDE_PLUGIN_ROOT}/scripts/claude-seo" run agent_ux_check.py https://example.com --jsonThe Agent-UX 0-100 score above is a local heuristic. Keep it distinct from the
Lighthouse fraction, and surface its findings as opportunities, not failures.
A failing Lighthouse agent-accessibility-tree audit is different: seo-agentic
rates it P0, because it is Google's own measured check.
Score only what was measured. Each category score is the share of that category's checks that passed, adjusted for severity; a category you could not measure is reported as "not measured", never given a number. Show the checks behind every score.
| Category | Status | Score |
|---|---|---|
| Crawlability | pass/warn/fail | XX/100 |
| Indexability | pass/warn/fail | XX/100 |
| Security | pass/warn/fail | XX/100 |
| URL Structure | pass/warn/fail | XX/100 |
| Mobile | pass/warn/fail | XX/100 |
| Core Web Vitals | pass/warn/fail | XX/100 |
| Structured Data | pass/warn/fail | XX/100 |
| JS Rendering | pass/warn/fail | XX/100 |
| IndexNow | pass/warn/fail | XX/100 |
If DataForSEO MCP tools are available, use on_page_instant_pages for real page analysis (status codes, page timing, broken links, on-page checks), on_page_lighthouse for Lighthouse audits (performance, accessibility, SEO scores), and domain_analytics_technologies_domain_technologies for technology stack detection.
If Google API credentials are configured, use "${CLAUDE_PLUGIN_ROOT}/scripts/claude-seo" run pagespeed_check.py <url> --json for real PSI + CrUX field data (replaces lab-only CWV estimates), "${CLAUDE_PLUGIN_ROOT}/scripts/claude-seo" run crux_history.py <url> --form-factor PHONE --json for 25-week CWV trends (use PHONE: the all-devices view can hide a mobile failure), and "${CLAUDE_PLUGIN_ROOT}/scripts/claude-seo" run gsc_inspect.py <url> --json for real indexation status per URL.
url_safety refuses loopback and private addresses by default, so http://localhost:3000 and a staging host on Tailscale fail with "Blocked hostname" or "Blocked IP literal". That default is deliberate: these scripts follow URLs found on the pages they crawl.
To audit a pre-deployment host, the operator names it in CLAUDE_SEO_LOCAL_TARGETS, a comma-separated list of host or host:port entries:
CLAUDE_SEO_LOCAL_TARGETS="localhost:3000,127.0.0.1:8080,100.101.102.103" \
"${CLAUDE_PLUGIN_ROOT}/scripts/claude-seo" run fetch_page.py http://localhost:3000/What it does and does not cover:
| Behaviour | Allowlisted host |
|---|---|
| First, top-level URL over raw HTTP | Allowed |
| Redirect target reached from that URL | Refused |
| Subresource fetched by a rendered page | Refused |
Playwright renders (--render, screenshots) | Refused; use the raw-HTTP path |
| A host not named in the variable | Refused |
| Cloud metadata endpoints, even when listed | Refused |
host:port matches that port only; a bare host matches any port. With the variable unset the policy is unchanged. Never suggest setting it for a host the user does not control. See SECURITY.md.
| Scenario | Action |
|---|---|
| URL unreachable | Report connection error with status code. Suggest verifying URL, checking DNS resolution, and confirming the site is publicly accessible. |
| robots.txt not found | Note that no robots.txt was detected at the root domain. Recommend creating one with appropriate directives. Continue audit on remaining categories. |
| HTTPS not configured | Flag as a critical issue. Report whether HTTP is served without redirect, mixed content exists, or SSL certificate is missing/expired. |
| Core Web Vitals data unavailable | Note that CrUX data is not available (common for low-traffic sites). Suggest using Lighthouse lab data as a proxy and recommend increasing traffic before re-testing. |
© AgriciDaniel, 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 in skills/seo-technical of AgriciDaniel/claude-seo.
Open the folder on GitHubat commit 4b99de2
Technical SEO Audit 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 |
|---|---|---|---|---|---|---|
| Technical SEO Audit this skillAgriciDaniel/claude-seo | 19k | — | ~4.4k | Automated safety check: Pass | MIT | |
| SEOAgriciDaniel/seo-os | 135 | 2 repos | ~3.5k | Automated safety check: Pass | MIT | |
| SEO Coachakseolabs-seo/seo-coach | 146 | — | ~2.8k | Automated safety check: Pass | None | |
| SEOAgriciDaniel/codex-seo | 797 | — | ~3.7k | Automated safety check: Pass | MIT | |
| SEO Auditunifapi-agent/agents | 589 | — | ~3.4k | Automated safety check: Pass | MIT | |
| Business Website Setupsickn33/agentic-awesome-skills | 47k | 1 repos | ~6.2k | Automated safety check: Pass | MIT |
AgriciDaniel/seo-os
Comprehensive SEO analysis for any website or business type.
akseolabs-seo/seo-coach
Beginner-first SEO coaching for people who want to learn by doing one safe, verifiable step at a time.
AgriciDaniel/codex-seo
Comprehensive SEO analysis for any website, page, business, or topic.
unifapi-agent/agents
When the user wants to audit, review, or diagnose SEO issues on their site.
sickn33/agentic-awesome-skills
Website page register: URL, title, meta description, search intent, NAP block, schema type, canonical, indexability and Core Web Vitals target.
Nexus-JPF/note-companion
Use and read this skill immediately if the user request is in any way related to SEO or a site's organic search or AI search presence.
AgriciDaniel/claude-seo
Audits, validates and generates hreflang tags for multi-language and multi-region sites in HTML, HTTP headers or XML sitemaps, flagging common code and return-tag mistakes.
AgriciDaniel/claude-seo
Pulls real Google data for SEO work: Search Console, PageSpeed Insights, CrUX field data, the Indexing API and GA4 organic traffic, through /seo google commands.
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.
AgriciDaniel/claude-seo
Brings the FLOW framework's stage-specific SEO prompts into the agent, from keyword discovery through backlinks, on-page work and conversion to local SEO, loaded on demand.
AgriciDaniel/claude-seo
Generates Open Graph previews, blog hero images, product photos and infographics for SEO use through Gemini image tools and the banana extension.
Categories
Checks the technical health of a website, from robots.txt, sitemaps and noindex tags to mobile, Core Web Vitals, JavaScript rendering and IndexNow, but not content or backlinks. txt exists and is valid, whether an XML sitemap is found by a discovery script, noindex tags that are intentional versus accidental, important pages within three clicks of the homepage, and whether critical content depends on JavaScript. It also covers crawl budget for large sites.
Technical SEO Audit fits situations like: auditing the crawlability and indexability of a site; checking robots.txt rules, sitemaps and noindex tags; deciding whether to allow or block AI crawlers in robots.txt; reviewing Core Web Vitals, rendering and structured data in one technical pass.
Run `npx skills add AgriciDaniel/claude-seo --skill seo-technical -a claude-code`. Or copy the skill folder (skills/seo-technical in AgriciDaniel/claude-seo) into .claude/skills/seo-technical in your project. Claude Code loads it when a task matches its description.
Run `npx skills add AgriciDaniel/claude-seo --skill seo-technical -a codex`. Or copy the skill folder (skills/seo-technical in AgriciDaniel/claude-seo) into .agents/skills/seo-technical 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 AgriciDaniel/claude-seo --skill seo-technical -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-technical, .gemini/skills/seo-technical, .github/skills/seo-technical and .opencode/skills/seo-technical in your project.
SKILL.md names no scripts, command-line tools or credentials: Technical SEO Audit is instructions for the agent only. Our summary lists: The claude-seo plugin scripts, for sitemap discovery.
SKILL.md names 1 domain. As links in the text: developers.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.
Technical SEO Audit is published under the MIT licence (declared in SKILL.md). It allows redistribution, so the full SKILL.md is shown on this page.
About 4.4k tokens (SKILL.md is roughly 18k 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 Technical SEO Audit: SEO (AgriciDaniel/seo-os, 135 stars), SEO Coach (akseolabs-seo/seo-coach, 146 stars), SEO (AgriciDaniel/codex-seo, 797 stars) and SEO Audit (unifapi-agent/agents, 589 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
AgriciDaniel (a GitHub user) maintains it in AgriciDaniel/claude-seo, which has 18,574 GitHub stars. The repository holds 33 skills in this directory. The repository was last updated on October 4, 2026.
Source: AgriciDaniel/claude-seo on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.