aaron-he-zhu/seo-geo-claude-skills
20 SEO & GEO skills for Claude Code, Cursor, Codex, and 35+ AI agents. Keyword research, content writing, technical audits, rank tracking. CORE-EEAT + CITE frameworks.
📦 Highlights
- Command surface 17 → 5 *(breaking)*: `/aaron:auto`, `/aaron:research`, `/aaron:create`, `/aaron:audit`, `/aaron:track` (former `max` → `auto --deep`; mode flags like `--meta` / `--schema` / `--alert` / `--report` preserved). Paste any old `/seo:*` or prior command into `/aaron:auto` to recover its route.
- Authoring-quality pass across all 20 skills: narrower `description` triggers, explicit scope boundaries ("not for X — use Y"), verifiable `Done when` criteria, Decision Gates (stop-vs-continue), and a uniform Measured / User-provided / Estimated data-honesty rule.
- Bundled zero-dependency connectors (`scripts/connectors/`): Python-stdlib-only helpers (no pip) that pull public or own data locally — crawl, on-page, robots/sitemap, link-graph PageRank, PageSpeed/CrUX, schema lint, Wikidata/Knowledge-Graph reconcile, Wayback, Open PageRank, Google Suggest, RSS. Six skills wire to a matching helper in their Data Sources; all still run tool-free at Tier 1. Fetched content is treated as data, never instructions.
- Generic distribution: one root `marketplace.json` + its `.claude-plugin/` mirror (per-vendor manifests + publishing CI removed).
📦 Kept
- All 20 skills, the CORE-EEAT + CITE frameworks, the `evals/` quality cases, `scripts/validate-skill.sh`, and HOT/WARM/COLD project memory.
📦 Install
- Claude Code: `/plugin marketplace add aaron-he-zhu/seo-geo-claude-skills`
- Any Agent Skills host: `npx skills add aaron-he-zhu/seo-geo-claude-skills`
- Full changelog: https://github.com/aaron-he-zhu/seo-geo-claude-skills/blob/main/VERSIONS.md
📦 Acknowledgements
- External contributor credit for work landed during the v9.x cycle:
- @xiaolai ([PR #10](https://github.com/aaron-he-zhu/seo-geo-claude-skills/pull/10)): `fix(contract-lint): add allowed-tools to enable hash verification` — surfaces as `allowed-tools` settings on the new `/aaron:guard` / `/aaron:evolve` / `/aaron:skillify` commands.
- Bug-report credit:
- @Repleno ([issue #14](https://github.com/aaron-he-zhu/seo-geo-claude-skills/issues/14)): Stop hooks infinite-loop report. Fixed by replacing interactive Stop prompts with a silent allow-only check.
- @Kwat73 ([issue #8](https://github.com/aaron-he-zhu/seo-geo-claude-skills/issues/8)): Windows `marketplace.json` symlink breakage. Fixed by replacing the symlink with a real file kept byte-identical via `.github/scripts/sync-skills.js`.
- @stufently ([issue #18](https://github.com/aaron-he-zhu/seo-geo-claude-skills/issues/18)): SessionStart prompt-type hook `ToolUseContext` bug (upstream [anthropics/claude-code#48508](https://github.com/anthropics/claude-code/issues/48508)). Fixed by replacing all `type:"prompt"` hooks with `type:"command"` hooks that emit `additionalContext` via stdout JSON.
💥 `/aaron:*` command architecture (breaking rename)
- Public command API renamed from `/seo:*` to `/aaron:*`. 20 commands total (17 user + 3 governance).
- New user commands: `/aaron:auto`, `/aaron:max`, `/aaron:discover`, `/aaron:compete`, `/aaron:map`, `/aaron:brief`, `/aaron:series`, `/aaron:refresh`, `/aaron:publish`, `/aaron:visibility`, `/aaron:remember`.
- Governance commands: `/aaron:guard`, `/aaron:evolve`, `/aaron:skillify`.
- Not sure which to use? `/aaron:auto` infers intent and routes to the smallest useful workflow. Paste old `/seo:*` commands into `/aaron:auto` for recovery.
📦 Wiki Knowledge Layer (Phase 1 → 3)
- Multi-session memory layer for sustained campaigns:
- Phase 1: auto-refreshed structured index of WARM memory files.
- Phase 2: compiled pages with SHA-256 source hashes + conversational `(a)/(b)/(s)/(i)` contradiction reconciliation.
- Phase 3: user-initiated WARM retirement to COLD with full rollback recovery via `originally_at` reverse link.
- New `/aaron:remember` slash command for non-technical users — trigger phrases like `recover wiki` / `恢复wiki` / `undo last retire` run the recovery script for you, no shell needed.
- Bulk + force-retire flows for users with large WARM backlogs (day-cap of 20/UTC-day still enforced).
📦 GDPR + privacy hardening
- PII compile guardrail: heuristic detection of natural-person entities; surfaces GDPR Art 5(1)(c) data-minimization warning before compile.
- Multi-project guardrail: pre-compile prompt when ≥2 distinct project slugs in hot-cache history.
- GDPR purge schema: canonical template with auditor-verifiable structure — never raw subject data; mechanical grep-count proof.
📦 Auditor improvements
- Severity-tier routing (B3): `content-quality-auditor` and `domain-authority-auditor` now group findings by Critical / Should-fix / Nice-to-have rather than flat lists.
- 31 eval cases under `evals/memory-management/` covering retirement, recovery, contradiction reconciliation, GDPR, multi-project, PII, force-retire.
🐛 Security fixes
- R1 Symlink-pivot path-injection bypass in `scripts/recover-retired-warm.sh` — fixed via `pwd -P` resolution + symlink-ancestor walk. Live-reproducible attack closed.
- R2 SessionStart hook prompt-injection — untrusted text now treated as data, sanitized for newlines / control-bytes / backticks before display.
- Predictable-PID DoS in validator — `/tmp/INJECTION_*_$$` replaced with `mktemp -d` inside per-test `$TMPDIR`.
📦 Upgrade notes
- From v9.0.0: this is a breaking rename of the public command API (`/seo:*` → `/aaron:*`). Old commands are not runtime aliases. Paste old commands into `/aaron:auto` for recovery routing.
- From a retired v9.5.x / v9.9.x tag: those tags were retired during consolidation. Upgrade directly to v9.9.9; functional surface is a strict superset.
- From any local v10.x install: v10.x was an exploratory branch that was folded back into v9.9.9. Functional surface is identical to v10.1.4; the rename is purely version-stream hygiene.
📦 Line budget
- Counted lines: ~23555. Active waiver `WLB-2026-05-002` (baseline 24000, expiry 2026-08-12). CI exports `AARON_COMMAND_LINE_BUDGET_WAIVER=1` for v9.9.x release pipeline.
✨ Legal & Compliance (new)
- SECURITY.md scraping boundaries: robots.txt, CFAA, hiQ v LinkedIn / Meta v Bright Data precedents (accurate 2024 outcomes), EU DSM Art 4 TDM-reservation
- FTC 16 CFR §255.5 (Endorsement Guide) + 16 CFR Part 465 (2024 Consumer Reviews Rule) + 15 U.S.C. §45(m) penalties inflation-adjusted per 16 CFR §1.98
- GDPR Art 4/17 retention + deletion flow (memory-management); Art 6 lawful-basis prompt (entity-optimizer). Explicit EU/EEA/UK scope with CCPA/CPRA/PIPEDA/LGPD alternatives
- EU AI Act Art 53(1)(c) GPAI obligations with phased-application notes
- ADA/WCAG 2.2 AA alt-text rebalance + circuit-split disclaimer
- Schema aggregateRating truth warnings; Moz DA™ / Ahrefs DR™ trademark annotations
- "Not legal advice" disclaimer on README + SECURITY.md + scoring-rubric
✨ New Playbooks (directly usable)
- `ai-overview-recovery.md` — recovering traffic after losing Google AI Overview citation
- `bulk-audit-playbook.md` × 2 — site-wide batch workflows (on-page + technical)
- `ecommerce-platform-patterns.md` — Shopify/WooCommerce/Headless/BigCommerce/Magento
- `pre-migration-playbook.md` — 6-stage WordPress → Headless migration
- `llm-crawler-handling.md` — GPTBot/ClaudeBot/Gemini/Perplexity robots patterns
- `entity-geo-handoff-schema.md` + `geo-score-feedback-loop.md` — inter-skill contracts
✨ New user command
- `/seo:geo-drift-check` (experimental) — validates GEO Score prediction against actual AI-engine citations. Pure-markdown command with prompt-injection guard, YAML escaping, duplicate-URL tiebreaker, and v9.3 sunset clause
✨ New maintenance commands
- `/seo:sync-versions` — propagate canonical version across cross-agent manifests (replaces `scripts/sync-versions.py`)
- `/seo:validate-library` — library-level quality gate: description budgets, YAML field order, language coverage, duplicate triggers (replaces `scripts/validate-descriptions.py`)
📦 Native Install — 7 agents
- | Agent | Command |
- |-------|---------|
- | Claude Code | `/plugin marketplace add aaron-he-zhu/seo-geo-claude-skills` |
- | OpenClaw | [clawhub.ai/plugins/aaron-seo-geo](https://clawhub.ai/plugins/aaron-seo-geo) |
- | Gemini CLI | `gemini extensions install https://github.com/aaron-he-zhu/seo-geo-claude-skills` |
- | Qwen Code | `qwen extensions install https://github.com/aaron-he-zhu/seo-geo-claude-skills` |
- | Amp | `amp skill add aaron-he-zhu/seo-geo-claude-skills` |
- | Kimi Code CLI | `kimi plugin install https://github.com/aaron-he-zhu/seo-geo-claude-skills.git` |
- + 2 more
📦 Content Quality
- 11 SKILL.md files trimmed to ≤350 lines per CLAUDE.md rule; execution detail moved to 9 new `references/instructions-detail.md` files. ~40% token footprint reduction on affected skills
- Handoff Summary template in all 18 non-auditor skills (20/20 coverage)
- Memory scaffolding: `glossary`, `decisions`, `open-loops`, `entities/candidates`, `geo-feedback/`
- GLOSSARY.md (12 library terms) linked from README + 5 localized docs
- Next Best decision trees embedded in 5 skills
- +39 i18n triggers in JA/KO/ES/PT; ES/PT diacritics restored (48 accented characters each)
- Language-switcher labels corrected: Espanol → Español, Portugues → Português
📦 Contract Hardening
- Cap rounding determinism (`math.floor` in Runbook §2)
- Runbook SHA256 alignment made six-way (source × 3 + block × 4)
- Next Best Skill cycle termination (verdict-conditional + visited-set in 5 skills)
- `class: auditor-output` frontmatter marker for hook field decoupling
- HOT tier identity unified (32 stale `CLAUDE.md` refs → `memory/hot-cache.md`)
- `gap_type` namespace disambiguation (entity vs audit)
- `approved_by` provenance cascade for `memory/decisions.md`
📦 Validators (all green)
- `validate-skill.sh` per-directory: 20/20 PASS
- `validate-skill.sh --status`: 20/20 version-consistent
- `/seo:validate-library`: 20/20 PASS
- JSON parse: 8/8 OK (all manifests + hooks)
- 622 GitHub absolute URLs verified resolvable
- Six-way SHA256 alignment across inlined Runbook §1-5
📦 History preservation
- Full commit-by-commit history of v9.0.0 development is preserved on:
- `backup/v9-quality-pass` branch (sad-northcutt multi-sprint quality pass)
- `release/v9.0.0` branch (agent-compat + merge + 4 reviewer iterations)
- [PR #6](https://github.com/aaron-he-zhu/seo-geo-claude-skills/pull/6)
- Main's history was intentionally consolidated to a single v9.0.0 commit on top of v8.0.0.
- ---
- Install: See [README § Installation](https://github.com/aaron-he-zhu/seo-geo-claude-skills#installation) for all 7 native commands.
📦 v8.0.0 — Unified Version Release
- Unifies all 20 skill versions to 8.0.0. Consolidates v7.0.0 (Wiki Knowledge Layer) and v7.1.0 (Auditor Runbook Inline Strategy) into a single coherent release.
📦 Highlights
- All 20 skills at 8.0.0 — no more split versions across research/build/optimize/monitor/cross-cutting
- Wiki Knowledge Layer — auto-refreshed structured index (`memory/wiki/`), project isolation, `/seo:wiki-lint`
- Auditor Runbook — single source of truth for handoff schema, cap arithmetic, guardrail negatives
- Critical Fail Cap — veto items (CORE-EEAT T04/C01/R10, CITE T03/T05/T09) now cap at 60/100
- Guardrail Negatives — years, numbered lists, qualifiers, and short acronyms treated as positive signals
- User-Facing Translation — no internal jargon in audit output
- 2 new commands — `/seo:contract-lint` (drift detection) and `/seo:p2-review` (deferred item evaluation)
- New reference files — `auditor-runbook.md`, `AUDITOR-AUTHORS.md`, `contract-fail-caps.md`, ADR convention
📋 Full Changelog
- See [VERSIONS.md](https://github.com/aaron-he-zhu/seo-geo-claude-skills/blob/main/VERSIONS.md) for detailed v7.0.0 and v7.1.0 changelogs included in this release.
📦 Wiki Layer Highlights
- Structured index (`memory/wiki/index.md`) — auto-refreshed compiled index with precise fields (score, 健康度, status, next_action, mtime)
- Project isolation — `memory/wiki/<project>/index.md` partitioned by hot-cache project field
- User-tier guidance — natural-language next-step prompts for light users; structured dashboards for power users
- `/seo:wiki-lint` command — 7-check health scan: contradictions, orphan pages, stale claims, missing pages, cross-references, HOT drift, hash mismatches
- Compiled pages — entity/keyword/topic pages with SHA-256 source hash and confidence-labeled contradiction reconciliation
- WARM retirement dry-run — `wiki-lint --retire-preview` lists candidates safely
- Safe rollback — `rm -rf memory/wiki/` reverts to pre-wiki behavior with zero side effects
📦 Infrastructure (accumulated since v6.0.0)
- `when_to_use` and `argument-hint` frontmatter on all 20 skills
- Hooks hardening (SessionStart, PostToolUse, Stop, FileChanged)
- Memory system: dual truncation, staleness protocol, frontmatter standard
- Community governance: SECURITY.md, CODE_OF_CONDUCT.md, CITATION.cff
- README redesign with 6-language localization
📦 Stats
- 20 skills · 10 commands · 11 hook prompts · 5 hook events
- Full wiki spec: [`references/proposal-wiki-layer-v3.md`](https://github.com/aaron-he-zhu/seo-geo-claude-skills/blob/main/references/proposal-wiki-layer-v3.md)
- ---
- 🤖 Generated with [Claude Code](https://claude.ai/claude-code)
✨ What's New in v6.0.0
- Consolidates v5.1.0, v5.2.0, and v5.2.1 into a single major release. All 20 skills updated to 6.0.0.
📦 Multilingual Triggers
- 750+ triggers across EN, ZH, JA, KO, ES, PT for all 20 skills
- Optimized for ClawHub and skills.sh marketplace discovery
📦 Shared Contract Upgrades
- Completion Status Protocol — `DONE` / `DONE_WITH_CONCERNS` / `BLOCKED` / `NEEDS_INPUT`
- Escalation Protocol — 3-fails → BLOCK; structured report format
- Anti-Slop Output Voice — 30 banned words, 8 banned phrases, style rules
📦 Core Skill Enhancements
- keyword-research: 8 named phases (Scope → Deliver) with quality bar table
- content-quality-auditor: Decision Gates with specific thresholds and numbered options
- seo-content-writer: AUTO-FIX vs ASK with `### Changes Made` before/after table
📦 Infrastructure
- `validate-skill.sh --status`: SPLIT detection + worktree path fix
- `validate-descriptions.py`: 180 UTF-8 byte budget
- `hooks.json`: audit staleness detection
📦 Marketplace
- All 20 descriptions ≤180 UTF-8 bytes — fully visible on ClawHub
- ---
- Install via [ClawHub](https://clawhub.ai/u/aaron-he-zhu) · [skills.sh](https://skills.sh/aaron-he-zhu/seo-geo-claude-skills)
✨ What's New
- Upgrades the library from 20 standalone skills into one shared operating system with automatic cross-skill coordination, persistent state, and protocol gates.
📦 Hook Automation
- 4 prompt-based hooks covering the full session lifecycle (SessionStart, UserPromptSubmit, PostToolUse, Stop)
- Session start auto-loads project memory; session end offers to save findings
- Content writing auto-triggers a quality audit recommendation
- Veto-level issues auto-save to hot cache — no user action needed
📦 Temperature Memory (HOT / WARM / COLD)
- HOT (80 lines, auto-loaded): project goals, hero keywords, active veto items
- WARM (200 lines/file, on-demand): audit summaries, research findings, content plans
- COLD (archive, unlimited): historical data, queried only when needed
- Automatic promotion on high reference frequency; demotion at 30/90 day staleness
📦 Protocol-Layer Gates
- `content-quality-auditor` → SHIP / FIX / BLOCK publish verdicts
- `domain-authority-auditor` → TRUSTED / CAUTIOUS / UNTRUSTED trust verdicts
- `entity-optimizer` → sole write authority for canonical entity profiles
- `memory-management` → Campaign Memory Loop with lifecycle management
📦 State Write-Through
- All 20 skills include a Save Results flow with user confirmation
- Veto issues (CORE-EEAT T04/C01/R10, CITE T03/T05/T09) auto-save to `memory/hot-cache.md`
📦 Trigger Widening
- All 20 skills add 3-4 everyday language triggers alongside professional SEO terms
- "check my page", "write me a blog post", "what did we decide last time" now trigger the right skill
📦 Unified Skill Contract
- Shared [skill-contract.md](https://github.com/aaron-he-zhu/seo-geo-claude-skills/blob/main/references/skill-contract.md) and [state-model.md](https://github.com/aaron-he-zhu/seo-geo-claude-skills/blob/main/references/state-model.md)
- Every skill exposes: When This Must Trigger, Quick Start, Skill Contract (Reads/Writes/Promotes), Next Best Skill
📦 Published Link Reliability
- All repo-internal relative links replaced with absolute GitHub links
- README badges, navigation, and cross-references updated
📦 Install
- | Your tool | Install |
- |-----------|---------|
- | OpenClaw | `clawhub install aaron-he-zhu/<skill-name>` — [browse all 20](https://clawhub.ai/u/aaron-he-zhu) |
- | Claude Code | `/plugin marketplace add aaron-he-zhu/seo-geo-claude-skills` (all 20) |
- | Cursor / Codex / Windsurf / other | `npx skills add aaron-he-zhu/seo-geo-claude-skills` (all 20) |
📦 Stats
- 59 files changed, +2,148 / −903 lines
- 20 skills, 9 commands — all names and slugs unchanged
- No executable code added — all hooks are prompt-based
📦 Summary
- ClawHub-first marketplace optimization with security fixes, vector search descriptions, and multi-ecosystem install documentation.
🐛 Security & metadata fixes
- Removed self-contradictory `metadata.openclaw` blocks from 9 skills (soft dependencies incorrectly declared as hard requirements)
- Fixed copy-paste error: alert-manager and performance-reporter had `primaryEnv: AMPLITUDE_API_KEY` (unrelated to their function)
- Added credential-optional statements to 11 skills with external tool integrations
- Added `homepage` field to all 20 SKILL.md frontmatters
📦 ClawHub search optimization
- Rewrote all 20 skill descriptions with natural language summaries prepended for vector search discovery
- Streamlined trigger phrases to 6-8 highest-frequency per skill
- Updated footer links to include GitHub, ClawHub, and skills.sh
📝 Documentation migration
- README: Replaced single-recommendation install with tool-based routing table (OpenClaw / Claude Code / Cursor+Codex+Windsurf)
- AGENTS.md: ClawHub moved to first position in ecosystem table
- CONTRIBUTING.md: Fixed template missing ClawHub and Vercel Labs; added `clawhub publish` flow
- CLAUDE.md: Added ClawHub and skills.sh marketplace links
📦 Infrastructure
- plugin.json homepage changed to GitHub repo URL (neutral, not tied to any marketplace)
- validate-skill.sh: Updated openclaw check logic
📦 Migration notes
- All existing install methods remain fully functional — `npx skills add`, `/plugin marketplace add`, and `git submodule` all work as before
- No skills added, removed, or renamed — all 20 skills at the same paths
- No breaking changes to skill content or behavior
📦 Install
- | Your tool | Install command |
- |-----------|----------------|
- | OpenClaw | `clawhub install aaron-he-zhu/<skill-name>` — [browse all 20](https://clawhub.ai/u/aaron-he-zhu) |
- | Claude Code | `/plugin marketplace add aaron-he-zhu/seo-geo-claude-skills` |
- | Cursor / Codex / Windsurf / other | `npx skills add aaron-he-zhu/seo-geo-claude-skills` |
📦 v3.0.0 — Spec Alignment Release
- Consolidates all post-2.0.0 changes into a single major release, aligned with three Anthropic reference standards:
- [plugin-dev](https://github.com/anthropics/claude-plugins-official/tree/main/plugins/plugin-dev)
- [skill-creator](https://github.com/anthropics/skills/blob/main/skills/skill-creator/SKILL.md)
- [financial-services-plugins](https://github.com/anthropics/financial-services-plugins)
📦 Plugin manifest (plugin-dev spec)
- Added `schemaVersion: "1.0.0"` and `id` fields
- Added `description` to all 9 commands and 20 skills in plugin.json and marketplace.json
- Restructured `hooks` and `mcpServers` to array format `[{event/id, path}]`
- Added `displayName`, `capabilities`, `metadata` blocks
- Added typed `parameters` to all 9 command files
- Fixed marketplace.json `source` path for Claude Code compatibility (closes #1)
📦 Skill format (skill-creator spec)
- Added top-level `version` field to all 20 SKILL.md frontmatters
- Added `compatibility` field to all 20 skills
- Added `allowed-tools: WebFetch` to 5 skills with live URL fetching
- Trimmed 7 SKILL.md files to ≤350 lines (extracted to `references/` subdirectories)
📦 Infrastructure (financial-services-plugins patterns)
- Added `CLAUDE.md` for Claude Code auto-loading context
- Added `hooks/hooks.json` scaffold
- Added `scripts/validate-skill.sh` CLI validation tool
- Added disclaimer section to README.md
- Moved `marketplace.json` from `.claude-plugin/` to repo root
📦 Install
- ```bash
- npx skills add aaron-he-zhu/seo-geo-claude-skills
- ```
📦 Highlights
- Full CORE-EEAT 80-item content quality audit framework
- CITE domain authority rating system
- skills.sh marketplace integration
- All 20 skills optimized and production-ready
📦 Skills (20)
- Research (4): keyword-research, competitor-analysis, serp-analysis, content-gap-analysis
- Build (4): seo-content-writer, geo-content-optimizer, meta-tags-optimizer, schema-markup-generator
- Optimize (4): on-page-seo-auditor, technical-seo-checker, internal-linking-optimizer, content-refresher
- Monitor (4): rank-tracker, backlink-analyzer, performance-reporter, alert-manager
- Cross-cutting (4): content-quality-auditor, domain-authority-auditor, entity-optimizer, memory-management
📦 Install
- ```bash
- npx skills add aaron-he-zhu/seo-geo-claude-skills@v1.0.0
- ```
