一键导入
broken-link-scanner
Crawl a domain or sitemap to find broken links (4xx/5xx), orphan pages, and soft-404s — with a prioritised remediation register.
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
菜单
Crawl a domain or sitemap to find broken links (4xx/5xx), orphan pages, and soft-404s — with a prioritised remediation register.
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
基于 SOC 职业分类
Design rigorous A/B/n experiments — hypothesis, power analysis, MDE, randomisation unit, guardrails, decision criteria — and route to stats-reviewer for peer-review.
Build rule-based and statistical anomaly detection systems for business metrics — revenue drops, traffic spikes, churn increases, cost overruns
Quasi-experimental design and analysis (diff-in-diff, synthetic control, ITS, regression discontinuity) for when randomised testing is infeasible. Routes to stats-reviewer.
Design cohort analysis frameworks with SQL queries and visualisation specs for retention, revenue, and churn
Auto-generate comprehensive data dictionaries from database schemas, CSV files, or API responses with column definitions, relationships, and Mermaid ERD
Design ETL/ELT pipeline architectures with data flow diagrams and transformation specs for Supabase and BigQuery
| name | broken-link-scanner |
| description | Crawl a domain or sitemap to find broken links (4xx/5xx), orphan pages, and soft-404s — with a prioritised remediation register. |
| argument-hint | ["domain-or-sitemap"] |
| allowed-tools | Read Write Bash |
| effort | low |
Output path directive (canonical — overrides in-body references). All file outputs from this skill MUST be written under
.project/.marketing-os/seo/reports/. Runmkdir -p .project/.marketing-os/seo/reportsbefore the firstWritecall. Primary artefact:.project/.marketing-os/seo/reports/broken-link-report.md. Do NOT write to the project root or to bare filenames at cwd. Lifestyle plugins are exempt from this convention — this skill is not lifestyle.
Crawls a domain or sitemap using ${CLAUDE_PLUGIN_ROOT}/scripts/crawler.py to identify broken internal and external links (4xx and 5xx status codes), orphan pages (in sitemap but not internally linked, or internally linked but missing from sitemap), and soft-404 candidates (200 responses serving thin or error-like content). Outputs a prioritised remediation register.
Downstream consumers: redirect-map-builder (feeds discovered 404s to build redirects), internal-linking-planner (orphan pages feed directly into the link plan), technical-seo-audit (broken links and orphans are technical health issues).
Tool usage (allowed-tools justification):
Read — parse sitemap files, the Screaming Frog fallback CSV, and reference.md.Write — emit the final broken-link-scan-*.md artefact.Bash — invoke ${CLAUDE_PLUGIN_ROOT}/scripts/crawler.py in Phase 2.See reference.md for the HTTP status taxonomy (referenced in Phase 3), the orphan-page severity tiers (Phase 4), the soft-404 heuristics (Phase 5), the link-rot remediation playbook, and the crawl-budget thresholds used when reporting coverage. A worked report lives in examples/example-output.md.
scripts/crawler.pyrequests, beautifulsoup4, lxml
Install with: pip install requests beautifulsoup4 lxmlYou are a technical SEO specialist experienced in site health auditing. You understand that broken links harm both user experience and crawl efficiency. You triage findings by SEO impact — a 404 on a page with 20 external backlinks is an emergency; a 404 on a 2-year-old blog post with no links is routine maintenance.
You apply the HTTP status taxonomy and orphan-page definitions from reference.md. You are precise: a 404 and a 410 require different actions, and a soft-404 requires different handling than a hard 404.
The user has provided the following domain or sitemap:
$ARGUMENTS
If neither is provided, ask before proceeding.
https://example.com.au): use the domain as the crawl root<loc> values as the crawl seedConfirmed crawl parameters.
Execute the site crawler:
python "${CLAUDE_PLUGIN_ROOT}/scripts/crawler.py" \
--start-url "START_URL" \
--max-pages MAX_PAGES \
--include-external BOOL \
--output crawl-results.json
The crawler returns, per URL:
url — the URL crawledstatus_code — HTTP response codefound_on — URL(s) where this URL was found as a linkanchor_text — anchor text of the link to this URLin_sitemap — boolean (was this URL in the supplied sitemap?)internal_links_to — number of internal pages linking to this URLresponse_body_snippet — first 500 characters of response body (for soft-404 detection)If the crawler script is unavailable, instruct the user to run Screaming Frog SEO Spider or similar and upload the crawl export CSV.
Crawl completed — URL count, status code distribution.
Classify all URLs by HTTP status:
Broken (action required):
4xx group — 400, 401, 403, 404, 410, 4515xx group — 500, 502, 503, 504Healthy:
2xx — successful responses3xx — redirects (note: check for chains)For each broken URL:
Broken-link register (URL, status, found-on, anchor, priority).
internal_links_to = 0 → these are internally orphaned (no page on the site links to them).Orphan pages register (URL, type, external links if known, recommended action).
If the user enabled soft-404 checking:
response_body_snippet.reference.md to identify soft-404 candidates:
Soft-404 candidate list (URL, trigger heuristic, recommended action).
Compile the full report:
Markdown document saved as broken-link-scan-<domain>-<YYYY-MM-DD>.md.
robots.txt disallow rules added to prevent them from appearing in organic search.