This is my personal link library: useful articles, tools, talks, APIs, and other things I find around the web. It is public so other people can browse it, but link additions are maintained by me.
The site is now an Astro static site. Link data lives in data/links.json, which makes it easier for Hermes and automation scripts to add, enrich, validate, and check links.
Install dependencies:
npm installValidate the link data:
npm run validateRun tests:
npm testBuild the static site:
npm run buildRun locally:
npm run devThen open the local URL Astro prints, usually http://localhost:4321.
The local add-link helper is the building block for the Hermes /addlink workflow. It adds one structured entry to data/links.json, rejects duplicate normalized URLs, and leaves new links with status: "unchecked" so the checker can verify them later.
Example:
npm run addlink -- "https://example.com/article" \
--title "Example Article" \
--description "A short useful description of the link." \
--category "Interesting Reads" \
--tags "interesting-reads,example" \
--type articleUseful options:
- omit
--title/--descriptionto let the helper try page metadata first - pass
--no-fetchto skip network metadata lookup - pass
--dry-runto validate without writing
A Hermes-assisted add should enrich the URL metadata and then use the PR helper:
npm run addlink-pr -- "https://example.com/article" \
--title "Example Article" \
--description "A short useful description of the link." \
--category "Interesting Reads" \
--tags "interesting-reads,example" \
--type articleThe PR helper creates a branch, runs npm run addlink, validates/tests/builds the site, commits data/links.json, pushes the branch, and opens a GitHub PR. Pass --dry-run to print the command plan without executing it.
The normalize helper keeps category tags consistent and trims simple text whitespace:
npm run normalizeUse --dry-run to preview how many links would change without writing:
npm run normalize -- --dry-runThe link checker updates reviewable status metadata for existing links:
npm run checklinksUseful options:
- pass
--dry-runto report results without writing - pass
--limit Nto check only the first N links while testing - pass
--timeout 15to adjust the per-link request timeout
The scheduled GitHub Action runs weekly and opens a PR if data/links.json changes. It updates fields such as:
status:ok,redirected,broken, orunknownlast_checkedredirect_urlfor redirectscheck_errorfor broken or unknown checks
The checker never deletes links automatically.
Each link has structured metadata:
titleurldescriptioncategorytagstypeaddedstatus
The next phases are:
- Continue refining categories, tags, and descriptions as the library grows.
- Optionally connect the add-link PR helper to a dedicated Hermes gateway command once the preferred Slack/email surface is chosen.