复制安装命令
用 Codex 或 Claude 安装复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它先审查 Skill 页面再帮你安装。
复制前请先查看来源、License 和安全提示。
Codex-first SEO analysis suite with 1 orchestrator skill, 26 specialist workflows, 24 TOML agent...
用 Codex 或 Claude 安装复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它先审查 Skill 页面再帮你安装。
复制前请先查看来源、License 和安全提示。
来源文件:README.md
Codex-first SEO analysis suite with 1 orchestrator skill, 26 specialist workflows, 24 TOML agent profiles, MCP/API extensions, deterministic headless runners, and premium audit report generation.
Codex SEO is a Codex-native port of AgriciDaniel/claude-seo, synchronized to upstream main at a9cf338 and adapted for Codex skills, Codex plugins, TOML agents, shared cache artifacts, and repeatable local/API execution.
It covers technical SEO, on-page analysis, content quality, E-E-A-T, schema markup, image optimization, sitemap architecture, Core Web Vitals, GEO/AEO for AI search, backlinks, local SEO, maps intelligence, Google APIs, semantic clustering, SXO, drift monitoring, e-commerce SEO, hreflang, FLOW prompts, DataForSEO, Firecrawl, and Gemini/nanobanana image workflows.
v1.9.6-codex.5.v1.9.6-codex.5.codex, codex-cli, codex-skills, seo, ai-seo, ai-search, technical-seo, generative-engine-optimization, core-web-vitals, schema-markup, local-seo, ecommerce-seo, content-strategy, google-search-console, dataforseo, mcp, python, automation, marketing-automation, open-source.curl -fsSL https://raw.githubusercontent.com/AgriciDaniel/codex-seo/v1.9.6-codex.5/install.sh | bash
Windows:
irm https://raw.githubusercontent.com/AgriciDaniel/codex-seo/v1.9.6-codex.5/install.ps1 | iex
git clone https://github.com/AgriciDaniel/codex-seo.git
cd codex-seo
bash install.sh
Windows:
git clone https://github.com/AgriciDaniel/codex-seo.git
cd codex-seo
powershell -ExecutionPolicy Bypass -File .\install.ps1
The installer copies the skill suite into ~/.codex/skills/, installs TOML agents into ~/.codex/agents/, creates a Python virtualenv at ~/.codex/skills/seo/.venv/, installs core runtime dependencies, attempts optional capability groups, and verifies the runtime.
CODEX_HOME=~/.codex \
CODEX_SEO_REPO=https://github.com/AgriciDaniel/codex-seo \
CODEX_SEO_REF=v1.9.6-codex.5 \
bash install.sh
| Variable | Purpose |
|---|---|
CODEX_HOME | Alternate Codex home. Defaults to ~/.codex. |
CODEX_SEO_REPO | Git URL, fork URL, or local repository path. |
CODEX_SEO_REF | Branch, tag, or commit. Defaults to v1.9.6-codex.5. |
CODEX_SEO_SKIP_PLAYWRIGHT_BROWSER=1 | Skip Chromium install for visual/PDF workflows. |
CODEX_SEO_PLAYWRIGHT_WITH_DEPS=1 | Ask Playwright to install system dependencies where supported. |
Restart Codex after installation. Then ask naturally; a /seo command is not required:
Do a full SEO check on https://example.com following best practices.
Review this page for schema, Core Web Vitals, image SEO, and AI search readiness.
Create an SEO strategy and content roadmap for a local dental clinic.
Command-style prompts also work:
/seo audit https://example.com
/seo technical https://example.com
/seo schema https://example.com
/seo dataforseo serp "best seo tools"
Codex SEO is designed as a Codex-first routing layer: the user can ask naturally, the orchestrator selects the right specialist workflow, and deterministic runners write repeatable artifacts instead of relying on invisible chat-only output.
%%{init: {"theme":"base","themeVariables":{"background":"#05080d","primaryColor":"#07131c","primaryTextColor":"#f5fbff","primaryBorderColor":"#00d7e6","lineColor":"#00d7e6","secondaryColor":"#06222a","tertiaryColor":"#ff9f1c","edgeLabelBackground":"#05080d","fontFamily":"Inter, ui-sans-serif, system-ui, sans-serif"}}}%%
flowchart LR
user["User prompt<br/>natural language or /seo"] --> orchestrator["skills/seo/SKILL.md<br/>main orchestrator"]
orchestrator --> cache[".seo-cache<br/>shared evidence"]
orchestrator --> skills["26 specialist<br/>SEO workflows"]
skills --> agents["24 TOML agents<br/>parallel analysis slices"]
skills --> scripts["scripts/<br/>deterministic runners"]
scripts --> output["output/<br/>Markdown, JSON, HTML, PDF"]
cache --> skills
class user,orchestrator accent
class cache,scripts data
class output output
classDef default fill:#07131c,stroke:#00d7e6,color:#f5fbff,stroke-width:1.4px
classDef accent fill:#10151a,stroke:#ff9f1c,color:#fff7ed,stroke-width:2px
classDef data fill:#06222a,stroke:#21e6c1,color:#ecfeff,stroke-width:1.5px
classDef output fill:#15101a,stroke:#ff9f1c,color:#fff7ed,stroke-width:1.8px
| Prompt | Purpose |
|---|---|
/seo audit <url> | Full site audit with specialist routing and premium report support |
/seo page <url> | Deep single-page SEO analysis |
/seo technical <url> | Crawlability, indexability, security, JavaScript, CWV |
/seo content <url> | E-E-A-T, helpfulness, readability, AI citation readiness |
/seo schema <url> | Structured data detection, validation, and JSON-LD generation |
/seo images <url> | Alt text, image weight, formats, metadata, image SERP opportunities |
/seo sitemap <url> | XML sitemap discovery, quality gates, generation guidance |
/seo geo <url> | AI Overviews, ChatGPT, Perplexity, llms.txt, citability |
/seo performance <url> | Core Web Vitals, Lighthouse-oriented performance signals |
/seo visual <url> | Screenshots, mobile rendering, above-the-fold analysis |
/seo plan <business-type> | Strategic SEO roadmap and content plan |
/seo programmatic <url> | Programmatic SEO risk and scale planning |
/seo competitor-pages <url> | Comparison and alternatives page opportunities |
/seo hreflang <url> | International SEO, locale validation, content parity |
/seo local <url> | Local SEO, GBP signals, NAP, citations, reviews |
/seo maps <command> | Geo-grid, GBP audit, review intelligence, local maps signals |
/seo google <command> | GSC, PageSpeed, CrUX, Indexing API, GA4 workflows |
/seo backlinks <url> | Backlink profile summary and source-tier detection |
/seo cluster <keyword> | SERP-based topic clustering and hub-spoke planning |
/seo sxo <url> | Search Experience Optimization, intent/page-type fit |
/seo drift baseline <url> | Capture an SEO baseline before changes |
/seo drift compare <url> | Compare current SEO signals against a baseline |
/seo ecommerce <url> | Product SEO, marketplace visibility, product schema |
/seo flow <stage> | FLOW framework prompts for Find, Leverage, Optimize, Win |
/seo dataforseo <command> | Live SERP, keyword, backlink, content, and AI visibility data |
/seo firecrawl <command> | JS-rendered crawling and site mapping via Firecrawl |
/seo image-gen <use-case> | OG images, hero images, product visuals, infographics |
Full command details live in docs/COMMANDS.md.
%%{init: {"theme":"base","themeVariables":{"background":"#05080d","primaryColor":"#07131c","primaryTextColor":"#f5fbff","primaryBorderColor":"#00d7e6","lineColor":"#00d7e6","secondaryColor":"#06222a","tertiaryColor":"#ff9f1c","edgeLabelBackground":"#05080d","fontFamily":"Inter, ui-sans-serif, system-ui, sans-serif"}}}%%
flowchart TD
request["Audit request"] --> detect["Detect site type<br/>business model and context"]
detect --> core["Core audit specialists"]
core --> technical["Technical"]
core --> content["Content"]
core --> schema["Schema"]
core --> sitemap["Sitemap"]
core --> geo["GEO / AI search"]
core --> images["Images"]
core --> performance["Performance"]
core --> visual["Visual"]
detect --> conditional["Conditional specialists"]
conditional --> local["Local / Maps"]
conditional --> backlinks["Backlinks"]
conditional --> google["Google APIs"]
conditional --> ecommerce["E-commerce"]
conditional --> drift["Drift"]
technical --> report["Unified SEO report"]
content --> report
schema --> report
sitemap --> report
geo --> report
images --> report
performance --> report
visual --> report
local --> report
backlinks --> report
google --> report
ecommerce --> report
drift --> report
report --> artifacts["SUMMARY.json<br/>FULL-AUDIT-REPORT.md<br/>ACTION-PLAN.md<br/>optional HTML/PDF"]
class request,detect accent
class core,conditional data
class report,artifacts output
classDef default fill:#07131c,stroke:#00d7e6,color:#f5fbff,stroke-width:1.4px
classDef accent fill:#10151a,stroke:#ff9f1c,color:#fff7ed,stroke-width:2px
classDef data fill:#06222a,stroke:#21e6c1,color:#ecfeff,stroke-width:1.5px
classDef output fill:#15101a,stroke:#ff9f1c,color:#fff7ed,stroke-width:1.8px
%%{init: {"theme":"base","themeVariables":{"background":"#05080d","primaryColor":"#07131c","primaryTextColor":"#f5fbff","primaryBorderColor":"#00d7e6","lineColor":"#00d7e6","actorBkg":"#07131c","actorBorder":"#00d7e6","actorTextColor":"#f5fbff","actorLineColor":"#21e6c1","signalColor":"#21e6c1","signalTextColor":"#f5fbff","labelBoxBkgColor":"#10151a","labelTextColor":"#f5fbff","noteBkgColor":"#10151a","noteTextColor":"#f5fbff","activationBkgColor":"#06222a","activationBorderColor":"#ff9f1c","fontFamily":"Inter, ui-sans-serif, system-ui, sans-serif"}}}%%
sequenceDiagram
participant Before as Baseline
participant Runner as Drift runner
participant After as Current page
participant Cache as .seo-cache
participant Report as Drift report
Before->>Runner: Capture titles, metas, canonicals, schema, headings
Runner->>Cache: Store baseline snapshot
After->>Runner: Re-check current SEO signals
Cache->>Runner: Load prior snapshot
Runner->>Report: Write changed, missing, and regressed signals
scripts/run_skill_workflow.py standardizes output for every user-invokable workflow.scripts/run_api_smoke_suite.py runs all supported workflows in one pass.| Extension | Skill | Setup | Notes |
|---|---|---|---|
| DataForSEO | seo-dataforseo, seo-maps, seo-ecommerce, seo-cluster | ./extensions/dataforseo/install.sh | Live SERP, keyword, backlinks, on-page, content, business data, AI visibility |
| Google APIs | seo-google, seo-performance | python scripts/google_auth.py --setup | PageSpeed, CrUX, GSC, URL Inspection, Indexing API, GA4 |
| Firecrawl | seo-firecrawl | ./extensions/firecrawl/install.sh | JS-rendered crawl, scrape, site map |
| Banana / Gemini | seo-image-gen | ./extensions/banana/install.sh | AI image generation through nanobanana-mcp |
Optional integrations enrich the same workflow surface. If credentials or MCP servers are missing, wrappers return setup_required or mcp_configured states with no fabricated live data.
%%{init: {"theme":"base","themeVariables":{"background":"#05080d","primaryColor":"#07131c","primaryTextColor":"#f5fbff","primaryBorderColor":"#00d7e6","lineColor":"#00d7e6","secondaryColor":"#06222a","tertiaryColor":"#ff9f1c","edgeLabelBackground":"#05080d","fontFamily":"Inter, ui-sans-serif, system-ui, sans-serif"}}}%%
flowchart LR
codex["Codex SEO workflows"] --> local["Local evidence<br/>HTML, robots, sitemaps, screenshots"]
codex --> dfs["DataForSEO MCP<br/>SERP, keywords, backlinks, maps"]
codex --> google["Google APIs<br/>GSC, PageSpeed, CrUX, GA4"]
codex --> firecrawl["Firecrawl MCP<br/>JS crawl and site maps"]
codex --> banana["Gemini / nanobanana<br/>SEO image assets"]
local --> artifacts["Reports and .seo-cache"]
dfs --> artifacts
google --> artifacts
firecrawl --> artifacts
banana --> artifacts
class codex accent
class local,dfs,google,firecrawl,banana data
class artifacts output
classDef default fill:#07131c,stroke:#00d7e6,color:#f5fbff,stroke-width:1.4px
classDef accent fill:#10151a,stroke:#ff9f1c,color:#fff7ed,stroke-width:2px
classDef data fill:#06222a,stroke:#21e6c1,color:#ecfeff,stroke-width:1.5px
classDef output fill:#15101a,stroke:#ff9f1c,color:#fff7ed,stroke-width:1.8px
Demo readiness:
python scripts/demo_readiness.py --target https://example.com --live-apis --workflows --json
One low-depth DataForSEO proof:
python scripts/demo_readiness.py --target https://example.com --live-apis --live-serp --serp-keyword "seo tools" --json
Run a single workflow:
python scripts/run_skill_workflow.py --skill seo-technical https://example.com --json
python scripts/run_skill_workflow.py --skill seo-google https://example.com --json
python scripts/run_skill_workflow.py --skill seo-dataforseo https://example.com --json
Run the full smoke suite:
python scripts/run_api_smoke_suite.py https://example.com --json
Verify environment:
python scripts/verify_environment.py --target https://example.com --json
Bootstrap a clean runtime:
python scripts/bootstrap_environment.py --venv .venv --json
Artifacts are written to output/. Shared project cache is written to .seo-cache/. Both are ignored by git.
%%{init: {"theme":"base","themeVariables":{"background":"#05080d","primaryColor":"#07131c","primaryTextColor":"#f5fbff","primaryBorderColor":"#00d7e6","lineColor":"#00d7e6","secondaryColor":"#06222a","tertiaryColor":"#ff9f1c","edgeLabelBackground":"#05080d","fontFamily":"Inter, ui-sans-serif, system-ui, sans-serif"}}}%%
flowchart LR
cli["run_skill_workflow.py<br/>single workflow"] --> json["JSON result"]
cli --> markdown["Markdown report"]
cli --> cacheWrite[".seo-cache update"]
suite["run_api_smoke_suite.py<br/>all workflows"] --> json
suite --> outputRoot["output/api-smoke-*"]
verify["verify_environment.py"] --> readiness["ready / setup_required<br/>capability status"]
markdown --> outputRoot
json --> outputRoot
cacheWrite --> cache[".seo-cache"]
class cli,suite,verify accent
class cacheWrite,readiness data
class json,markdown,outputRoot,cache output
classDef default fill:#07131c,stroke:#00d7e6,color:#f5fbff,stroke-width:1.4px
classDef accent fill:#10151a,stroke:#ff9f1c,color:#fff7ed,stroke-width:2px
classDef data fill:#06222a,stroke:#21e6c1,color:#ecfeff,stroke-width:1.5px
classDef output fill:#15101a,stroke:#ff9f1c,color:#fff7ed,stroke-width:1.8px
The repository separates Codex-facing instructions, deterministic runtime code, optional provider setup, and validation contracts. That keeps the skill system usable in chat, installable as a suite, and testable from CI/API workflows.
%%{init: {"theme":"base","themeVariables":{"background":"#05080d","primaryColor":"#07131c","primaryTextColor":"#f5fbff","primaryBorderColor":"#00d7e6","lineColor":"#00d7e6","secondaryColor":"#06222a","tertiaryColor":"#ff9f1c","edgeLabelBackground":"#05080d","fontFamily":"Inter, ui-sans-serif, system-ui, sans-serif"}}}%%
flowchart TB
manifest[".codex-plugin/plugin.json"] --> skillsRoot["skills/"]
skillsRoot --> orchestrator["seo/SKILL.md<br/>routing and orchestration"]
skillsRoot --> specialists["seo-*/SKILL.md<br/>specialist workflows"]
agentsDir["agents/seo-*.toml"] --> specialists
scriptsDir["scripts/<br/>deterministic runners"] --> specialists
extensionsDir["extensions/<br/>optional MCP setup"] --> specialists
references["skills/seo/references/<br/>thresholds and shared contracts"] --> specialists
specialists --> cacheDir[".seo-cache/<br/>cross-skill memory"]
specialists --> outputDir["output/<br/>reports and artifacts"]
testsDir["tests/<br/>contract and smoke coverage"] --> manifest
testsDir --> skillsRoot
testsDir --> scriptsDir
class manifest,orchestrator accent
class skillsRoot,specialists,agentsDir,scriptsDir,extensionsDir,references,testsDir data
class cacheDir,outputDir output
classDef default fill:#07131c,stroke:#00d7e6,color:#f5fbff,stroke-width:1.4px
classDef accent fill:#10151a,stroke:#ff9f1c,color:#fff7ed,stroke-width:2px
classDef data fill:#06222a,stroke:#21e6c1,color:#ecfeff,stroke-width:1.5px
classDef output fill:#15101a,stroke:#ff9f1c,color:#fff7ed,stroke-width:1.8px
codex-seo/
├── .codex-plugin/plugin.json # Codex plugin manifest
├── skills/
│ ├── seo/SKILL.md # Main orchestrator
│ └── seo-*/SKILL.md # 26 specialist workflows
├── agents/ # 24 Codex TOML agent profiles
├── scripts/ # Deterministic runners and API helpers
├── extensions/
│ ├── dataforseo/ # DataForSEO MCP setup and docs
│ ├── firecrawl/ # Firecrawl MCP setup and docs
│ └── banana/ # Gemini/nanobanana image generation setup
├── hooks/ # Quality-gate hooks
├── schema/ # Schema.org templates
├── docs/ # Architecture, commands, installation, MCP, demo
└── tests/ # Contract and workflow tests
Design principles:
skills/ is the source of truth.skills/seo/SKILL.md routes natural-language SEO requests.~/.config/codex-seo/ or ~/.codex/settings.json.claude-seo config/cache paths are read only as migration fallback.More detail: docs/ARCHITECTURE.md.
Local release gate:
python -m pytest tests/
bash -n install.sh uninstall.sh
python -m compileall -q scripts hooks
python scripts/run_api_smoke_suite.py https://example.com --json
PowerShell parse check:
$files = Get-ChildItem -Recurse -Filter *.ps1
foreach ($f in $files) {
$tokens = $null
$errs = $null
[System.Management.Automation.Language.Parser]::ParseFile($f.FullName, [ref]$tokens, [ref]$errs) > $null
if ($errs.Count) { $errs; exit 1 }
}
Current GitHub CI runs:
--help checks for runner scriptspython -m pytest tests/Codex SEO writes new local credentials and state to Codex-specific paths:
~/.codex/settings.json for MCP server configuration~/.config/codex-seo/ for API configs and cost ledgers~/.cache/codex-seo/ for runtime caches.seo-cache/ inside the active project for cross-skill summariesLegacy ~/.config/claude-seo/ and ~/.cache/claude-seo/ paths are read only as migration fallback. Do not commit .seo-cache/, output/, .mcp.json, .env, OAuth tokens, service accounts, or provider keys.
0600 file permissions.scripts/dataforseo_costs.py.bash uninstall.sh
Windows:
powershell -ExecutionPolicy Bypass -File .\uninstall.ps1
Use CONTRIBUTING.md for local setup and validation, CODE_OF_CONDUCT.md for project standards, SECURITY.md for vulnerability reporting, and CREDITS.md for project credits. Agent-facing project context is also available in llms.txt.
claude-seo - original Claude Code SEO skill suiteclaude-blog - blog creation and optimization skill ecosystemclaude-ads - paid advertising audit skill suiteflow - evidence-led SEO framework for AI searchwp-mcp-ultimate - WordPress MCP serverSpecial thanks to avalonreset for making the Codex conversion possible and for creating the initial Codex SEO version that this repository builds on.
Original project and concept by AgriciDaniel in claude-seo. This Codex port preserves upstream SEO capabilities and adapts the runtime for Codex skills, TOML agents, plugin discovery, cache sharing, MCP extension setup, and API-safe wrappers.
Codex SEO is released under the MIT License. FLOW prompt references retain their upstream attribution and licensing notices where included.
name: seo-backlinks
description: "Backlink profile analysis: referring domains, anchor text distribution, toxic link detection, competitor gap analysis. Works with free APIs (Moz, Bing Webmaster, Common Crawl) and DataForSEO extension. Use when user says backlinks, link profile, referring domains, anchor text, toxic links, link gap, link building, disavow, or backlink audit."
user-invokable: true
argument-hint: "<url>"
license: MIT
compatibility: "Free: Common Crawl + verify always available. Optional: Moz API, Bing Webmaster (free signup). Premium: DataForSEO extension."
metadata:
author: AgriciDaniel
version: "1.9.6"
category: seoStep 0 -- Check shared data cache:
Before gathering, check .seo-cache/ for reusable context from related SEO skills.
Reference: ../seo/references/shared-data-cache.md for schemas and dependency map.
Check these cache files when present:
.seo-cache/site-meta.json for domain, business type, industry, and crawl context
.seo-cache/audit-scores.json for prior full-audit priorities
.seo-cache/pages/{url-slug}/page-analysis.json for page-level context when a URL is provided
If found: parse and use clearly valid fields (note "Using cached [X] from [date]")
If missing, corrupt, or irrelevant: continue with fresh evidence
If the user says "refresh" or "re-run": ignore cache reads and overwrite on write
Before analysis, detect available data sources:
dataforseo_backlinks_summary tool is availablepython scripts/backlinks_auth.py --check moz --jsonpython scripts/backlinks_auth.py --check bing --jsonRun python scripts/backlinks_auth.py --check --json to detect all sources at once.
If no sources are configured beyond the always-available tier:
/seo backlinks setup to add free Moz and Bing API keys for richer data"| Command | Purpose |
|---|---|
/seo backlinks <url> | Full backlink profile analysis (uses all available sources) |
/seo backlinks gap <url1> <url2> | Competitor backlink gap analysis |
/seo backlinks toxic <url> | Toxic link detection and disavow recommendations |
/seo backlinks new <url> | New and lost backlinks (DataForSEO only) |
/seo backlinks verify <url> --links <file> | Verify known backlinks still exist |
/seo backlinks setup | Show setup instructions for free backlink APIs |
Produce all 7 sections below. Each section lists data sources in preference order.
DataForSEO: dataforseo_backlinks_summary → total backlinks, referring domains, domain rank, follow ratio, trend.
Moz API: python scripts/moz_api.py metrics <url> --json → Domain Authority, Page Authority, Spam Score, linking root domains, external links.
Common Crawl: python scripts/commoncrawl_graph.py <domain> --json → in-degree (referring domain count), PageRank, harmonic centrality.
Scoring:
| Metric | Good | Warning | Critical |
|---|---|---|---|
| Referring domains | >100 | 20-100 | <20 |
| Follow ratio | >60% | 40-60% | <40% |
| Domain diversity | No single domain >5% | 1 domain >10% | 1 domain >25% |
| Trend | Growing or stable | Slow decline | Rapid decline (>20%/quarter) |
DataForSEO: dataforseo_backlinks_anchors
Moz API: python scripts/moz_api.py anchors <url> --json
Bing Webmaster: python scripts/bing_webmaster.py links <url> --json (extract anchor text from link details)
Healthy distribution benchmarks:
| Anchor Type | Target Range | Over-Optimization Signal |
|---|---|---|
| Branded (company/domain name) | 30-50% | <15% |
| URL/naked link | 15-25% | N/A |
| Generic ("click here", "learn more") | 10-20% | N/A |
| Exact match keyword | 3-10% | >15% |
| Partial match keyword | 5-15% | >25% |
| Long-tail / natural | 5-15% | N/A |
Flag if exact-match anchors exceed 15% -- this is a Google Penguin risk signal.
DataForSEO: dataforseo_backlinks_referring_domains
Moz API: python scripts/moz_api.py domains <url> --json → domains with DA scores
Common Crawl: python scripts/commoncrawl_graph.py <domain> --json → top referring domains (domain-level, no authority scores)
Analyze:
DataForSEO: dataforseo_backlinks_bulk_spam_score + toxic patterns from reference
Moz API: Spam Score from python scripts/moz_api.py metrics <url> --json (1-17% scale, >11% = high risk)
Verification Crawler: python scripts/verify_backlinks.py --target <url> --links <file> --json (verify suspicious links still exist)
High-risk indicators (flag immediately):
Medium-risk indicators (review manually):
Load references/backlink-quality.md for the full 30 toxic patterns and disavow criteria.
DataForSEO: dataforseo_backlinks_backlinks with target type "page"
Moz API: python scripts/moz_api.py pages <domain> --json
Find:
DataForSEO: dataforseo_backlinks_referring_domains for both domains, then compare
Bing Webmaster (unique!): python scripts/bing_webmaster.py compare <url1> <url2> --json — the only free tool with built-in competitor comparison
Moz API: Compare DA/PA between domains via python scripts/moz_api.py metrics <url> --json for each
Output:
DataForSEO only: dataforseo_backlinks_backlinks with date filters for 30/60/90 day changes
Verification Crawler: For known links, verify current status with python scripts/verify_backlinks.py
Note: Free sources cannot track new/lost links over time. If this section is requested without DataForSEO, inform the user: "Link velocity tracking requires the DataForSEO extension. Free sources provide point-in-time snapshots only."
Red flags:
Calculate a 0-100 score. When mixing sources, apply confidence weighting:
| Factor | Weight | Sources (preference order) | Confidence |
|---|---|---|---|
| Referring domain count | 20% | DataForSEO > Moz > CC in-degree | 1.0 / 0.85 / 0.50 |
| Domain quality distribution | 20% | DataForSEO > Moz DA distribution | 1.0 / 0.85 |
| Anchor text naturalness | 15% | DataForSEO > Moz > Bing anchors | 1.0 / 0.85 / 0.70 |
| Toxic link ratio | 20% | DataForSEO > Moz spam score | 1.0 / 0.85 |
| Link velocity trend | 10% | DataForSEO only | 1.0 |
| Follow/nofollow ratio | 5% | DataForSEO > Bing details | 1.0 / 0.70 |
| Geographic relevance | 10% | DataForSEO > Bing country | 1.0 / 0.70 |
Data sufficiency gate: Count how many of the 7 factors have at least one data source available.
Backlink Health Score: INSUFFICIENT DATA (X/7 factors scored)
Show individual factor scores that ARE available with their source and confidence.
Recommend: "Configure Moz API (free) for a scoreable profile. Run /seo backlinks setup"When only CC is available, cap maximum score at 70/100. A numeric score with fewer than 4 data sources is misleading — it implies poor health when the reality is we simply lack data.
| Section | Status | Score | Data Source |
|---|---|---|---|
| Profile Overview | pass/warn/fail | XX/100 | Moz (0.85) |
| Anchor Distribution | pass/warn/fail | XX/100 | Moz (0.85) |
| Referring Domain Quality | pass/warn/fail | XX/100 | CC (0.50) |
| Toxic Links | pass/warn/fail | XX/100 | Moz Spam (0.85) |
| Top Pages | info | N/A | Moz (0.85) |
| Link Velocity | pass/warn/fail | XX/100 | DataForSEO only |
| Error | Cause | Resolution |
|---|---|---|
| No sources configured | No API keys, no DataForSEO | Run /seo backlinks setup |
| Moz rate limit | Free tier: 1 req/10s | Wait 10 seconds, retry. Built into script. |
| Bing site not verified | Site not verified in Bing | Verify at https://www.bing.com/webmasters |
| CC download timeout | Large graph file, slow connection | Use --timeout 180 flag |
| DataForSEO unavailable | Extension not installed | Run ./extensions/dataforseo/install.sh |
| No backlink data returned | Domain too new or very small | Note: small sites may have <10 backlinks |
Fallback cascade:
/seo backlinks setup to configure free APIs"Before presenting any backlink analysis to the user, run this checklist internally. Do NOT skip this step. Fix any issues found before showing the report.
@type for each block? If any @type is missing,
re-check — it may use @graph wrapper (valid JSON-LD, not malformed).unverifiable_js, say so — never
report a JS-rendered page as "link removed" (that's a false negative).h1_suspicious list? If so, note they are likely
counters/stats, not semantic headings.unverifiable_js (not link_removed)If ANY check fails, fix the finding before presenting. Never present inferred data as fact.
After completing any backlink analysis command, always offer:
"Generate a professional PDF report? Use /seo google report"
Load on demand (do NOT load at startup):
skills/seo/references/backlink-quality.md -- Detailed toxic link patterns and scoring methodology (shared reference, load when analyzing toxic links or spam scores)skills/seo/references/free-backlink-sources.md -- Source comparison, confidence weighting, setup guides (shared reference, load when configuring free backlink APIs)After completing all work, write a concise JSON summary to .seo-cache/ when the workflow produced durable findings.
Use the schemas and naming rules in ../seo/references/shared-data-cache.md; include at least cache_type, analyzed_at, source URL/domain, key findings, issues, recommendations, and tool limitations. Add .seo-cache/ to .gitignore if it is missing.
评论 (0)
暂无评论,成为第一个评论者吧!