Japan Trip Planner
130 places worth going, merged out of saved videos and an old document, then scored for the one week the trip actually falls in.
Everyone plans a trip the same way: a folder of saved videos, a document somebody started two years ago, and a group chat. All three are write-only. Nothing in them is searchable, nothing is on a map, and nothing tells you whether the place is even open in the month you are going.
This merges them. A Python pipeline pulls rows out of the TikTok Vault catalogue and out of a shared document, geocodes what it can, deduplicates against what is already there, and emits one typed list. A place is allowed to carry several sources, which turns out to be the useful signal rather than noise: the same onsen turning up in a saved video and in a document written two years earlier is the strongest recommendation in the dataset.
Every place is then rated for the specific week of the trip, not for Japan in general. Half of what makes a place worth going is seasonal, and a planner that tells you somewhere is wonderful without telling you it is shut in February is worse than no planner, because it costs you a day.
The page itself is password gated at the edge, in front of the static asset, so the HTML of a private page is never sent to an unauthenticated request. It fails closed: with no password configured nothing is reachable at all, which is the right way round for a gate, since a missing secret must never mean an open door.
Details worth knowing
- 01130 places from three kinds of source, merged and deduplicated rather than concatenated, with 109 carrying coordinates.
- 02A per-place rating for the actual travel week, with a note saying why. Nineteen of the 130 turn out to be limited or shut in that week, five of them completely, which is the entire reason the field exists.
- 03The gate runs as edge middleware ahead of the asset, and the cookie is an HMAC keyed by the password, so it never carries the password and changing it signs everyone out.
- 04Deliberately absent from the sitemap, the nav and the footer, with robots.txt left alone on purpose, because a Disallow line publishes the path it is trying to hide.
- 05The largest input is the TikTok Vault pipeline, which is what turned a folder of saved videos into rows something else could read.