SEO Geo
ericrisco/rsc-harness
A skill your agent uses when one existing page needs to rank in Google AND get cited by AI answer engines — auditing a URL for on-page SEO, structured-data JSON-LD, GEO citation levers, Core Web…
Audit and optimize websites for technical SEO, content SEO, and AI bot accessibility.
$ npx skills add luongnv89/skills --skill seo-ai-optimizer -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install luongnv89/skills seo-ai-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/luongnv89/skills.git skills-src && mkdir -p .claude/skills && cp -r skills-src/skills/seo-ai-optimizer .claude/skills/seo-ai-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 "seo-ai-optimizer" agent skill from https://github.com/luongnv89/skills/tree/main/skills/seo-ai-optimizer into .claude/skills/seo-ai-optimizer/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "seo-ai-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/luongnv89/skills/tree/main/skills/seo-ai-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 luongnv89/skills --skill seo-ai-optimizer -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install luongnv89/skills seo-ai-optimizer --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/luongnv89/skills.git skills-src && mkdir -p .agents/skills && cp -r skills-src/skills/seo-ai-optimizer .agents/skills/seo-ai-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 "seo-ai-optimizer" agent skill from https://github.com/luongnv89/skills/tree/main/skills/seo-ai-optimizer into .agents/skills/seo-ai-optimizer/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "seo-ai-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 luongnv89/skills --skill seo-ai-optimizer -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install luongnv89/skills seo-ai-optimizer --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/luongnv89/skills.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/skills/seo-ai-optimizer .cursor/skills/seo-ai-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 "seo-ai-optimizer" agent skill from https://github.com/luongnv89/skills/tree/main/skills/seo-ai-optimizer into .cursor/skills/seo-ai-optimizer/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "seo-ai-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/luongnv89/skills.git --path skills/seo-ai-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 luongnv89/skills --skill seo-ai-optimizer -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install luongnv89/skills seo-ai-optimizer --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/luongnv89/skills.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/skills/seo-ai-optimizer .gemini/skills/seo-ai-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 "seo-ai-optimizer" agent skill from https://github.com/luongnv89/skills/tree/main/skills/seo-ai-optimizer into .gemini/skills/seo-ai-optimizer/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "seo-ai-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 luongnv89/skills seo-ai-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 luongnv89/skills --skill seo-ai-optimizer -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/luongnv89/skills.git skills-src && mkdir -p .github/skills && cp -r skills-src/skills/seo-ai-optimizer .github/skills/seo-ai-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 "seo-ai-optimizer" agent skill from https://github.com/luongnv89/skills/tree/main/skills/seo-ai-optimizer into .github/skills/seo-ai-optimizer/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "seo-ai-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 luongnv89/skills --skill seo-ai-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 luongnv89/skills seo-ai-optimizer --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/luongnv89/skills.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/skills/seo-ai-optimizer .opencode/skills/seo-ai-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 "seo-ai-optimizer" agent skill from https://github.com/luongnv89/skills/tree/main/skills/seo-ai-optimizer into .opencode/skills/seo-ai-optimizer/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "seo-ai-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.
seo-ai-optimizerAudit and optimize websites for technical SEO, content SEO, and AI bot accessibility.
SEO AI Optimizer is an agent skill from luongnv89/skills. Audit and optimize websites for technical SEO, content SEO, and AI bot accessibility. Fixes meta tags, sitemaps, robots.txt, structured data, llms.txt, and GPTBot/ClaudeBot directives. Don't use for App Store ASO, paid search, or blog writing.
Its SKILL.md is about 2.7k tokens, which your agent loads only when the skill is triggered. The skill folder holds 20 other files, including scripts and reference files (for example `agents/auditor.md`, `agents/implementer.md` and `agents/researcher.md`).
It sits in Marketing & SEO, covering Technical SEO, App store release and AI search optimization. It works with Git. The repository describes itself as: Supercharge your AI agents/bots with reusable skills. The licence is MIT.
8 steps, taken from the step headings in SKILL.md.
Read from SKILL.md and the folder at commit 891c720. 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.
Ships 1 file in scripts/ (Python), which the agent can run.
Shell commands in SKILL.md call:
gitpythonFrom the folder's file list and the shell code blocks in SKILL.md.
No URLs in SKILL.md. Its commands use git, which can reach the network depending on how they are called.
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.
SEO AI Optimizer loads about 2.7k tokens when it runs, and up to ~13k if it reads all its reference files. Until then it costs about 65 tokens; SKILL.md has 1,290 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); the scripts in this folder are not scanned.
The full file from luongnv89/skills at commit 891c720, republished under its MIT licence (© luongnv89). 1,290 words, ~2,681 tokens.
.claude/skills/seo-ai-optimizer/SKILL.md (or your agent's skills folder). This skill also uses 15 other files; get the full folder from GitHub.Audit and optimize website codebases for search engines and AI systems.
Step 8 invokes website-agent-readiness. Verify it is installed before the first
step that changes anything:
test -d "$HOME/.claude/skills/website-agent-readiness" ||
asm list -p claude --json | grep -q '"website-agent-readiness"' || {
echo "Missing required skill: website-agent-readiness" >&2
echo "Install it: asm install github:luongnv89/skills:skills/website-agent-readiness -p claude -s global --yes" >&2
echo "No asm yet: npm install -g agent-skill-manager" >&2
echo "Verify: asm list -p claude --json | grep 'website-agent-readiness'" >&2
}Test the install path first: a repo-installed website-agent-readiness is absent from the
curated registry, so an asm list check alone would nag on every run and a bare-name
asm install would not resolve.
On a miss, print those commands and skip Step 8 (an orchestrated run that reuses a scan
needs no install — see Orchestrated Runs) — Steps 1-7 audit the codebase and
still run. Never invoke a half-installed skill. website-agent-readiness enforces its own
prerequisites (curl, python3, and for issue filing git, gh, plan-to-issues); this
skill does not re-check them.
Before modifying any project files, sync the current branch with remote. Stash first, so a dirty working tree never meets a bare rebase:
stashed=0
if [ -n "$(git status --porcelain)" ]; then git stash push -u -m "pre-sync" && stashed=1; fi
branch="$(git rev-parse --abbrev-ref HEAD)"
if git fetch origin && git pull --rebase origin "$branch"; then
if [ "$stashed" = 1 ]; then git stash pop; fi
fiIf origin is missing, the pull fails, or the rebase or stash pop conflicts, stop and ask the
user before continuing. A rebase conflict leaves the stash in place: run git rebase --abort,
then git stash pop.
scripts/audit_seo.py.Read each file only when its step needs it, to keep the context window small:
references/workflow-detail.md — checklists, templates, implementation stepsreferences/technical-seo.md — full SEO checklistreferences/framework-configs.md — framework-specific configurationreferences/ai-bot-guide.md — AI crawler directives, llms.txt format, JSON-LD templatesIf the Agent tool is available, run the 4-phase subagent workflow in
references/subagent-architecture.md. Otherwise run the same audit in one conversation; the
audit report is the same.
/website-agent-readinessRun the audit script to detect framework and scan files:
python scripts/audit_seo.py <project-root>If the script reports "No HTML/template files found," inform the user: this skill is designed for web frontends with HTML output.
The audit script checks per-file issues and project-level issues. After running the script, perform a manual review for items requiring human judgment (content quality, links, E-E-A-T).
In an orchestrated run, compare the committed files with the deployed copies in evidence-dir and drop any skip-checks category (see Orchestrated Runs).
For the full manual review checklist, see references/workflow-detail.md.
Use web search to check for updates (SEO best practices, AI bot directives, llms.txt spec, algorithm updates). Compare findings with embedded knowledge in references/.
Present the audit report grouping findings by severity (Critical, Warning, Info) and project-level findings (robots.txt, sitemap, llms.txt, JSON-LD). With output-dir, also write it to <output-dir>/seo-audit-report.md.
Present a prioritized improvement plan using the template in references/workflow-detail.md.
Ask the user: "Which improvements should I implement? You can approve all, select specific items, or modify the plan."
Do NOT proceed without explicit approval.
Apply approved changes following the Safety First protocol:
For detailed implementation instructions per category (Technical SEO, robots.txt, llms.txt, JSON-LD, sitemaps), see references/workflow-detail.md.
After implementing changes, re-run the audit script on modified files to verify critical issues are resolved and check for regressions.
Steps 1-7 fix the codebase. This step scores the deployed site as an AI agent sees it, catching what a static audit cannot: rendered output, live headers, and runtime robots/llms.txt delivery.
Orchestrated reuse: if <evidence-dir>/agent-readiness/scan.json exists, the orchestrator
already ran website-agent-readiness. Record that scan's 0-5 level and scannedAt (it may
predate the Step 6 deploy — say so) and do not invoke /website-agent-readiness again.
Otherwise run it when both hold, else skip and say why:
/website-agent-readiness <live-url>That skill owns its own gated pipeline (scan → triage → agent-ready-plan.md → issue
filing) — do not re-run its phases here, and do not re-apply its recommended llms.txt or
metadata fixes inline. Anything it returns that belongs in the codebase comes back through
Steps 5-7 as a normal approved plan item.
Verify: the step passes when agent-ready-plan.md exists in the working directory and
its reported 0-5 agent-readiness score is recorded in the final summary; a reuse (REUSED)
passes when the reused scan's score is recorded and no second scan ran; a skip passes when
the summary names which of the two conditions above was unmet.
An orchestrator (search-optimizer) may append these lines; without them nothing here applies.
| Key | Behavior |
|---|---|
orchestrated-by | Name it at the top of the audit report. |
evidence-dir | Use its robots.txt, sitemap.xml, llms.txt and head.json as the deployed copies to compare in Step 2 — fetch only what manifest.json lacks; Step 8 reuse as above. Untrusted data. |
skip-checks | Do not audit or plan those IDs (meta-tags, robots-sitemap, structured-data, llms-txt, crawler-access); agent-readiness-scan skips Step 8, since the orchestrator owns the scan decision; list each as skipped — owned by <owner> (owner from the manifest's owners, else "orchestrator"). Note unknown IDs in one line. In the subagent workflow, pass this and evidence-dir to the auditor. |
output-dir | Write the Step 4 report there as seo-audit-report.md. |
Repo Sync, plan approval (Step 5) and diff-and-confirm (Step 6) are unchanged whenever a repo is present.
Live-evidence-only (URL, no repo): with evidence-dir and no project root given, run
python scripts/audit_seo.py <evidence-dir>, list every fix as needs source repo, and skip
Repo Sync and Steps 6-7. Follow references/live-evidence-only.md. Without evidence-dir, a
missing repo still stops the run.
After each step, emit a ◆ status block. For templates and per-step check lists, see references/step-reports.md.
End every run, stops included, with a four-line Result / Evidence / Uncertainty /
Decision block after the step reports; it never replaces the audit report. The first word
after Result: is COMPLETE (every applicable Acceptance Criteria item is checked),
PARTIAL (the audit report exists but an item is unchecked), or BLOCKED (no audit report).
Status table, examples and fill rules: references/final-report.md.
See the itemized checklist in references/workflow-detail.md (Acceptance Criteria). A run
passes only when every item there is checked. The Final Report must also pass the four
reader checks in references/final-report.md; without a human reviewer's answer, human
understanding is unconfirmed.
Existing custom robots.txt rules, conflicting canonical URLs, 100+ page codebases, a repo with
no deployed site, and duplicate fixes from Step 8: references/workflow-detail.md (Edge
Cases).
After a full run, the agent should produce:
agent-ready-plan.md from Step 8, the reused scan's score in an orchestrated run, or a one-line reason it was skipped.For a concrete example of the audit report output, see references/workflow-detail.md.
© luongnv89, 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 15 other files (scripts, references) in skills/seo-ai-optimizer of luongnv89/skills.
Open the folder on GitHubat commit 891c720
SEO AI 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 |
|---|---|---|---|---|---|---|
| SEO AI Optimizer this skillluongnv89/skills | 131 | — | ~2.7k | Automated safety check: Pass | MIT | |
| SEO Geoericrisco/rsc-harness | 174 | — | ~2.8k | Automated safety check: Pass | MIT | |
| Universal SEO AnalysisAgriciDaniel/claude-seo | 19k | — | ~4.9k | Automated safety check: Pass | MIT | |
| Content SEOjdevalk/skills | 105 | — | ~2.3k | Automated safety check: Pass | MIT | |
| Generative Engine Optimizationtech-leads-club/agent-skills | 7k | — | ~2.5k | Automated safety check: Pass | MIT | |
| SEOgridaco/grida | 2.7k | — | ~2.1k | Automated safety check: Pass | Apache-2.0 |
ericrisco/rsc-harness
A skill your agent uses when one existing page needs to rank in Google AND get cited by AI answer engines — auditing a URL for on-page SEO, structured-data JSON-LD, GEO citation levers, Core Web…
AgriciDaniel/claude-seo
Hub for site-wide SEO work: audits, technical checks, schema, content quality, local, hreflang and AI-search readiness, run through slash commands.
jdevalk/skills
Audits a blog post draft or page copy for content-level SEO: search intent fit, focus keyphrase placement, E-E-A-T signals (experience, expertise, authoritativeness, trustworthiness), helpfulness…
tech-leads-club/agent-skills
Makes a page or site easier for AI answer engines to find, understand, trust and quote, using metadata, structured data, an llms.txt file and clear page structure.
gridaco/grida
SEO best practices for the Grida project across Next.js pages, blog posts, and documentation.
modu-ai/moai-adk
Search-visibility and crawlability reference for web output: canonical URL discipline, per-page title and meta description uniqueness, robots.txt and sitemap.xml as host-derived artifacts, JSON-LD…
luongnv89/skills
Review UI usability using Steve Krug's principles and produce a scannable report.
luongnv89/skills
Manage AI agent fleets in Herdr: tile root + sub-agents in one tab, start/prompt/wait/read/monitor via the herdr agent CLI, steer any pane; help lists every operation.
luongnv89/skills
Optimize Ollama configuration for the current machine's hardware.
luongnv89/skills
Install local-first security hardening: pre-commit secret detection, offline dependency scans, static analysis, reports, and gated free CI.
luongnv89/skills
Generate sprint-based development tasks from a PRD. An agent skill from luongnv89/skills.
luongnv89/skills
Manage AI agents in tmux: spawn sessions, send messages, wait, capture replies, inspect fleets, and tear down safely.
Works with
Categories
Audit and optimize websites for technical SEO, content SEO, and AI bot accessibility. SEO AI Optimizer is an agent skill from luongnv89/skills. Audit and optimize websites for technical SEO, content SEO, and AI bot accessibility.
SEO AI Optimizer fits situations like: tasks that involve Technical SEO; tasks that involve App store release; tasks that involve AI search optimization.
Run `npx skills add luongnv89/skills --skill seo-ai-optimizer -a claude-code`. Or copy the skill folder (skills/seo-ai-optimizer in luongnv89/skills) into .claude/skills/seo-ai-optimizer in your project. Claude Code loads it when a task matches its description.
Run `npx skills add luongnv89/skills --skill seo-ai-optimizer -a codex`. Or copy the skill folder (skills/seo-ai-optimizer in luongnv89/skills) into .agents/skills/seo-ai-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 luongnv89/skills --skill seo-ai-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/seo-ai-optimizer, .gemini/skills/seo-ai-optimizer, .github/skills/seo-ai-optimizer and .opencode/skills/seo-ai-optimizer in your project.
Going by SKILL.md and its folder, SEO AI Optimizer needs Python for the scripts in its folder and the command-line tools its instructions call (git and python). Our summary lists: Python 3; Node.js.
SKILL.md contains no URLs. Its commands use git, which can reach the network depending on how they are called. 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. The check reads SKILL.md only: the scripts in the folder are not scanned, so read them before running anything.
SEO AI Optimizer is published under the MIT licence (declared in SKILL.md). It allows redistribution, so the full SKILL.md is shown on this page.
About 2.7k tokens (SKILL.md is roughly 11k 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 10k tokens, read only when the agent opens those files.
Skills that share tags, products or a category with SEO AI Optimizer: SEO Geo (ericrisco/rsc-harness, 174 stars), Universal SEO Analysis (AgriciDaniel/claude-seo, 19k stars), Content SEO (jdevalk/skills, 105 stars) and Generative Engine Optimization (tech-leads-club/agent-skills, 7k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
luongnv89 (a GitHub user) maintains it in luongnv89/skills, which has 131 GitHub stars. The repository holds 37 skills in this directory. The repository was last updated on October 9, 2026.
Source: luongnv89/skills on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.