Files
unique/CLAUDE.md
T
rzen ff4c6959a5 site: tag pages include finds; find-only tags get pages
Tag pages are now generated from the union of entry and find tags —
1,179 tags that existed only on finds (most tag links on find pages)
previously 404'd. Tagged finds render in a compact secondary "Finds"
list below the entry grid, keeping the editorial tier on top. Find-only
tag pages with fewer than 3 finds are noindexed until they fill out.
Tag feeds stay entries-only; the RSS pill and autodiscovery link only
render where a feed exists. Category pages unchanged (finds have no
category).

Claude-Session: https://claude.ai/code/session_01WZaczDJjL3xZ3u5spsN5AL
2026-07-12 19:05:46 -04:00

2.4 KiB
Raw Blame History

unique.rzen.dev

A daily product-discovery site (Astro, static). The editorial pipeline is skill-driven and designed to run unattended.

Pipeline

  • /daily-pipeline — the whole daily chain: capture → bundle → reviews (several per run, judgment call) → pick of the day (explicit decision every run) → build → commit → push → digest. This is the entrypoint for scheduled/headless runs; scheduled runs auto-deploy afterwards via the lab CI publish-unique-daily job.
  • /daily-finds — capture-only sweep of sources.json; writes src/content/find/<yyyy>/<mm>/<slug>/, marks the day's shortlist (shortlist: true, up to 12), adds amazonLink for confidently-matched physical products, and applies mechanical source maintenance.
  • /build-bundle [auto|weekly|<theme>|<slugs>] — one themed roundup referencing find slugs. weekly = date-based catch of unbundled shortlist finds.
  • /cluster-bundles [auto] — batch-cluster the backlog into 47 bundles.
  • /build-review <slug> [auto] — graduate a find to a full review (fact-check against the product's own site is mandatory in auto mode).

Unattended runs never pause for confirmation — they publish, log to daily-finds.log.md, and report a digest; the user vetoes after the fact. Only two things stay user-only: vetting candidate-sources.md nominees into sources.json, and scheduling.

Conventions that bite

  • Review heroes are auto-discovered from src/content/reviews/<slug>/hero.<ext> (src/lib/hero.ts glob) — name the file hero.*; no registration.
  • The homepage "pick of the day" is src/data/pick.json ({"hero": "<review-slug>"}); falls back to the latest review.
  • Find slugs are globally unique although folders are date-bucketed; URLs stay flat at /find/<slug>/.
  • Finds are reachable through bundles and through tag pages (a secondary "Finds" list under the entry grid on /tags/<tag>/) — an unbundled find is still invisible on the home feed, grids, and category pages.
  • source frontmatter must exactly match a name in sources.json.
  • Amazon links: store canonical https://www.amazon.com/dp/<ASIN> with no query params; src/lib/affiliate.ts adds the tracking ID, badge, and disclosure at render time.
  • Commit style: see git logcontent: … for capture runs, site: … for everything user-visible; one commit per pipeline stage.
  • npm run build (astro check + build) must pass before pushing.