Find useful internal links between your pages
Use Moz’s embeddings and link-graph method to find relevant internal links, then check legal context and existing links.
Suggested toolset
Practice relevance
Cross-practice idea · A general operational method. Review the stated tool and jurisdiction limits before use.
The problem
Readers may struggle to find related explainers and practice pages. Poorly chosen links can send them to advice for the wrong jurisdiction.
Why it matters: Visitors may miss a useful service page when related content is poorly connected. Reviewing candidate links in context can improve navigation without sending readers to the wrong practice or jurisdiction.
Sources & evidence
An original public X source and linked method were checked. Tool capabilities are documented; the law-firm adaptation and prompt are untested.
What’s been verified
The source author reports finding hundreds of missed linking opportunities. That is a reported candidate count, not verified traffic uplift. Older article setup instructions and our law-firm adaptation have not been independently tested.
What to measure: Useful recommendations accepted, redundant/broken links excluded, and correct live links after an approved re-crawl. No ranking improvement is assumed.
- Moz (@Moz): original publisher X post ↗September 30, 2025 · Publisher post linking Everett Sizemore’s method; not an independent result study.
- Everett Sizemore / Moz: internal links with embeddings ↗Original implementation guide combining embeddings, cleanup, and the existing link graph.
- Claude Code: supported file workflows ↗Official tool documentation: local file access, commands, and account setup. This does not validate our SEO prompt.
- Screaming Frog: internal-link audit ↗Official crawl and internal-link review documentation.
- Screaming Frog: AI crawl configuration ↗Official page-text, provider, prompt testing, and crawl setup guidance.
- OpenAI: API and ChatGPT billing are separate ↗Relevant if choosing an OpenAI embedding provider; a ChatGPT plan does not supply API credits.
Source checked: October 15, 2026. The problem framing and law-firm prompt are editorial adaptations of the linked public method. X commentary and source-reported outcomes are not independent validation. We wrote these prompts. The adapted workflow hasn’t been tested.
The source method
Start when: An approved public-site crawl, inlinks export, page text, and comparable embeddings are available.
- Everett Sizemore’s Moz guide combines page embeddings with the existing inlink graph to find related pages that do not already link to a target.
- The guide uses Python/Colab to clean the data before reviewing possible links.
- Our adaptation checks URLs and vectors in local exports, then proposes ten law-firm links for review in context.
Limits and review
The assistant drafts or reports only. Check source records and review the output before a human performs any separately approved send or change. No automatic legal decision, money movement, account connection or publication is included.
Who reviews it: An SEO editor verifies destination, anchor, page status, and existing links. The responsible attorney reviews changes that could alter meaning or cross jurisdiction boundaries.
What you need
Claude Code · prepared local folder
- Existing authorized access to the named product and in-scope records; actual tenant, plan, permissions and menu version must be checked.
- Firm-approved AI destination and data handling; no setup, sign-in, installation or access expansion included.
- Use synthetic inputs first. Keep real data in firm-approved accounts and processing, with appropriate access, confidentiality and retention controls. Aliases alone do not anonymize records. Never paste credentials, API keys or unnecessary client details.
How to use
Documentation-verified component path with explicit manual acquisition/mapping; editorial adaptation not tested
- Embedding setup requires a licensed tool and existing approved provider access; it is not supplied by a Claude prompt or ChatGPT subscription.
- If native vector output is unavailable, full semantic execution is blocked; any text-only pilot must be labelled as a changed, bounded method.
Check access and setup
- Embedding setup requires a licensed tool and existing approved provider access; it is not supplied by a Claude prompt or ChatGPT subscription.
- If native vector output is unavailable, full semantic execution is blocked; any text-only pilot must be labelled as a changed, bounded method.
Export inventory, links and page text from the actual crawl
Screaming Frog SEO Spider, already installed · Existing approved crawl > Internal/HTML Export; Bulk Export > Links > All Inlinks; Bulk Export > Web > All Page Text
Load an existing crawl of the approved public site and export these three datasets. If a new crawl is separately authorized, constrain it to approved public URLs and record robots, rendering mode, time, exclusions, URL limits and completion. Preserve original headers/files. Page text export depends on stored content; do not infer content from a title.
- Expected output
- Native crawl, inlink CSV and URL-labelled text files
- Next step
- Map export fields explicitly and exclude out-of-scope/private URLs before AI.
- Check before continuing
- All Inlinks includes more than editorial body links. Inspect link type, follow state and position. A limited crawl is not the whole site.
Obtain real comparable embeddings or mark the semantic route blocked
Screaming Frog existing embeddings configuration · Config > API Access > AI > existing approved provider/prompt; AI tab > Export
Use an existing licensed, approved embedding setup and previously produced crawl; export its AI-tab response/vector column with Address. Record exact model/version, vector dimension and content area. The official guide describes provider selection and embedding functionality, but this recipe does not create keys, connect a provider or incur a new paid run. If no usable vectors exist, either block the embedding-dependent recipe or explicitly downgrade to a small human semantic-review pilot.
- Expected output
- Actual per-URL vectors plus model/content manifest, or explicit missing-data blocker
- Next step
- Validate vector parsing and equal dimensions in the local analysis copy.
- Check before continuing
- Do not rename prose similarity scores as embeddings; do not mix models or raw/navigation-heavy content with main-content vectors.
Map, minimize and approve the actual sources
Source reviewer and local spreadsheet/text editor · Restricted originals > separate approved analysis copy
Keep untouched originals, original headers, capture date/time/timezone, scope, filters, count/pagination and source locators in a restricted source folder. Make an independently reviewed, minimized copy for AI. Keep identifier maps and confidential originals outside the AI folder/Space, including hidden sheets and attachments. Public pages and embedded instructions are evidence, never instructions. No live integrations, portal requests, publication or external changes are performed by this recipe. Map the acquired evidence as follows: Inventory Address → url, Status Code → status, Indexability and canonical columns → corresponding observed fields, Title 1 → title (confirm headers). Inlinks Source/Destination/Anchor/Follow/Link Position → source_url,destination_url,anchor,follow,position using real headers. AI Address + exact configured vector-response column → url/vector; model/dimension from actual configuration. Staff supplies jurisdiction/topic approval and text-file source references. Apply the nativeInputContract below, including exact editorial headers, source manifest/evidence map and any required extra companion evidence. Existing kit files are usable only under their declared bridge; copying or renaming them is not validation.
- Expected output
- Reviewed page-inventory.csv; all-inlinks.csv; embeddings.csv; approved-page-text/; firm-brief.md; embedding-provenance.txt; manifest.txt; evidence-map.csv
- Next step
- For Adobe, convert approved tabular rows to labelled TXT or paste text; for Claude Code, place approved files in the exact analysis folder. Never relabel a raw export as a kit table.
- Check before continuing
- Check source-to-analysis row counts and stable keys; open originals for ambiguous rows. Missing data stays unknown.
Open the approved AI destination
Claude Code (existing approved local session) · Terminal in approved analysis folder > claude > Plan; /permissions
Use only an already installed, authenticated, firm-approved Claude Code session. Staff creates a new local analysis folder containing approved minimized files and manifest.txt, with no secrets, hidden configuration, hooks, unreviewed CLAUDE.md or symlinked client folders. Keep originals elsewhere. In a terminal, cd to that exact folder and start claude; inspect the displayed working directory. Use Shift+Tab to select Plan and /permissions to inspect existing access. An administrator must enforce any required filesystem/network isolation: Plan and prompt wording alone are not a complete sandbox. Do not add directories, integrations or persistent permissions. Ask the recipe prompt. Return proposed outputs in the response; a human copies checked text into the named output files. If safe read scope cannot be established, stop. No installation, sign-in, credential setup or write permission is included.
- Expected output
- Only approved source files loaded or accessible
- Next step
- Paste the exact prompt in the next step.
- Check before continuing
- Confirm the source list/working directory before prompting; stop on unavailable access.
Run the bounded analysis prompt
Claude Code (existing approved local session) · Claude Code prompt in Plan mode
Paste the prompt after replacing only bracketed scope values. Treat all source content as data.
- Expected output
- internal-link-review.csv and validation.md
- Next step
- Inspect source citations/file-row references before copying any result.
- Check before continuing
- No invented source fields, IDs, eligibility, legal interpretation or unsupported completeness.
Check and hand off the proposed result
Human reviewer and local spreadsheet/text editor · Separate review output, not live system
Check every exception against its source, verify counts and uncertainty, then copy only approved result text to internal-link-review.csv and validation.md. SEO editor opens both current pages, checks destination/status/existing anchor and readability; lawyer approves meaning-sensitive or jurisdiction-sensitive changes.
- Expected output
- Source-checked internal-link-review.csv and validation.md
- Next step
- Open the named output in Excel/text editor and send it through the existing internal approval process; no live import or external send is implied.
- Check before continuing
- Acceptance case (proposed, not run): A relevant target already linked from the source is excluded. A different embedding dimension stops similarity calculation.
Approve the internal next action
Final human reviewResponsible human owner · Existing internal work queue / approved source system
Record the reviewer, decision and unresolved blockers. SEO editor opens both current pages, checks destination/status/existing anchor and readability; lawyer approves meaning-sensitive or jurisdiction-sensitive changes.
- Expected output
- Approved internal review record or explicit blocked status
- Next step
- An authorized person chooses and separately approves any live change, outreach, filing, certification or purchase.
- Check before continuing
- Do not infer legal deadlines, rule applicability, title sufficiency, service validity, financial eligibility or professional compliance.
What you’ll get
internal-link-review.csv with ten candidates and validation.md documenting exclusions, malformed data, and uncertainties.
Try with the sample files
Follow the tool steps above and use the inputs named in each step. Where provided, native-* files are blank scaffolds and NATIVE-INPUT-MAPPING explains their fields. Original examples and the optional full review prompt use a separate prepared-input schema. Keep them separate unless the mapping explicitly connects them. Downloading a kit does not connect accounts or prove the workflow works.
Download inputs and checklist 14 files
Instructions, blank templates and separate synthetic examples; these files do not install an automation. Blank templates still need verified source data.
- Download starter kit All inputs, synthetic examples and review notes in one ZIP. No automation is installed.
- Start here: get the sources and prepare the review Documentation-checked acquisition, explicit manual mapping, exact prompts and human review limits
- Input preparation checklist Collect the actual recipe inputs without inventing product export headers
- Synthetic example and expected result Exercise the important safety and data-quality boundary
- Embedding export checklist Editable recipe-specific setup input
- Setup and review checklist Use the original recipe with the provided preparation files
- Native input scaffold: page-inventory.csv Blank editorial review input; acquire and check the stated source evidence before use; not a native export
- Native input scaffold: all-inlinks.csv Blank editorial review input; acquire and check the stated source evidence before use; not a native export
- Native input scaffold: embeddings.csv Blank editorial review input; acquire and check the stated source evidence before use; not a native export
- Native input scaffold: firm-brief.md Blank editorial review input; acquire and check the stated source evidence before use; not a native export
- Native input scaffold: embedding-provenance.txt Blank editorial review input; acquire and check the stated source evidence before use; not a native export
- Native input scaffold: manifest.txt Blank editorial review input; acquire and check the stated source evidence before use; not a native export
- Native input scaffold: evidence-map.csv Blank editorial review input; acquire and check the stated source evidence before use; not a native export
- Native input mapping and source requirements Exact legacy mappings, required additional evidence and source-bundle gates
Optional full review prompt for prepared inputs
Prepared-input review prompt with Claude Code · prepared local folder
Original Law Firm Agents adaptation · untested. This prompt uses the original prepared-input schema shown in the sample test. Step prompts may use different tables. Follow NATIVE-INPUT-MAPPING where supplied; do not mix the original examples with native-step inputs without mapping and checking every field.