Requirements
- Target platform
- OpenClaw
- Install method
- Manual import
- Extraction
- Extract archive
- Prerequisites
- OpenClaw
- Primary doc
- SKILL.md
Build travel destination scenarios and brochures from a city name. Fetches street-level and landmark imagery from OpenStreetCam and Wikimedia Commons, then uses VLM Run (vlmrun) to generate a travel video and a travel plan. Use when the user wants a travel brochure, destination guide, travel video, or travel planning for a city.
Build travel destination scenarios and brochures from a city name. Fetches street-level and landmark imagery from OpenStreetCam and Wikimedia Commons, then uses VLM Run (vlmrun) to generate a travel video and a travel plan. Use when the user wants a travel brochure, destination guide, travel video, or travel planning for a city.
Hand the extracted package to your coding agent with a concrete install brief instead of figuring it out manually.
I downloaded a skill package from Yavira. Read SKILL.md from the extracted folder and install it by following the included instructions. Then review README.md for any prerequisites, environment setup, or post-install checks. Tell me what you changed and call out any manual steps you could not complete.
I downloaded an updated skill package from Yavira. Read SKILL.md from the extracted folder, compare it with my current installation, and upgrade it while preserving any custom configuration unless the package docs explicitly say otherwise. Then review README.md for any prerequisites, environment setup, or post-install checks. Summarize what changed and any follow-up checks I should run.
Create travel brochures, videos, and 1-day plans for a destination city by combining OpenStreetCam street-level photos, Wikimedia Commons imagery, and VLM Run for video and copy.
Before starting, ensure you have: Python 3.10 or higher installed Internet connection (for downloading images and API access) VLMRUN_API_KEY (optional, but required for video and travel plan generation) No API keys required for: OpenStreetCam (public read access) Wikimedia Commons (public access) Nominatim geocoding (public access)
Check if Python 3.10+ is installed: Windows (PowerShell): python --version # Should show Python 3.10.x or higher macOS/Linux: python3 --version # Should show Python 3.10.x or higher If Python is not installed or is an older version: Windows: Download from python.org macOS: brew install python@3.11 (or use python.org installer) Linux: sudo apt install python3.11 (Ubuntu/Debian) or use your distribution's package manager
Windows (PowerShell): # Using pip pip install uv # Or using PowerShell installer powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex" macOS/Linux: # Using pip pip install uv # Or using curl installer curl -LsSf https://astral.sh/uv/install.sh | sh Verify installation: uv --version
Navigate to the skill directory and create a virtual environment: Windows (PowerShell): cd c:\Users\mehed\.claude\skills\travel-destination-brochure uv venv .venv\Scripts\Activate.ps1 macOS/Linux: cd ~/.claude/skills/travel-destination-brochure uv venv source .venv/bin/activate Note: You should see (.venv) in your terminal prompt when activated.
Install the required packages: # Install vlmrun CLI (required for video and travel plan generation) uv pip install "vlmrun[cli]" # Install requests (required for API calls) uv pip install requests Verify installation: vlmrun --version python -c "import requests; print(requests.__version__)"
To generate travel videos and plans, you need a VLMRUN API key: Windows (PowerShell): # Set for current session Check .env file for api key $env:VLMRUN_API_KEY="your-api-key-here" # Set permanently (User-level) [System.Environment]::SetEnvironmentVariable('VLMRUN_API_KEY', 'your-api-key-here', 'User') macOS/Linux: # Set for current session export VLMRUN_API_KEY="your-api-key-here" # Set permanently (add to ~/.bashrc or ~/.zshrc) echo 'export VLMRUN_API_KEY="your-api-key-here"' >> ~/.bashrc source ~/.bashrc Verify environment variable: Read .env file to find api keys # Windows PowerShell echo $env:VLMRUN_API_KEY # macOS/Linux echo $VLMRUN_API_KEY
Test that everything works: # Test geocoding (should work without API key) uv run scripts/geocode_city.py "Paris, France" # Test vlmrun (if API key is set) vlmrun --help Installation Complete! You're ready to generate travel brochures.
Use the simplified all-in-one script that handles everything automatically: Windows (PowerShell): uv run scripts/simple_travel_brochure.py --city "Doha, Qatar" macOS/Linux: uv run scripts/simple_travel_brochure.py --city "Doha, Qatar" Alternative (if uv is not available): python scripts/simple_travel_brochure.py --city "Doha, Qatar" This script will: Geocode the city name to coordinates Fetch 3 street-level photos from OpenStreetCam Fetch 2 landmark images from Wikimedia Commons (total 5 images) Generate a 30-second travel video using vlmrun (if VLMRUN_API_KEY is set) Generate a one-day travel plan using vlmrun (if VLMRUN_API_KEY is set) Clean up temporary files automatically Options: --output DIR โ Output directory (default: ./travel_brochure) --osc-count N โ Number of OpenStreetCam photos (default: 3) --commons-count N โ Number of Commons images (default: 2) Note: Set the VLMRUN_API_KEY environment variable to enable video and travel plan generation. The script will skip video generation gracefully if the API key is not set. Example: uv run scripts/simple_travel_brochure.py --city "Paris, France" --output ./paris_trip Output: images/ โ Downloaded photos (5 images total) manifest.json โ Metadata about the city, coordinates, and image paths video/ โ Generated travel video (if VLMRUN_API_KEY is set) travel_plan.md โ One-day travel itinerary (if VLMRUN_API_KEY is set)
For more control over each step, use the individual scripts below.
Collect input โ Get destination city from the user. Geocode โ Resolve city name to coordinates (lat, lng). Fetch imagery & info โ OpenStreetCam (nearby photos) + Wikimedia Commons (search images and metadata). Generate assets โ Use vlmrun to create a short travel video and a travel plan from the collected images and info. All paths below are relative to the directory containing this SKILL.md. Run scripts using: uv run scripts/script_name.py (recommended - handles dependencies automatically via PEP 723) python scripts/script_name.py (if dependencies are already installed)
Ask the user: "Which city do you want the travel brochure and video for?" Use the exact city name (and country/region if ambiguous) for geocoding and Commons search.
Resolve city name to latitude/longitude (e.g. for OpenStreetCam and optional Commons geo-search). uv run scripts/geocode_city.py "Paris, France" # Or: python scripts/geocode_city.py "Tokyo" Output: JSON with lat, lng, display_name. Use these in Steps 3โ4.
OpenStreetCam provides street-level imagery. Base URL: https://api.openstreetcam.org/. Nearby sequences: POST /nearby-tracks โ body: lat, lng, distance (km). Nearby photos: POST /1.0/list/nearby-photos/ โ body: lat, lng, radius (meters), optional page, ipp. No access_token required for these read endpoints. Use scripts/fetch_openstreetcam.py to request photos and optionally download thumbnails/full images into a folder. uv run scripts/fetch_openstreetcam.py --lat 48.8566 --lng 2.3522 --radius 2000 --output ./assets/osc --max-photos 20 Produces: image files under --output and a small manifest (e.g. osc_manifest.json) with captions/locations if available.
Commons provides landmark and cultural images. API: https://commons.wikimedia.org/w/api.php. Search: action=query, list=search, srsearch=<city or landmark>, srnamespace=6 (File namespace). Image URLs and metadata: action=query, prop=imageinfo, iiprop=url|extmetadata, titles=File:.... Use scripts/fetch_commons.py to search by destination name, resolve file URLs, and optionally download to a folder. uv run scripts/fetch_commons.py --query "Paris landmarks" --output ./assets/commons --max-images 15 Produces: image files and a manifest (e.g. commons_manifest.json) with captions/descriptions from Commons.
Combine OSC and Commons manifests (and optionally add short text lines per image) into a single manifest or list that you can pass to vlmrun (e.g. paths + one short caption per image). The pipeline script can do this. uv run scripts/run_travel_pipeline.py --city "Paris, France" --output-dir ./travel_output This script should: geocode โ fetch OSC โ fetch Commons โ write images/ and manifest.json (or manifest.txt) under --output-dir.
Use the vlmrun-cli-skill workflow: ensure vlmrun is installed and VLMRUN_API_KEY is set. Travel video โ Pass the collected images and a single prompt so the model produces a short travel video (e.g. 30 seconds). Prefer -o to save the artifact. Note: If VLMRUN_API_KEY is set as an environment variable, you can omit --api-key: # Using environment variable (recommended) vlmrun chat "Create a 30-second travel video showcasing these images of [CITY]. Add subtle captions with the location names. Keep a calm, inspiring travel-documentary style." -i ./travel_output/images/photo1.jpg -i ./travel_output/images/photo2.jpg -i ./travel_output/images/photo3.jpg ... -o ./travel_output/video # Or using --api-key from .env, flag directly vlmrun --api-key "your-api-key-here" chat "Create a 30-second travel video showcasing these images of [CITY]. Add subtle captions with the location names. Keep a calm, inspiring travel-documentary style." -i ./travel_output/images/photo1.jpg -i ./travel_output/images/photo2.jpg -i ./travel_output/images/photo3.jpg ... -o ./travel_output/video If the number of files is large, reference the manifest and pass a subset (e.g. up to 10โ15 representative images) or use a prompt that says โusing the attached images in order.โ Travel plan (1-day) โ Use the same images plus a text prompt to get a narrative or bullet-point plan. # Using environment variable (recommended) vlmrun chat "Using these images and their locations, write a one-day travel plan for [CITY]: morning, midday, and evening activities with specific places and practical tips. Output as structured markdown (headings and bullet points)." -i ./travel_output/images/photo1.jpg -i ./travel_output/images/photo2.jpg ... -o ./travel_output # Or using --api-key flag directly vlmrun --api-key "your-api-key-here" chat "Using these images and their locations, write a one-day travel plan for [CITY]: morning, midday, and evening activities with specific places and practical tips. Output as structured markdown (headings and bullet points)." -i ./travel_output/images/photo1.jpg -i ./travel_output/images/photo2.jpg ... -o ./travel_output Save the modelโs text response (and any artifact) under --output-dir (e.g. travel_plan.md).
ScriptPurposescripts/geocode_city.pyCity name โ lat, lng (Nominatim)scripts/fetch_openstreetcam.pyFetch/download OpenStreetCam photos by lat/lng/radiusscripts/fetch_commons.pySearch and download Wikimedia Commons images by queryscripts/run_travel_pipeline.pyRun geocode + OSC + Commons and write manifest + images
OpenStreetCam: API Reference โ nearby-tracks, list/nearby-photos, auth only for uploads. Wikimedia Commons: Commons API โ action=query, list=search, prop=imageinfo; MediaWiki API help. vlmrun: Use the vlmrun-cli-skill for setup, env vars, and all vlmrun chat options.
User provided destination city (and country if needed). Geocoded city and confirmed lat/lng. Fetched OpenStreetCam photos; saved images and manifest. Fetched Commons images for the destination; saved images and manifest. Built aggregated manifest/images under one output dir. Ran vlmrun with collected images to generate travel video; saved artifact with -o. Ran vlmrun with same (or subset) images to generate travel plan; saved text as markdown.
Python not found: Windows: Ensure Python is added to PATH during installation, or use py instead of python macOS/Linux: Use python3 instead of python uv command not found: Restart your terminal after installation Windows: Check if uv is in your PATH: $env:PATH macOS/Linux: Ensure ~/.cargo/bin or ~/.local/bin is in your PATH Virtual environment activation fails: Windows PowerShell: If you get an execution policy error, run: Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser Windows CMD: Use .venv\Scripts\activate.bat instead of .ps1 macOS/Linux: Ensure you're using source .venv/bin/activate (not ./.venv/bin/activate) vlmrun not found: Ensure virtual environment is activated Reinstall: uv pip install "vlmrun[cli]" Verify: which vlmrun (macOS/Linux) or where.exe vlmrun (Windows)
Geocode fails โ Try adding country/region, or use โCity, Countryโ format. OpenStreetCam returns few/no results: Increase radius parameter (default: 2000m, try 5000m or 10000m) Try city center coordinates instead of outskirts Some regions have sparse coverage; try nearby major cities Commons returns few results โ Broaden query (e.g. โCity tourismโ, โCity sightsโ). vlmrun errors: Confirm VLMRUN_API_KEY is set correctly: echo $VLMRUN_API_KEY (macOS/Linux) or echo $env:VLMRUN_API_KEY (Windows) Check network connection Reduce number of input images if hitting API limits (try 5-10 images instead of 20+) Verify API key is valid and has sufficient credits/quota Script execution errors: Ensure you're in the correct directory (skill root directory) Check that virtual environment is activated Verify all dependencies are installed: uv pip list
# 1) Ask user for city, then run pipeline (e.g. "Paris, France") uv run scripts/run_travel_pipeline.py --city "Paris, France" --output-dir ./travel_output # 2) Generate travel video (use image paths from travel_output/images/ or image_paths.txt) vlmrun chat "Create a 30-second travel video from these images of Paris. Add short location captions. Calm documentary style." -i ./travel_output/images/img_0000.jpg -i ./travel_output/images/img_0001.jpg -o ./travel_output/video # 3) Generate 1-day travel plan (same images) vlmrun chat "Using these photos of Paris, write a one-day travel plan (morning, midday, evening) with specific places and tips in markdown." -i ./travel_output/images/img_0000.jpg -i ./travel_output/images/img_0001.jpg -o ./travel_output
OpenStreetCam API base: https://api.openstreetcam.org/ Commons API: https://commons.wikimedia.org/w/api.php Nominatim geocoding: https://nominatim.openstreetmap.org/search?q=<query>&format=json
Writing, remixing, publishing, visual generation, and marketing content production.
Largest current source with strong distribution and engagement signals.