site: bucket find/ folders by capture date + 2026-05-09 capture (67 finds)
Migrate every find from src/content/find/<slug>/ to src/content/find/<year>/<month>/<slug>/ — all 289 existing finds moved into 2026/05/. The find content-collection loader gets a new leafSlug generateId so ids (and therefore URLs at /find/<slug>/) stay flat; src/lib/find-hero.ts switches to a recursive **/hero glob. Bundle items[], promotedTo/fromFind keys, /sources cross-refs, and category/tag pages all keep working unchanged. Skill docs (daily-finds, build-review, build-bundle, cluster-bundles), README, and CHANGELOG updated for the new on-disk path. Also: 67 new finds from the 2026-05-09 capture run (Web Curios 8, MoMA 7, r/macapps 7, r/dadjokes 6, icanhazdadjoke 6, Wallpaper* Travel 5, Snow Peak 5, Kottke 3, Boutique Homes 3, etc.); felo-ergonic-screwdriver-set rolled back per editorial decision.
This commit is contained in:
@@ -14,8 +14,8 @@ Invoke from inside the `unique.rzen.dev` repo.
|
||||
|
||||
- `sources.json` at the project root — curated source list with per-source `fetch` strategy (`webfetch` / `curl` / `skip`) and optional `fetchUrl`.
|
||||
- `daily-finds.log.md` — running log of every find slug ever written (used to skip duplicates).
|
||||
- `src/content/find/*.mdx` — already-captured finds (every existing slug is a "do not re-suggest" item).
|
||||
- `src/content/reviews/*.mdx` — already-reviewed items (do not re-suggest).
|
||||
- `src/content/find/<year>/<month>/<slug>/index.mdx` — already-captured finds (every existing slug is a "do not re-suggest" item; slugs are globally unique across years/months even though folders are nested by date).
|
||||
- `src/content/reviews/<slug>/index.mdx` — already-reviewed items (do not re-suggest).
|
||||
- `candidate-sources.md` — newly nominated sources awaiting user vetting.
|
||||
|
||||
## The bar
|
||||
@@ -42,14 +42,14 @@ For each source record: items extracted, or `empty` / `blocked` / `skipped`.
|
||||
|
||||
For each extracted item, drop:
|
||||
|
||||
- Anything whose slug already exists in `src/content/find/`.
|
||||
- Anything whose slug already exists anywhere under `src/content/find/` (find slugs are globally unique — check the leaf folder name across all `<year>/<month>/` buckets).
|
||||
- Anything whose name appears anywhere in `daily-finds.log.md`.
|
||||
- Anything reviewed in `src/content/reviews/` (compare by `name` field).
|
||||
- Items that fail the bar above.
|
||||
|
||||
### 3. Write find files
|
||||
|
||||
For every survivor, write one file at `src/content/find/<slug>.mdx`:
|
||||
For every survivor, write one file at `src/content/find/<year>/<month>/<slug>/index.mdx` where `<year>` and `<month>` come from today's date (e.g. `src/content/find/2026/05/<slug>/index.mdx`). Hero image (when present) sits next to it as `src/content/find/<year>/<month>/<slug>/hero.<ext>`. The leaf folder name is the slug; URLs stay flat at `/find/<slug>/` because the content-collection loader uses a `leafSlug` id derivation.
|
||||
|
||||
- Slug: kebab-case form of the name (lowercase, ASCII, no leading numbers).
|
||||
- Frontmatter: `name`, `subtitle` (optional, one-liner), `date` (today), `link` (external URL — required), `linkText` (optional), `source` (the source name from sources.json — required, exact match), `topics` (copied from the source's `topics`), `tags` (free editorial tags inferred from the item — keep to 2-4), `description` (optional meta override).
|
||||
@@ -63,7 +63,7 @@ If `link` for a Reddit-discovered item points at a v.redd.it / i.redd.it URL, fe
|
||||
For every find, try to retrieve a single representative image from the linked page so the find has visual support if it later graduates to a review (or gets surfaced on a tile).
|
||||
|
||||
- **Where to look (in priority order):** `og:image` meta tag → JSON-LD `image` field → main product photo / hero image markup → first article image.
|
||||
- **Where to save:** `src/assets/finds/<slug>/hero.<ext>`. Preserve the original extension (`.jpg`, `.png`, `.webp`, `.gif`). One file per find — `hero` is the canonical name.
|
||||
- **Where to save:** `src/content/find/<year>/<month>/<slug>/hero.<ext>` — colocated next to `index.mdx`. Preserve the original extension (`.jpg`, `.png`, `.webp`, `.gif`). One file per find — `hero` is the canonical name.
|
||||
- **What to skip:** images with marketing/sales overlay text (Amazon-style "BEST PRESS / NO GRIT" tags), tiny thumbnails (<400px on the long edge), generic site logos, paywalled CDN URLs that 403 to curl. If the only available shots are marketing collages, skip rather than save a noisy image — a missing hero is fine, a bad one isn't.
|
||||
- **For Mac/iOS apps:** prefer the App Store hero or developer-site screenshot. For physical products: prefer a clean studio shot or lifestyle photo without overlay copy. For travel destinations: prefer a Wikimedia Commons / Wikipedia image (free-to-use only). For text-only finds (quotes, dad jokes, essays): no media expected — skip.
|
||||
- **Fetch strategy:** `curl -sL --max-time 25 -A "Mozilla/5.0 (...Safari...)" "<image-url>" -o <path>`. WebFetch is for HTML, not binaries.
|
||||
|
||||
Reference in New Issue
Block a user