Repository navigation
First release of Linkguard: a free GitHub Action that checks outbound links in Jekyll, Hugo and folderblog sites, and looks up or creates Internet Archive Wayback Machine snapshots for them.
Usage
- uses: actions/checkout@v7
- uses: ninepointlabs/linkguard@v0.1.0Complete workflows: Jekyll, Hugo, folderblog. The README documents every input and output.
What's in v0.1.0
- Link extraction from markdown (inline links, images, reference definitions, autolinks) and HTML
<a href>. Relative, mailto/tel, localhost and private-IP links are skipped, plus anything matchingignore-urls. - Polite link checks: HEAD with a GET fallback, 10 s timeout, 2 retries, Retry-After honoured, at most 4 requests in flight and 1 per host. Each link is reported as
ok,moved,deadorblocked. Bot-blocks (401/403/999) are never called dead. - Lookup-only mode (default, no secrets): finds existing Wayback snapshots, and reports an archived URL for each dead link that has one.
- Snapshot mode (with your own free Internet Archive keys as repo secrets): captures working links that have no recent snapshot. Paced to at most 6 captures a minute, limited by a configurable time budget, and stops on repeated rate limiting.
- Reports: job summary table, annotations on dead links, JSON and markdown report files, and the outputs
dead-count,checked-count,skipped-countandreport-path. Report-only by default; setfail-on-deadto fail the step instead. open-pr(opt-in): opens a pull request that replaces dead links with their archived copies. It never pushes to your default branch.- Free tier: 100 unique links per run. Links over the cap are skipped, and the log says how many.
- Privacy: no telemetry. Only link URLs go to archive.org; file contents never leave the runner.
Known limits
- Snapshot capture and
open-prare covered by mocked tests only so far. Please report problems in issues. - Internet Archive rate limits aren't published, and the availability API sometimes returns no snapshot for pages that have one.
- Each scheduled run that finds replaceable dead links opens a new PR.