Skip to content

heddle check --only outbound

outbound Check

Do the links the site publishes to other sites resolve? On the site this came from, a product's documentation link pointed for months at a host that had never been created; a case study linked a client's old domain the day it stopped resolving; and a meetup published a code repository set to internal, which 404s to everyone outside the company, so to everyone who attended. Every internal check passed, because each URL was well-formed. mjs.

When Heddle is set up on your site, this check runs on every build alongside 25 others, so a page that fails it is fixed before a buyer or a search engine sees it.

runs offlineruns when named

Why it exists

Do the links the site publishes to other sites resolve?

On the site this came from, a product's documentation link pointed for months at a host that had never been created; a case study linked a client's old domain the day it stopped resolving; and a meetup published a code repository set to internal, which 404s to everyone outside the company, so to everyone who attended. Every internal check passed, because each URL was well-formed. Found by hand, then by check-outbound.mjs.

Opt-in (heddle check --only outbound) and never in CI. A build that needs the network fails when a CDN hiccups, and a flaky guard gets switched off. Run it after a rename, a domain move, or a batch of new comparison pages that link vendors. Rules, from the same file:

  • A redirect (3xx) is a pass. A vendor moving its docs and leaving a redirect is the right outcome.
  • GET, not HEAD. A platform can answer HEAD without asking the origin.
  • A failure must survive a second, slower attempt before it is reported. A third party rate-limits and has slow mornings, and a check that calls that "dead" trains its reader to disbelieve it.
  • 401, 403, 419, 429 and 999 are a warning, not an error. The site is there and refused a script, which is not the reader's experience.
  • One request at a time per host. Hacker News answered 419 to five threads fetched at once, and 200 to each fetched in turn.

site.json outbound.skip lists hosts never to fetch (one that bans bots, say), each with its reason.

From lib/checks/outbound.mjs in the Heddle repository at ddb1b16.

Questions

What does the outbound check look for?

Every link to another site resolves (a redirect passes); needs the network, so run it by hand, never in CI.

Does the outbound check need an AI model?

No. It reads the built pages or the sources directly, so it runs offline and costs nothing per run.

How do I run it?

Build the site, then run node bin/heddle.mjs check <site> --only outbound from the Heddle repository.

Work with us

Let the agents bring you the leads.

Tell us about your business and who buys from you. On a short call we'll show you the searches your buyers make where you don't show up yet, and what the agents would do about them in their first month.

On the call, for your site

  1. The searches your buyers makeMeasured, with how many people make each one
  2. Where you show up, and where you don'tOn Google and in ChatGPT's answers
  3. The agents' first monthThe pages, fixes and links they would start with