food-ingestlisted
Install: claude install-skill fantasybz/trip-pwa-skills
# food-ingest
Turn a short-form venue post into a structured entry in the right trip-PWA
corpus, or hold it in `feed_candidates.json` until its placement is confirmed.
Despite the name, food-ingest handles **all five venue corpora** (food / desserts /
attractions / fandom / nearby). The hard part is **placement**, not classification:
a caption tells you "this is a cake cafe" but not "this goes on Day 3's 14:00
anchor". So food-ingest routes by keyword and **auto-routes a confident item
straight to its corpus file** — `food.json`, `desserts.json`, `attractions.json`,
`fandom.json`, or `nearby.json` (v0.5.1). Only ambiguous items (tie / low
confidence / no keyword) land in `feed_candidates.json` for a one-command
`placement-promote` (the deferred-placement pattern). `--day` carries a known day;
`--to <corpus>` is the destination-neutral explicit override; legacy
`--force-food` still forces `food.json`.
## Steps
1. **Get the caption.** If the user gave a URL, fetch the caption/description
first (use /browse for the page text, or `yt-dlp --get-description` for the
video description; for audio-only Reels, `yt-dlp` + `whisper-cli` to
transcribe). If the user pasted a caption, use it directly. The caption is
what the router classifies — without it, routing is blind.
2. **Run the engine** with the caption + any known fields:
```bash
bun skills/food-ingest/food-ingest.ts --out <trip-dir> \
--caption "<fetched caption>" --name-zh "<venue name in zh>" \