japan-recs

Claude Code skill that researches Japan restaurant recommendations from Reddit, Tabelog, TripAdvisor & more, then outputs to Google Sheets, CSV, or Markdown

abalmeo
作者 abalmeo
数据 · MIT · 更新时间: 4 months ago
0
星标
0
Forks
社区
BBB
安全:
优秀
A
质量:
claude-codeclaude-code-skillclaude-skilljapan-restaurantsjapan-travel

name: japan-recs description: Research restaurants, activities, and places to visit in a specific area of Japan using forums, reviews, and social media, then compile the results into Google Sheets, CSV, or Markdown. disable-model-invocation: false user-invocable: true allowed-tools: Bash, Agent, WebSearch, WebFetch, Write argument-hint: [area] [--activities | --both | --vibes] [--csv | --sheet SPREADSHEET_ID]

Japan Travel Research & Recommendation Builder

Research top recommendations for a location in Japan and output the results in your preferred format. Supports both restaurant research and activity/experience research.

Arguments

/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)

If no type flag is provided, defaults to restaurants only. If no output flag is provided, defaults to Markdown.

Workflow

Step 1: Research

Spawn parallel Agents (one per topic area) to research across multiple sources simultaneously. Each agent should search:

For restaurant research, gather per place:

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.

For activity research, gather per place:

Parallelization strategy for activities: Spawn separate agents for each topic cluster to maximize research speed:

  1. Nightlife agent: Clubs, themed bars, karaoke
  2. Cultural agent: Temples, shrines, museums, parks/gardens
  3. Adventure agent: Gaming/arcades, unique experiences (go-karts, onsen, sumo), sports/outdoors
  4. Shopping agent: Shopping districts, markets, specialty stores

Aim for 4-6 places per sub-category, 50-70 total activities.

Step 2: Get Addresses

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)").

Step 3: Output Results

Output the results based on the user's chosen format:


Option A: Markdown (default)

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.


Option B: CSV (--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


Option C: Google Sheets (--sheet SPREADSHEET_ID)

Use the gws CLI to write results to the provided spreadsheet.

  1. Create a new tab named after the area (e.g., "Shinjuku Restaurants" or "Tokyo Activities")
  2. Clear any existing data if the tab already exists
  3. Write data in this format:
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.


Restaurant Category Emojis

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.

Activity Category Emojis

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.).

Vibe Tags

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 Categories (used when --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:

  1. 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.

  2. 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.

  3. 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.

  4. 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.

Links

For each restaurant, include two links:

  1. Google Maps — construct as: https://www.google.com/maps/search/?api=1&query=RESTAURANT+NAME+AREA+Tokyo

    • URL-encode the restaurant name (spaces become +)
    • Example: https://www.google.com/maps/search/?api=1&query=AFURI+Ebisu+Tokyo
  2. Reservation/Review link — use the best available from research:

    • Tabelog page (preferred for Japanese restaurants)
    • TripAdvisor page
    • Official website
    • Booking platform (TableCheck, OMAKASE, Klook)
    • If no specific link was found during research, use a Google search URL: https://www.google.com/search?q=RESTAURANT+NAME+AREA+Tokyo+reservations

GWS CLI Reference (for Google Sheets mode)

Shell escaping

Always 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":[...]}'

Create a new tab

PARAMS='{"spreadsheetId":"SHEET_ID"}'
gws sheets spreadsheets batchUpdate --params "$PARAMS" --json '{"requests":[{"addSheet":{"properties":{"title":"Tab Name"}}}]}'

Write data

PARAMS='{"spreadsheetId":"SHEET_ID","range":"Tab Name!A1","valueInputOption":"RAW"}'
gws sheets spreadsheets values update --params "$PARAMS" --json '{"values":[["col1","col2"],["col1","col2"]]}'

Clear data

PARAMS='{"spreadsheetId":"SHEET_ID","range":"Tab Name!A1:Z1000"}'
gws sheets spreadsheets values clear --params "$PARAMS"

Read data

PARAMS='{"spreadsheetId":"SHEET_ID","range":"Tab Name"}'
gws sheets spreadsheets values get --params "$PARAMS"
🔓 登录解锁更多
使用 GitHub 登录