Claude Code skill that researches Japan restaurant recommendations from Reddit, Tabelog, TripAdvisor & more, then outputs to Google Sheets, CSV, or Markdown
Research top recommendations for a location in Japan and output the results in your preferred format. Supports both restaurant research and activity/experience research.
/japan-recs Shinjuku → Restaurants only, Markdown (default)
/japan-recs Shinjuku --activities → Activities only
/japan-recs Shinjuku --both → Restaurants + Activities
/japan-recs Shinjuku --vibes → Aesthetic/trending-focused research
/japan-recs Shinjuku --vibes --sheet SHEET_ID → Vibes results to Google Sheets
/japan-recs Tokyo --activities --sheet SHEET_ID → Activities to Google Sheets
/japan-recs Shinjuku --csv → CSV file output
/japan-recs Shinjuku --sheet SHEET_ID → Google Sheets output (requires gws CLI)
--activities: Research activities and experiences instead of restaurants--both: Research both restaurants and activities (outputs as separate tabs/files)--vibes: Aesthetic/trending-focused research — prioritizes atmosphere, design, and trending signals over pure review scores. Uses vibes-specific categories (see Vibes Categories below) and outputs to a separate tab/file (e.g., "[Area] Vibes")--csv: Output as CSV file--sheet SPREADSHEET_ID: Output to a Google Sheet tab (requires gws CLI to be installed and authenticated)If no type flag is provided, defaults to restaurants only. If no output flag is provided, defaults to Markdown.
Spawn parallel Agents (one per topic area) to research across multiple sources simultaneously. Each agent should search:
Classic, Hidden Gem, Trending, Aesthetic, Hole-in-the-wall, Splurge, Late Night — see Vibe Tags below)Prioritize places that appear across multiple sources. Aim for 15-25 recommendations with a mix of budget, mid-range, and splurge options across different food categories.
Trending signals: In ALL modes, research agents should also look for curated proxy signals that indicate a place is currently buzzy or newly popular:
These signals help surface trending places alongside established classics. In --vibes mode, weight these signals more heavily.
Classic, Hidden Gem, Trending, Aesthetic, Hole-in-the-wall, Splurge, Late Night — see Vibe Tags below)Parallelization strategy for activities: Spawn separate agents for each topic cluster to maximize research speed:
Aim for 4-6 places per sub-category, 50-70 total activities.
If addresses weren't found in Step 1, spawn a second Agent to look up addresses for all places found. Include the building name in Japanese when available (e.g., "1-1-7 Ebisu, Shibuya-ku (117ビル 1F)").
Output the results based on the user's chosen format:
Restaurants → Write to ./japan-recs/[Area] Restaurants.md
Activities → Write to ./japan-recs/[Area] Activities.md
Format the file as:
# [AREA NAME] Restaurant Recommendations
## 🍜 Ramen
| Name | Known For | Price | Vibe | Address | Maps | Link | Reservations | Status | Notes |
|------|-----------|-------|------|---------|------|------|--------------|--------|-------|
| Restaurant Name | Signature dish | ¥1,000 | Hidden Gem | Address | [Maps](url) | [Tabelog](url) | No | | Detailed notes... |
## 🍣 Sushi
| Name | Known For | Price | Vibe | Address | Maps | Link | Reservations | Status | Notes |
|------|-----------|-------|------|---------|------|------|--------------|--------|-------|
...
For activities, use the same table structure but with the activity category headers and Review/Website Link instead of Reservation/Review Link.
Leave the Status column empty — the user uses this to track bookings.
--csv)Restaurants → Write to ./japan-recs/[Area] Restaurants.csv
Activities → Write to ./japan-recs/[Area] Activities.csv
Columns: Category,Name,Known For,Price,Vibe,Address,Google Maps,Review/Website Link,Reservations,Status,Notes
--sheet SPREADSHEET_ID)Use the gws CLI to write results to the provided spreadsheet.
Row 1: [AREA NAME] RESTAURANT RECOMMENDATIONS (or ACTIVITIES & EXPERIENCES)
Row 2: (blank)
Row 3: [Category emoji] CATEGORY NAME
Row 4: Name | Known For | Price | Vibe | Address | Google Maps | Review/Website Link | Reservations | Status | Notes
Row 5+: Data rows
(blank row)
Row N: [Next category emoji] NEXT CATEGORY
Row N+1: Name | Known For | Price | Vibe | Address | Google Maps | Review/Website Link | Reservations | Status | Notes
...
Leave the Status column empty.
For large datasets (50+ entries): Build the complete data array in a Python script, write to a temp JSON file, then pass it to gws in a single values update call. This is more reliable than constructing huge JSON strings inline in bash.
Ramen 🍜, Yakiniku 🥩, Sushi 🍣, Izakaya/Bars 🍺, Tonkatsu/Soba/Teishoku 🥢, Teppanyaki/Fine Dining 🔥, Desserts & Sweets 🍡, Cafe ☕, Other 🍽️
Always include a Desserts & Sweets section (🍡) — research dessert spots, bakeries, mochi shops, kakigori, parfaits, taiyaki, crepes, matcha desserts, etc. specific to the area.
| Emoji | Category | What to include |
|---|---|---|
| 🎪 | Clubs & Nightlife | Nightclubs, dance venues, live music |
| 🍸 | Unique Nightlife / Themed | Themed bars, comedy izakayas, bar districts (Golden Gai, Omoide Yokocho), quirky venues |
| 🎤 | Karaoke | Karaoke chains and premium options with party plans |
| ⛩️ | Temples & Shrines | Major and hidden-gem temples and shrines |
| 🎨 | Museums & Galleries | Art museums, cultural museums, immersive experiences (teamLab) |
| 🌸 | Parks & Cherry Blossoms | Parks, gardens, seasonal viewing spots (cherry blossoms, autumn leaves) |
| 🎮 | Gaming & Arcades | Arcades, retro game shops, VR experiences, entertainment complexes |
| 🎯 | Unique Experiences | Go-karts, onsen/sento, sumo, sword experiences, market tours, capsule hotels, batting cages |
| ⛰️ | Sports & Outdoors | Hiking, day trips, baseball games, cycling tours |
| 🛍️ | Shopping Districts & Markets | Shopping neighborhoods, markets, specialty stores (knives, stationery, whisky) |
Adapt categories to the area: Not all categories apply everywhere. A research query for "Shinjuku" might emphasize nightlife and karaoke, while "Kamakura" would focus on temples and outdoors. Include what's relevant.
Seasonal awareness: If the user mentions a travel month, tailor recommendations accordingly (cherry blossoms in March-April, autumn leaves in November, festivals, etc.).
Every place in every mode (restaurants, activities, vibes) gets tagged with 1-2 vibe descriptors in the Vibe column:
| Tag | Meaning |
|---|---|
Classic |
Established institution, decades of history |
Hidden Gem |
Under-the-radar, locals-only, hard to find |
Trending |
Recently opened or currently buzzy on social media |
Aesthetic |
Design-forward, beautiful interior, photogenic |
Hole-in-the-wall |
No-frills, tiny, character-driven |
Splurge |
Premium experience, worth the price for the occasion |
Late Night |
Open late, good for after-hours |
Tags can be combined (e.g., "Trending, Aesthetic" or "Classic, Hole-in-the-wall"). Choose the 1-2 most defining tags for each place.
--vibes flag is set)When --vibes is set, use these categories instead of the standard restaurant or activity categories:
| Emoji | Category |
|---|---|
| ☕ | Aesthetic Cafes |
| 🍸 | Aesthetic Bars & Cocktail Lounges |
| 🍽️ | Aesthetic Restaurants |
| 🏙️ | Aesthetic Neighborhoods & Districts |
| 🏪 | Food Halls & Multi-Vendor Spaces |
Vibes file/tab naming: [Area] Vibes (e.g., "Shinjuku Vibes")
Vibes-mode research agent strategy: Spawn 4 parallel agents with vibes-tuned prompts:
Aesthetic cafes agent: Search design publications, "most beautiful cafe" lists, architect-designed spaces, kissaten with character, specialty coffee with standout interiors. Prioritize places featured in Wallpaper*, Dezeen, Monocle, ArchDaily, and Instagram "best cafes in [area]" lists.
Aesthetic bars agent: Search for speakeasies, hidden bars, rooftop views, World's 50 Best Bars entries, design-forward cocktail lounges, jazz bars with atmosphere. Look at TimeOut "best bars", cocktail competition winners, and design press features.
Aesthetic restaurants agent: Search for stunning interiors, unique settings (converted warehouses, garden dining, riverside), food-as-art presentation, Michelin-starred spots with design appeal. Check Wallpaper* City Guides, Monocle travel features, and "most beautiful restaurants" lists.
Neighborhood vibes agent: Search for area guides describing the feel of walking through specific neighborhoods, curated food crawl routes, food halls and multi-vendor spaces (depachika, yokocho, etc.), and "best neighborhoods for [eating/drinking/exploring]" guides.
In vibes mode, weight trending signals and design press mentions more heavily than pure review scores. A place with a 3.8 Google rating but featured in Wallpaper* is a better vibes pick than a 4.5-rated institution with no design appeal.
For each restaurant, include two links:
Google Maps — construct as: https://www.google.com/maps/search/?api=1&query=RESTAURANT+NAME+AREA+Tokyo
+)https://www.google.com/maps/search/?api=1&query=AFURI+Ebisu+TokyoReservation/Review link — use the best available from research:
https://www.google.com/search?q=RESTAURANT+NAME+AREA+Tokyo+reservationsAlways pass params via a variable to avoid ! escaping issues:
PARAMS='{"spreadsheetId":"SHEET_ID","range":"TabName!A1","valueInputOption":"RAW"}'
gws sheets spreadsheets values update --params "$PARAMS" --json '{"values":[...]}'
PARAMS='{"spreadsheetId":"SHEET_ID"}'
gws sheets spreadsheets batchUpdate --params "$PARAMS" --json '{"requests":[{"addSheet":{"properties":{"title":"Tab Name"}}}]}'
PARAMS='{"spreadsheetId":"SHEET_ID","range":"Tab Name!A1","valueInputOption":"RAW"}'
gws sheets spreadsheets values update --params "$PARAMS" --json '{"values":[["col1","col2"],["col1","col2"]]}'
PARAMS='{"spreadsheetId":"SHEET_ID","range":"Tab Name!A1:Z1000"}'
gws sheets spreadsheets values clear --params "$PARAMS"
PARAMS='{"spreadsheetId":"SHEET_ID","range":"Tab Name"}'
gws sheets spreadsheets values get --params "$PARAMS"