XuanRanL
UserProduction-grade SEO + GEO content factory for Claude Code — research, write, fact-check, optimize, publish to WordPress, monitor. Battle-tested by Loamwright 沃匠 SEO agency.
Categories
Indexed Skills (42)
website-audit
Full website SEO audit — crawls up to 500 pages, detects business type, spawns up to 15 parallel specialist agents (8 always + 7 conditional), generates SEO Health Score (0-100) with enterprise HTML report. Completely standalone — not connected to the blog-writer pipeline. Triggers on: audit my site, website audit, full SEO check, site health, analyze my website, SEO analysis, technical SEO audit, or any URL + audit intent. Use whenever user mentions 'audit', 'check my site', 'SEO health', 'website analysis', or provides a URL asking for SEO evaluation.
weekly-digest
Production weekly industry-news digest: harvest Tier-A + Tier-B sources, assemble a digest article, publish as DRAFT, await explicit publish. Triggers on /weekly, 'industry weekly digest', 'weekly roundup', 'weekly report', '行业周报', '每周简报'. NOT a general article — does NOT run keyword-research/SERP/competitor stages.
fact-check-and-citation
Verify every statistical claim by fetching cited URLs + checking the data appears on the page. Crossref-first for academic; Tavily-fallback for industry. Replaces fabricated/unsourced stats. Builds APA 7 References block, ≤10 entries, all link-resolvable. The single most important anti-hallucination gate in the pipeline. Use after section-drafter (before humanizer if humanizer might break citations) or after humanizer (preferred — humanizer doesn't touch quoted material).
batch-article
Run /article end-to-end for a list of keywords. Each keyword goes through the FULL pipeline (research → plan → build → optimize → publish → monitor baseline). Use for agency-scale operations — drop 10-500 keywords, get 10-500 published articles. Resumable across sessions.
cost-estimator
Pre-flight cost estimate for a planned /article run. Use BEFORE /article or when user asks "how much will this cost?" / "what's the estimate?". Outputs USD breakdown by category + 80% confidence band + budget check.
cost-summary
Aggregate past spending (day/week/month) — total USD, per-model, per-endpoint. Use when user runs /cost or asks "how much have I spent?" / "what's my burn?" / "show me the bill".
resume
Resume an interrupted /article pipeline from its last checkpoint. Reads workspace state.json + verifies artifacts, decides whether to re-run the failing stage or jump forward. Use when /status shows a stuck task, network blip, OpenAI Batch wait, laptop sleep, etc.
rewrite
Rewrite + optimize an existing published article. 6-phase workflow (Audit → Research → Chart Gen → Content Rewrite → Verification → Summary). Preserves author voice while applying 6 pillars ��� fabricated stat replacement, answer-first formatting, AI-detection scrubbing, citation capsule injection, freshness signals, information gain markers. Use /rewrite <file> for full rewrite OR /update <file> for freshness-only refresh.
status-reporter
Show current pipeline state — in-progress tasks, current stage, elapsed time, accrued cost, ETA. Use when user runs /status or asks "what's the pipeline doing right now" or "is anything still running". Read-only — does not modify state.
wordpress-category-setup
Design and deploy a WordPress blog category taxonomy (top-level categories + subcategories) with descriptions, slugs, and RankMath SEO meta. Three modes — interactive (design from scratch with the user), apply (deploy an existing categories-config.json), refresh (re-sync to live site). Use when user runs /setup-categories, when /init asks about content architecture, or when a project is preparing to publish its first articles and needs the topical-authority foundation. Triggers on "setup categories", "category architecture", "blog taxonomy", "category SEO", "/setup-categories".
youtube-embed
PARKED (2026-07-17 wiring audit) — its trigger `brief.embed_youtube=true` is set and read by NOTHING in the repo, so this add-on can never fire. Searches YouTube Data API for primary keyword, picks 1-2 high-relevance videos (viewCount/duration/channel auth filtered), embeds into article.
entity-optimizer
PARKED (2026-07-17 wiring audit) — designed but never wired; nothing routes here and its companion agents/entity-extractor.md is equally unreachable. Track 47 entity signals per entity (per seo-geo). Maintains ai_resolution_status per engine (recognized/partial/unrecognized/confused). The ONLY skill that writes to memory/entities/.
phase-build
Run Phase Build — section drafting (N parallel agents), fact-check, citation injection, assembly. Use when research.json and outline.json exist and need to write the actual article body. Triggered by /seo-blog build, "draft the article now", "write the body".
phase-monitor
Run Phase Monitor — rank tracking, AI visibility tracking, drift detection, content refresh signals, performance reporting. Use for post-publish monitoring or scheduled checkup. Triggered by /seo-blog monitor, /perf, /rank-check, /drift, /ai-visibility, or as automated scheduled hook (T+7/14/30/90 after publish).
phase-optimize
Run Phase Optimize — humanize, meta build, schema, internal link, GEO optimize, visual design, CTA module + deterministic lint gates (render / density / keyword / PAA alignment / locale spelling / local uniqueness) + 4 quality gates + repair escalation. Use when draft.md exists and needs polish + quality assurance. Triggered by /seo-blog optimize, /audit, "run quality checks", "make this ready to publish".
phase-research
Run Phase 1 Research only — keyword research, SERP analysis, competitor analysis, content gap analysis, surface targeting. Use when user wants research-only output without writing an article. Triggered by /seo-blog research, "research this keyword", "what's the SERP for X", "competitor analysis for".
seo-blog
Production-grade SEO + GEO content factory. Routes user intent to one of 5 phases (research / build / optimize / publish / monitor) or runs end-to-end. Use whenever the user wants to write a blog post, create SEO/GEO-optimized articles, refresh existing content, audit a page, or publish to WordPress. Always trigger when user mentions "blog", "article", "content", "SEO", "SERP", "AI search", "ChatGPT visibility", "Google AIO", "Perplexity", "rank", or supplies a topic + keyword combination. Also triggers on URL + write intent.
outline-architect
Designs H2/H3 outline with explicit per-section word budgets, table placements (≥2 with one in front 50%), image/video slot markers, FAQ count, abstract seed, takeaways seeds, Citation Capsule requirement per H2. Loads format-specific template. Critical pre-build step. Use whenever building an article — after format + angle picked, before section-drafter parallel dispatch.
section-drafter
Dispatches N writer agents in parallel, one per H2 section, each receiving an isolated context with section spec + style references + research brief slice. Writes each section to workspace/{task}/sections/{N}.json conforming to section.schema.json. Critical Build phase step. Use after outline-architect produces outline.json.
topic-angle-selector
Within the chosen format, generates 6 title candidates across ≥3 angles, validates each via title_validator.py, scores CTR potential, picks top-1. Required step before outline-architect. Use whenever planning to write — happens after format-selector and before outline.
repair-orchestrator
5-level repair escalation when quality gates fail. Surgical → Section-rewrite → Stage-rewrite → Full-regen → From-scratch. Hard cap 4 rounds total. Use when quality.json reports overall_passed=false OR reviewer rejects. Last line of defense before declaring an article unsalvageable.
batch-job-poller
Supplemental recovery tool for orphan official-OpenAI image batches (batch is only ever used on the official-OpenAI fallback path; the primary openclawroot relay has no Batch API). The canonical image flow (openai-image-generator) runs realtime and does not require this skill. Use only to diagnose stuck batches or download images from a batch that completed after the main pipeline gave up.
image-curator
Produces image_metadata.json with all 4 WordPress media fields (title, alt_text, caption, description) per image slot. Runs AFTER image generation and BEFORE WordPress upload. Without this, captions and descriptions are empty in the media library and figcaptions never render in posts. Stage 27f of phase-publish image sub-pipeline.
image-prompt-designer
Build shared Art Direction Prefix + per-slot 9-field prompts for 4 images. Uses Strategy A (shared prefix; per-slot variation). Reads brand-identity, brand-config, format_id. Produces image-prompts.json for openai-image-generator. Stage 27b.
image-slot-allocator
Decide 4 image slots per article (1 cover + 3 section images). Reads outline.json + format_id. Picks H2s to image based on per-format mapping in references/image/format-style-mapping.md. Triggered as Stage 27a of phase-publish image sub-pipeline.
website-project-init
Initialize a new website project from a URL. FIRST asks the user for all required credentials (Anthropic / Tavily / OpenAI / WordPress App Password / brand config), then deep-scans the site (40 pages with 5-tier JS fallback waterfall), generates projects/{slug}/ archive (business-context, brand identity, competitors, GEO baseline, personas, target keywords). Use when user provides a URL + wants to set up a new client / new site, runs /init, or supplies just a domain with no other task. Triggers on URLs not yet in projects/.
content-refresher
Compute 0-100 decay score; trigger refresh workflow on aging articles. Score = 0.30×traffic + 0.25×rank + 0.15×ctr + 0.15×freshness + 0.15×replacement. Triggered by /refresh command or weekly schedule.
ai-overview-recovery
4-phase recovery when Google AI Overview drops an article. Measure damage → diagnose skip reason → rewrite → T+7/14/28 monitor. Triggered by drift-detector AIO loss alert OR /aio-recovery command.
chart-generator
Generate markdown tables OR XSS-safe SVG charts for sections with needs_table=true. Ensures ≥2 tables per article with ≥1 in front 50%. Uses scripts/build/chart_svg_builder.py.
citation-capsule-builder
After section-drafter, verifies each H2 has a Citation Capsule (40-60 word AI-quotable block). If missing, generates one. Princeton GEO requirement.
cost-guard
Budget enforcement. Estimate → check → log → summary. Daily total + per-init + per-article + per-image-batch caps from config.yaml. Triggered by every API call upstream.
manifest-consistency-checker
Verify VERSION + plugin.json + marketplace.json + install.sh + install.ps1 + CHANGELOG + __init__.py all agree on version. Auto-fix via --apply. Run via /guard --versions.
memory-manager
Manage HOT/WARM/COLD memory transitions, Wiki Phase 1/2/3 entity sedimentation, GDPR Art 17 purge. Triggered by hooks/stop_finalize.py + /forget-project command.
second-opinion
Cross-model audit via Gemini (review / challenge / consult modes). Defends against same-model self-bias. Used before high-impact decisions (publish gate, /init final review).
self-upgrade
9-step in-place upgrade from marketplace remote. Triggered by bin/update-check returning UPGRADE_AVAILABLE OR /upgrade command. Backs up old version + git fetch + version sync + cache purge + changelog summary.
project-forget
GDPR Art 17 delete. Tombstone projects/{slug}/, schedule physical deletion in 30 days. Use /forget-project <slug>. Cannot be undone after 30d.
project-list
List all projects/{slug}/ with status (fresh/stale/expired). Use /list-projects.
project-switch
Switch active project. Updates ~/.xuanran-seo/active-project pointer. All subsequent commands inherit new project's business-context. Triggered by /switch <slug>.
ai-visibility-tracker
Active probe of ChatGPT/PPLX/Claude/Gemini to check if our article is cited. Compares to projects/{slug}/geo-baseline.json. Triggered by /ai-visibility command or daily/weekly schedule.
performance-reporter
Aggregate 30+ KPIs across rank/ai-visibility/drift/refresh for time-period view (week/month/quarter). Outputs human-readable executive summary. Triggered by /perf command.
rank-tracker
Query GSC for impressions/clicks/position; T+7/14/30/90 post-publish baselines. Outputs projects/{slug}/rank-history-{date}.json. Triggered by /rank-check command or scheduled monitor.
project-show
Display current active project's PROJECT.md + brief stats. Use /show-project.
Bio shown is the top-scored skill's repo description as a fallback — real GitHub bios land in a future update.