seo-interlinking
Skill6 starsChanged 14 days agoMITView on GitHub
Audits internal linking on an existing site with Screaming Frog exports and GSC: orphan pages, click depth, over-optimized anchors and hub pages, with ranked link recommendations. Diagnosis only, it never edits WordPress. Use for "páginas huérfanas", "auditoría de interlinking" or "orphan pages". Not for planning new sites (site-architecture, seo-cluster).
In this repository40 other files it gives its agents.
- accesibilidad-wcagSkill
- cache-headersSkill
- canonicalSkill
- ccpaSkill
- core-web-vitalsSkill
- ga4-ai-trafficSkill
- ga4-analysisSkill
- geo-ai-discoverabilitySkill
- google-tag-managerSkill
- hreflangSkill
- image-optimizationSkill
- javascript-seoSkill
- ley-25326Skill
- ley-datos-chileSkill
- lfpdpppSkill
- lgpdSkill
- mineria-de-impresionesSkill
- nfadpSkill
- on-page-fundamentalsSkill
- prestashop-seoSkill
- privacidadSkill
- redirectsSkill
- rgpdSkill
- robots-txtSkill
- schema-markupSkill
- screaming-frogSkill
- semrushSkill
- seo-educacionSkill
- seo-gsc-diagnosticsSkill
- seo-negativoSkill
- seo-quoteSkill
- se-rankingSkill
- sitemapSkill
- ssl-httpsSkill
- third-party-scriptsSkill
- uk-gdprSkill
- ux-heuristicaSkill
- wordpress-diviSkill
- wordpress-elementorSkill
- wordpress-hidden-errorsSkill
The file
We split this skill into the rules it gives an agent
3 rules. About 0 are common, 2 are distinctive, and 1 is very specific to this project.
≈0
Common · estimate
Many files like this have a rule of this kind.
≈2
Distinctive · estimate
This author's own choices. Worth a look.
1
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Distinctive: line 55
If the user hasn't provided these files yet, ask for them before running the script -- do not guess file paths.
- Very specific: line 66
Read the JSON the script prints (summary, orphans, deep_pages, anchor_text_flags, hub_candidates).
- Distinctive: line 84
Stop there. Do not open the CMS, do not edit a post, do not call any WordPress ability to add the link -- hand the report back for the user …
≈ “Common” is an estimate: at least 1 in 5 of the 350,495 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
SEO Interlinking Audit -- Existing-Site Link Health
Diagnoses the internal-link graph of a site that already exists and already has content -- orphan pages, pages too deep to get crawled/prioritized, anchor-text over-optimization, and which high-authority pages could donate link equity to the weak ones found. Read-only: it never edits a post, never calls a WordPress write ability, and never inserts a link on its own.
This is the complementary skill to site-architecture and seo-cluster (which plan
new structure or new content clusters) and to seo-programmatic (which
covers templated pages generated at scale). This skill audits what is already live.
Quick Reference
| Command | What it does |
/seo-interlinking <all-inlinks.csv> <overview.csv> --home <url> | Full audit: orphans, click depth, anchor text, hub candidates |
add --gsc <gsc.csv> | Prioritizes every finding by real clicks/impressions instead of crawl data alone |
add --max-depth <n> | Override the click-depth threshold (default 4) |
add --anchor-repeat-threshold <0-1> | Override the anchor over-optimization threshold (default 0.8) |
Required inputs
Two Screaming Frog exports are needed -- not the same report. See
references/screaming-frog-export.md for exact menu paths if this needs explaining
to a client or a new session:
- All Inlinks (bulk export,
From/To/Anchor Textcolumns) -- this is the actual link graph. The "Internal" tab's ownInlinks/Outlinkscolumns are just counts, they cannot rebuild who-links-to-whom or the anchor text used. - Internal HTML (or "Internal All" filtered to HTML) --
Address,Indexability,Status Code-- used to restrict the audit to indexable, live, HTML pages.
GSC data is optional but strongly recommended -- without it, orphans/deep pages are
ranked only by crawl signals, not by whether Google already sends them traffic. Export
a standard GSC Search Analytics CSV (Page, Clicks, Impressions, Position) for
the same property, or ask the user which GSC access method applies to this project
(service account vs. local OAuth token -- see this environment's own GSC access notes)
if a live pull is wanted instead of a CSV.
If the user hasn't provided these files yet, ask for them before running the script -- do not guess file paths.
Workflow
- Collect the two Screaming Frog CSVs, the homepage URL, and (if available) the GSC CSV or a live GSC pull for the same property.
- Run the script:
python scripts/audit_interlinking.py --inlinks <all-inlinks.csv> --overview <overview.csv> --home <https://example.com/> --gsc <gsc.csv> - Read the JSON the script prints (
summary,orphans,deep_pages,anchor_text_flags,hub_candidates). - Before writing a single recommendation, check this environment's project memory for that site's own interlinking house rules (anchor style, how many inline links, whether it uses a closing "Recomendamos"/"También te puede interesar" block, etc.). Different projects in this environment have different, specific rules -- never invent a generic format. If no project-specific rule is found, say so explicitly rather than assuming one.
- Render a single prioritized Markdown report, ordered:
- Orphans with real GSC clicks/impressions first (highest impact: Google already wants to send traffic there, it just can't find the page well internally).
- Then orphans with no GSC signal yet.
- Then deep pages (same GSC-first ordering).
- Then anchor-text over-optimization flags.
Each recommendation names a specific hub candidate to link from (pick the
closest topical match among
hub_candidates, not just the single highest-traffic page for everything) and a suggested anchor text consistent with the project's house rules from step 4.
- Stop there. Do not open the CMS, do not edit a post, do not call any WordPress ability to add the link -- hand the report back for the user (or a separate, explicitly-confirmed step) to execute.
Thresholds (script defaults, all overridable via flags)
| Signal | Default | Meaning |
| Orphan | 0-1 internal inlinks | On an indexable, 200-status HTML page |
| Deep page | click depth > 4 | BFS distance from the homepage over the internal link graph |
| Anchor over-optimization | one anchor text >= 80% share | Only flagged once a URL has at least 3 internal inlinks |
Explicitly out of scope
- SE Ranking -- retired from this stack entirely, never a data source here.
- New site or new cluster planning -- see
site-architecture,seo-cluster,blog-cluster. - Templated/programmatic pages at scale -- see
seo-programmatic. - Writing anything -- no post edits, no link insertion, no WordPress writes of any kind. Diagnosis and prioritized recommendations only.
Reference files
references/screaming-frog-export.md-- load on demand: exact Screaming Frog report names, menu paths, and column names this skill expects, for when a session needs to explain the export steps or troubleshoot a CSV that doesn't parse.
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

