pp-wanderlust-goat
Original:🇺🇸 English
Translated
What a knowledgeable local with great taste would tell you to walk to from here — fused across editorial, local-language, and crowd layers no single tool ranks together. Trigger phrases: `what should I walk to from here`, `near me with great taste`, `find the 3 places not the 40`, `kissaten near my hotel`, `viewpoint within walking distance`, `blue hour photo spot`, `use wanderlust-goat`, `run wanderlust-goat`.
7installs
Added on
NPX Install
npx skill4agent add mvanhorn/printing-press-library pp-wanderlust-goatTags
Translated version includes tags in frontmatterSKILL.md Content
View Translation Comparison →Wanderlust GOAT — Printing Press CLI
Prerequisites: Install the CLI
This skill drives the binary. You must verify the CLI is installed before invoking any command from this skill. If it is missing, install it first:
wanderlust-goat-pp-cli- Install via the Printing Press installer:
bash
npx -y @mvanhorn/printing-press install wanderlust-goat --cli-only - Verify:
wanderlust-goat-pp-cli --version - Ensure (or
$GOPATH/bin) is on$HOME/go/bin.$PATH
If the install fails (no Node, offline, etc.), fall back to a direct Go install (requires Go 1.23+):
npxbash
go install github.com/mvanhorn/printing-press-library/library/travel/wanderlust-goat/cmd/wanderlust-goat-pp-cli@latestIf reports "command not found" after install, the install step did not put the binary on . Do not proceed with skill commands until verification succeeds.
--version$PATHMost 'near me' tools return the 40 closest results. Wanderlust GOAT returns the 3 results that match your stated identity and criteria. It fuses Nominatim, OSRM walking time, OSM Overpass, Wikipedia, Wikivoyage, Atlas Obscura, Reddit, editorial scrapes (Eater, Time Out, NYT 36 Hours, Michelin), and language-aware regional sources (Tabelog, Naver, Le Fooding) through one trust-weighted score, with local-language names preserved alongside transliterations. Free, no API keys, with an offline SQLite store and a JSON surface for agent orchestration.
research-planWhen to Use This CLI
Reach for wanderlust-goat when you need persona-shaped place discovery within walking distance, especially for cross-cultural travel where English search dominates and the local-language gems are hidden. Best for trip prep (sync-city), in-the-moment 'what should I walk to from here' (near, goat), photographer routing (golden-hour, route-view), and agent-orchestrated travel research (research-plan). Prefer Mapbox/Google MCPs only if you have their keys and need raw geocoding without persona scoring.
When Not to Use This CLI
Do not activate this CLI for requests that require creating, updating, deleting, publishing, commenting, upvoting, inviting, ordering, sending messages, booking, purchasing, or changing remote state. This printed CLI exposes read-only commands for inspection, export, sync, and analysis.
Unique Capabilities
These capabilities aren't available in any other tool for this API.
Persona-shaped fanout
-
— Find the 3-5 amazing things within walking distance that match your stated identity and criteria — not the 40 closest things.
nearWhen an agent needs the curated picks for a persona at a location, this is the single command that fuses ~12 sources into one ranked, sourced answer.bashwanderlust-goat-pp-cli near "Park Hyatt Tokyo" --criteria "vintage jazz kissaten, no tourists, great pour-over" --identity "coffee snob, into 70s Japanese kissaten culture" --minutes 15 --agent -
— Same fanout as
goatbut with no LLM in the runtime path — criteria-to-source mapping uses static lookup tables so the CLI works standalone.nearAgents and humans both need a GOAT mode that works without an LLM caller — useful for shell pipelines, cron, and offline runs.bashwanderlust-goat-pp-cli goat "35.6895,139.6917" --criteria "vintage clothing, vinyl, hidden" --minutes 20 --agent
Agent-orchestration plumbing
-
— Output a JSON query plan agents execute in a loop — typed, country-aware, ordered by trust, ready to fan out.
research-planDrop this into an agent loop to let the agent run multi-source travel research without re-deriving the fanout plan every call.bashwanderlust-goat-pp-cli research-plan "Bukchon Hanok Village, Seoul" --criteria "hand-pulled noodles, locals only" --identity "food traveler" --json
Cross-source walks
-
— Find pairs where a high-trust restaurant sits within 200m of a Wikipedia-notable historic site or Atlas Obscura entry — food + culture in one walk.
crossoverWhen the persona wants 'a great meal next to something interesting', this is the spatial query that compounds two layers.bashwanderlust-goat-pp-cli crossover --anchor "Marais, Paris" --radius 800m --pair food+culture --agent -
— Compute sunrise/sunset/blue-hour locally (pure Go, no API) and pair with viewpoints photographers know about within walking distance.
golden-hourWhen an agent needs to brief Felix the photographer for tonight's shoot, this is the one call that fuses the math and the spots.bashwanderlust-goat-pp-cli golden-hour "Eiffel Tower" --date 2026-06-15 --minutes 20 --agent -
— Walking polyline from A to B, then everything interesting along the path — not just at the endpoints.
route-viewFor walks where the journey IS the point, the agent needs everything along the path — not the closest thing to either end.bashwanderlust-goat-pp-cli route-view "Shibuya Station, Tokyo" "Yoyogi Park, Tokyo" --buffer 150m --agent -
— Places that locals describe as quiet at the requested time, intersected with OSM opening hours and walking radius.
quiet-hourAgents helping someone find the un-crowded version of a popular cafe need the Reddit-quiet-signal layer the persona always asks for but never gets.bashwanderlust-goat-pp-cli quiet-hour "Yurakucho, Tokyo" --minutes 15 --day mon --time 14:00 --agent
Local store + sync
-
— Pre-cache editorial best-of, Reddit threads, Wikipedia, Wikivoyage, OSM POIs, Atlas Obscura, and regional-language sources for offline use.
sync-cityAgents working offline or with flaky connectivity need a synced local store; this populates it.bashwanderlust-goat-pp-cli sync-city tokyo --layers all --agent -
— Print every source that mentioned a place, the trust weight, country boost, walking time, criteria match, and the final goat-score breakdown.
whyWhen the agent's pick surprises the user, this command answers 'why was this ranked #1?' in one call.bashwanderlust-goat-pp-cli why "珈琲 美美" --json -
— Surface the highest-scored Reddit comment snippets that mention a place — verbatim quotes, no LLM summarization.
reddit-quotesAgents giving travel advice need the actual local quotes, not a summary that can hallucinate. This returns the raw text with provenance.bashwanderlust-goat-pp-cli reddit-quotes "Kohi Bibi" --json -
— Per-tier row counts, last-sync ages, country-match boost, and which v1 sources are missing for a synced city.
coverageBefore an agent trusts aanswer, it should check whether the local store actually has the layers it claims to fuse.nearbashwanderlust-goat-pp-cli coverage tokyo --json
Command Reference
places — Geocode addresses and look up canonical place coordinates via Nominatim (foundation layer for the multi-source GOAT stack).
- — Reverse geocode lat/lng to a structured address.
wanderlust-goat-pp-cli places reverse - — Forward geocode an address, place name, or business to lat/lng candidates.
wanderlust-goat-pp-cli places search
Finding the right command
When you know what you want to do but not which command does it, ask the CLI directly:
bash
wanderlust-goat-pp-cli which "<capability in your own words>"which02--helpRecipes
Kissaten hunt in Tokyo (Mira's morning)
bash
wanderlust-goat-pp-cli near "Park Hyatt Tokyo" --criteria "vintage jazz kissaten, no tourists, great pour-over" --identity "coffee snob, into 70s Japanese kissaten culture" --minutes 15 --agent --select results.name,results.name_local,results.why_special,results.sources,results.walking_minReturns 3-5 picks with local-language names preserved (e.g. 珈琲 美美), trust-weighted across Tabelog 3.5+, jp.wikipedia history, /r/japan threads, Time Out Tokyo's vintage-cafe list, and OSM tagging. The dotted --select narrows the JSON to the fields the persona cares about so an agent doesn't burn context on raw payload.
cafe + cuisine=japanesePhotographer's blue-hour route in Seoul (Felix's evening)
bash
wanderlust-goat-pp-cli golden-hour "Bukchon Hanok Village, Seoul" --date 2026-06-15 --minutes 25 --agentComputes blue-hour and golden-hour windows for the date locally (no API), then ranks viewpoints from OSM + Atlas Obscura viewpoint entries + ko.wikipedia notable-views by elevation tag and Reddit-accessibility keyword match. Agent can plan the walk in one call.
tourism=viewpointAgent-orchestrated research plan for a friend's Paris weekend
bash
wanderlust-goat-pp-cli research-plan "Marais, Paris" --criteria "natural wine, neighborhood spot, no scene" --identity "food writer" --jsonEmits typed JSON describing which clients to call (Le Fooding, Pudlo, fr.wikivoyage, /r/Paris, Eater Paris, Michelin Bib Gourmand) with parameters pre-filled. Drop into an agent loop: agent executes each, then you call with to fuse the cached results.
near--data-source localCrossover walk: a great meal next to something interesting
bash
wanderlust-goat-pp-cli crossover --anchor "Asakusa, Tokyo" --radius 800m --pair food+culture --agent --csvSpatial join finds high-trust restaurants within 200m of a Wikipedia-notable historic site or Atlas Obscura entry. CSV output lets you paste pairs into a planning doc; --agent forces structured exit codes for cron scripts.
Pre-trip city sync (Priya's two-weeks-out workflow)
bash
wanderlust-goat-pp-cli sync-city paris --layers all --concurrency 2 --since 30dPolite-rate-limited fanout: editorial scrapes + multilingual Wikipedia + Wikivoyage + OSM Overpass POIs + Le Fooding + Pudlo + /r/Paris top threads ≥10 upvotes, all into local SQLite. After this, every other command can run with (or ) — no internet needed in the cafe with bad wifi.
--data-source localautoAuth Setup
No API keys. Every v1 source is free and key-less.
One environment variable matters: Nominatim's usage policy requires every client to send a User-Agent that includes a real contact URL or email — placeholder UAs () are blocked at the edge. Set it once:
example.combash
export WANDERLUST_GOAT_UA="wanderlust-goat-pp-cli/0.1 (+https://github.com/<you>/<repo>)"If unset, the CLI falls back to a generic UA that may receive 403s from Nominatim. The same UA flows through to Wikipedia, Wikivoyage, Reddit, and Overpass — being a polite citizen across the public stack.
Run to verify setup.
wanderlust-goat-pp-cli doctorAgent Mode
Add to any command. Expands to: .
--agent--json --compact --no-input --no-color --yes-
Pipeable — JSON on stdout, errors on stderr
-
Filterable —keeps a subset of fields. Dotted paths descend into nested structures; arrays traverse element-wise. Critical for keeping context small on verbose APIs:
--selectbashwanderlust-goat-pp-cli places search --query example-value --agent --select id,name,status -
Previewable —shows the request without sending
--dry-run -
Offline-friendly — sync/search commands can use the local SQLite store when available
-
Non-interactive — never prompts, every input is a flag
-
Read-only — do not use this CLI for create, update, delete, publish, comment, upvote, invite, order, send, or other mutating requests
Response envelope
Commands that read from the local store or the API wrap output in a provenance envelope:
json
{
"meta": {"source": "live" | "local", "synced_at": "...", "reason": "..."},
"results": <data>
}Parse for data and to know whether it's live or local. A human-readable summary is printed to stderr only when stdout is a terminal — piped/agent consumers get pure JSON on stdout.
.results.meta.sourceN results (live)Agent Feedback
When you (or the agent) notice something off about this CLI, record it:
wanderlust-goat-pp-cli feedback "the --since flag is inclusive but docs say exclusive"
wanderlust-goat-pp-cli feedback --stdin < notes.txt
wanderlust-goat-pp-cli feedback list --json --limit 10Entries are stored locally at . They are never POSTed unless is set AND either is passed or . Default behavior is local-only.
~/.wanderlust-goat-pp-cli/feedback.jsonlWANDERLUST_GOAT_FEEDBACK_ENDPOINT--sendWANDERLUST_GOAT_FEEDBACK_AUTO_SEND=trueWrite what surprised you, not a bug report. Short, specific, one line: that is the part that compounds.
Output Delivery
Every command accepts . The output goes to the named sink in addition to (or instead of) stdout, so agents can route command results without hand-piping. Three sinks are supported:
--deliver <sink>| Sink | Effect |
|---|---|
| Default; write to stdout only |
| Atomically write output to |
| POST the output body to the URL ( |
Unknown schemes are refused with a structured error naming the supported set. Webhook failures return non-zero and log the URL + HTTP status on stderr.
Named Profiles
A profile is a saved set of flag values, reused across invocations. Use it when a scheduled agent calls the same command every run with the same configuration - HeyGen's "Beacon" pattern.
wanderlust-goat-pp-cli profile save briefing --json
wanderlust-goat-pp-cli --profile briefing places search --query example-value
wanderlust-goat-pp-cli profile list --json
wanderlust-goat-pp-cli profile show briefing
wanderlust-goat-pp-cli profile delete briefing --yesExplicit flags always win over profile values; profile values win over defaults. lists all available profiles under so introspecting agents discover them at runtime.
agent-contextavailable_profilesExit Codes
| Code | Meaning |
|---|---|
| 0 | Success |
| 2 | Usage error (wrong arguments) |
| 3 | Resource not found |
| 5 | API error (upstream issue) |
| 7 | Rate limited (wait and retry) |
| 10 | Config error |
Argument Parsing
Parse :
$ARGUMENTS- Empty, , or
help→ show--helpoutputwanderlust-goat-pp-cli --help - Starts with → ends with
install→ MCP installation; otherwise → see Prerequisites abovemcp - Anything else → Direct Use (execute as CLI command with )
--agent
MCP Server Installation
- Install the MCP server:
bash
go install github.com/mvanhorn/printing-press-library/library/travel/wanderlust-goat/cmd/wanderlust-goat-pp-mcp@latest - Register with Claude Code:
bash
claude mcp add wanderlust-goat-pp-mcp -- wanderlust-goat-pp-mcp - Verify:
claude mcp list
Direct Use
- Check if installed: If not found, offer to install (see Prerequisites at the top of this skill).
which wanderlust-goat-pp-cli - Match the user query to the best command from the Unique Capabilities and Command Reference above.
- Execute with the flag:
--agentbashwanderlust-goat-pp-cli <command> [subcommand] [args] --agent - If ambiguous, drill into subcommand help: .
wanderlust-goat-pp-cli <command> --help