Install
$ agentstack add skill-jakelabate-claude-seo-skills-internal-link-audit ✓ scanned · ✓ verified — works with Claude Code, Cursor, and more.
Security review
✓ PassedNo issues found. Passed automated security review. · v0.1.0 How review works →
- ✓ Prompt-injection patterns
- ✓ Secret / credential exfiltration
- ✓ Dangerous shell & filesystem operations
- ✓ Untrusted network calls
- ✓ Known-malicious package signatures
What it can access
- ✓ Network access No
- ✓ Filesystem access No
- ✓ Shell / process execution No
- ✓ Environment & secrets No
- ✓ Dynamic code execution No
From automated source analysis of v0.1.0. “Used” means the capability is present in the source — more access means more to trust, not that it’s unsafe.
About
Internal Link Audit
Audit the internal linking structure of a website and produce an actionable SEO report.
When to use this skill
Use this skill when the user asks to:
- Audit or analyze internal links on a website
- Find broken internal links or redirect chains
- Identify orphan pages (pages with no internal links pointing to them)
- Review anchor text quality for internal links
- Improve crawl depth, site architecture, or internal link equity distribution
Inputs to collect
Before starting, confirm with the user:
- Site URL or local files — a live site root URL (e.g.,
https://example.com), a sitemap URL, or a local folder of HTML files. - Scope — full site, a specific section (e.g.,
/blog/), or a list of URLs. - Crawl limits — max pages (default 500) and max depth (default 5) for live crawls.
Workflow
Step 1: Gather the page set
- If a sitemap is available (
/sitemap.xml), fetch it to get the canonical page list. - Otherwise, crawl from the homepage following only same-host links.
- For local HTML folders, enumerate all
.htmlfiles.
Use scripts/crawl_links.py to crawl a live site and extract all internal links into a JSON link graph:
python3 scripts/crawl_links.py https://example.com --max-pages 500 --max-depth 5 --output link_graph.json
Step 2: Build the link graph
For every page, record:
- Outgoing internal links: target URL, anchor text,
relattributes (nofollow), whether the link is in `/` or in main content - HTTP status of each target (200, 3xx, 4xx, 5xx)
- Page metadata: title, canonical URL, meta robots (
noindex,nofollow)
Step 3: Run the audit checks
Use scripts/analyze_graph.py to analyze the link graph:
python3 scripts/analyze_graph.py link_graph.json --output audit_report.json
Evaluate each check defined in references/audit-checks.md. The core checks are:
| Check | Severity | |---|---| | Broken internal links (4xx/5xx targets) | High | | Orphan pages (in sitemap but zero inbound internal links) | High | | Redirect chains and redirected internal links (3xx targets) | Medium | | Deep pages (click depth > 3 from homepage) | Medium | | Generic anchor text ("click here", "read more", bare URLs) | Medium | | Pages with excessive outgoing links (> 150) | Low | | Nofollow on internal links | Low | | Links to non-canonical or noindexed URLs | Medium | | Low inbound link count on important pages | Medium |
Step 4: Produce the report
Write a report following the structure in references/report-template.md:
- Summary — pages crawled, total internal links, issue counts by severity
- Issues — one section per failing check, listing affected source page, target page, anchor text, and a specific fix
- Opportunities — pages that deserve more internal links, suggested anchor text using target page keywords
- Prioritized action list — ordered by severity and estimated impact
Step 5: Recommend fixes
For each issue, give a concrete, copy-pasteable recommendation, e.g.:
- Replace the broken link
/old-pageon/blog/post-1with/new-page - Add 2–3 contextual links to the orphan page
/services/seo-auditfrom topically related pages - Change anchor text "click here" on
/aboutto descriptive text containing the target page's primary keyword
Optional: export the report
As a Word document (.docx)
If the user wants the report as a .docx (for example, to share with stakeholders or attach to a ticket), save the Markdown report to a file and convert it:
python3 scripts/md_to_docx.py report.md --output report.docx
scripts/md_to_docx.py uses only the Python standard library (no pip install) and renders headings, tables, lists, links, bold/italic, and code blocks. Offer this whenever a user asks for a Word doc, a .docx, or a shareable/downloadable report.
As a CSV of findings (.csv)
If the user wants the raw findings as a spreadsheet (for filtering, sorting, or triage in Sheets or Excel), convert the audit's audit_report.json directly:
python3 scripts/findings_to_csv.py audit_report.json --output findings.csv
scripts/findings_to_csv.py is also standard-library only. It writes one row per finding, with check and severity columns prepended and list fields (e.g. the pages sharing a duplicate value) joined with ; . Unlike the .docx, which reformats the written report, the CSV is a direct dump of the structured findings — offer it whenever a user wants the data itself, a spreadsheet, or to slice findings by check or severity.
Resources
scripts/md_to_docx.py— convert the Markdown report into a Word (.docx) document (standard library only)scripts/findings_to_csv.py— flatten the audit findings JSON into a CSV, one row per finding (standard library only)references/audit-checks.md— full definitions, thresholds, and rationale for every audit checkreferences/report-template.md— report output structurescripts/crawl_links.py— crawl a site and build the internal link graphscripts/analyze_graph.py— run audit checks against a link graph JSON file
Source & license
This open-source skill is cataloged on AgentStack and links to its original source — we do not rehost the code.
- Author: JakeLabate
- Source: JakeLabate/Claude-SEO-Skills
- License: MIT
- Homepage: https://www.jakelabate.com/claude-seo-skills/
Install and usage instructions live in the source repository linked above.
Reviews
No reviews yet — be the first.
Write a review
Versions
- v0.1.0 Imported from the upstream source.