{
  "schemaVersion": "1.0",
  "item": {
    "slug": "travel-destination-brochure",
    "name": "travel-destination-brochure",
    "source": "tencent",
    "type": "skill",
    "category": "内容创作",
    "sourceUrl": "https://clawhub.ai/MehediAhamed/travel-destination-brochure",
    "canonicalUrl": "https://clawhub.ai/MehediAhamed/travel-destination-brochure",
    "targetPlatform": "OpenClaw"
  },
  "install": {
    "downloadMode": "redirect",
    "downloadUrl": "/downloads/travel-destination-brochure",
    "sourceDownloadUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=travel-destination-brochure",
    "sourcePlatform": "tencent",
    "targetPlatform": "OpenClaw",
    "installMethod": "Manual import",
    "extraction": "Extract archive",
    "prerequisites": [
      "OpenClaw"
    ],
    "packageFormat": "ZIP package",
    "includedAssets": [
      ".env_template.txt",
      "README.md",
      "SKILL.md",
      "scripts/fetch_commons.py",
      "scripts/fetch_openstreetcam.py",
      "scripts/geocode_city.py"
    ],
    "primaryDoc": "SKILL.md",
    "quickSetup": [
      "Download the package from Yavira.",
      "Extract the archive and review SKILL.md first.",
      "Import or place the package into your OpenClaw setup."
    ],
    "agentAssist": {
      "summary": "Hand the extracted package to your coding agent with a concrete install brief instead of figuring it out manually.",
      "steps": [
        "Download the package from Yavira.",
        "Extract it into a folder your agent can access.",
        "Paste one of the prompts below and point your agent at the extracted folder."
      ],
      "prompts": [
        {
          "label": "New install",
          "body": "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."
        },
        {
          "label": "Upgrade existing",
          "body": "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."
        }
      ]
    },
    "sourceHealth": {
      "source": "tencent",
      "status": "healthy",
      "reason": "direct_download_ok",
      "recommendedAction": "download",
      "checkedAt": "2026-04-30T16:55:25.780Z",
      "expiresAt": "2026-05-07T16:55:25.780Z",
      "httpStatus": 200,
      "finalUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=network",
      "contentType": "application/zip",
      "probeMethod": "head",
      "details": {
        "probeUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=network",
        "contentDisposition": "attachment; filename=\"network-1.0.0.zip\"",
        "redirectLocation": null,
        "bodySnippet": null
      },
      "scope": "source",
      "summary": "Source download looks usable.",
      "detail": "Yavira can redirect you to the upstream package for this source.",
      "primaryActionLabel": "Download for OpenClaw",
      "primaryActionHref": "/downloads/travel-destination-brochure"
    },
    "validation": {
      "installChecklist": [
        "Use the Yavira download entry.",
        "Review SKILL.md after the package is downloaded.",
        "Confirm the extracted package contains the expected setup assets."
      ],
      "postInstallChecks": [
        "Confirm the extracted package includes the expected docs or setup files.",
        "Validate the skill or prompts are available in your target agent workspace.",
        "Capture any manual follow-up steps the agent could not complete."
      ]
    },
    "downloadPageUrl": "https://openagent3.xyz/downloads/travel-destination-brochure",
    "agentPageUrl": "https://openagent3.xyz/skills/travel-destination-brochure/agent",
    "manifestUrl": "https://openagent3.xyz/skills/travel-destination-brochure/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/travel-destination-brochure/agent.md"
  },
  "agentAssist": {
    "summary": "Hand the extracted package to your coding agent with a concrete install brief instead of figuring it out manually.",
    "steps": [
      "Download the package from Yavira.",
      "Extract it into a folder your agent can access.",
      "Paste one of the prompts below and point your agent at the extracted folder."
    ],
    "prompts": [
      {
        "label": "New install",
        "body": "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."
      },
      {
        "label": "Upgrade existing",
        "body": "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."
      }
    ]
  },
  "documentation": {
    "source": "clawhub",
    "primaryDoc": "SKILL.md",
    "sections": [
      {
        "title": "Travel Destination Brochure & Video",
        "body": "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."
      },
      {
        "title": "Prerequisites",
        "body": "Before starting, ensure you have:\n\nPython 3.10 or higher installed\nInternet connection (for downloading images and API access)\nVLMRUN_API_KEY (optional, but required for video and travel plan generation)\n\nNo API keys required for:\n\nOpenStreetCam (public read access)\nWikimedia Commons (public access)\nNominatim geocoding (public access)"
      },
      {
        "title": "Step 1: Verify Python Installation",
        "body": "Check if Python 3.10+ is installed:\n\nWindows (PowerShell):\n\npython --version\n# Should show Python 3.10.x or higher\n\nmacOS/Linux:\n\npython3 --version\n# Should show Python 3.10.x or higher\n\nIf Python is not installed or is an older version:\n\nWindows: Download from python.org\nmacOS: brew install python@3.11 (or use python.org installer)\nLinux: sudo apt install python3.11 (Ubuntu/Debian) or use your distribution's package manager"
      },
      {
        "title": "Step 2: Install uv (Package Manager)",
        "body": "Windows (PowerShell):\n\n# Using pip\npip install uv\n\n# Or using PowerShell installer\npowershell -ExecutionPolicy ByPass -c \"irm https://astral.sh/uv/install.ps1 | iex\"\n\nmacOS/Linux:\n\n# Using pip\npip install uv\n\n# Or using curl installer\ncurl -LsSf https://astral.sh/uv/install.sh | sh\n\nVerify installation:\n\nuv --version"
      },
      {
        "title": "Step 3: Create Virtual Environment",
        "body": "Navigate to the skill directory and create a virtual environment:\n\nWindows (PowerShell):\n\ncd c:\\Users\\mehed\\.claude\\skills\\travel-destination-brochure\nuv venv\n.venv\\Scripts\\Activate.ps1\n\nmacOS/Linux:\n\ncd ~/.claude/skills/travel-destination-brochure\nuv venv\nsource .venv/bin/activate\n\nNote: You should see (.venv) in your terminal prompt when activated."
      },
      {
        "title": "Step 4: Install Dependencies",
        "body": "Install the required packages:\n\n# Install vlmrun CLI (required for video and travel plan generation)\nuv pip install \"vlmrun[cli]\"\n\n# Install requests (required for API calls)\nuv pip install requests\n\nVerify installation:\n\nvlmrun --version\npython -c \"import requests; print(requests.__version__)\""
      },
      {
        "title": "Step 5: Set Up VLMRUN_API_KEY (Optional but Recommended)",
        "body": "To generate travel videos and plans, you need a VLMRUN API key:\n\nWindows (PowerShell):\n\n# Set for current session\nCheck .env file for api key\n\n$env:VLMRUN_API_KEY=\"your-api-key-here\"\n\n# Set permanently (User-level)\n[System.Environment]::SetEnvironmentVariable('VLMRUN_API_KEY', 'your-api-key-here', 'User')\n\nmacOS/Linux:\n\n# Set for current session\nexport VLMRUN_API_KEY=\"your-api-key-here\"\n\n# Set permanently (add to ~/.bashrc or ~/.zshrc)\necho 'export VLMRUN_API_KEY=\"your-api-key-here\"' >> ~/.bashrc\nsource ~/.bashrc\n\nVerify environment variable:\n\nRead .env file to find api keys\n\n# Windows PowerShell\necho $env:VLMRUN_API_KEY\n\n# macOS/Linux\necho $VLMRUN_API_KEY"
      },
      {
        "title": "Step 6: Verify Installation",
        "body": "Test that everything works:\n\n# Test geocoding (should work without API key)\nuv run scripts/geocode_city.py \"Paris, France\"\n\n# Test vlmrun (if API key is set)\nvlmrun --help\n\nInstallation Complete! You're ready to generate travel brochures."
      },
      {
        "title": "Quick Start (Recommended)",
        "body": "Use the simplified all-in-one script that handles everything automatically:\n\nWindows (PowerShell):\n\nuv run scripts/simple_travel_brochure.py --city \"Doha, Qatar\"\n\nmacOS/Linux:\n\nuv run scripts/simple_travel_brochure.py --city \"Doha, Qatar\"\n\nAlternative (if uv is not available):\n\npython scripts/simple_travel_brochure.py --city \"Doha, Qatar\"\n\nThis script will:\n\nGeocode the city name to coordinates\nFetch 3 street-level photos from OpenStreetCam\nFetch 2 landmark images from Wikimedia Commons (total 5 images)\nGenerate a 30-second travel video using vlmrun (if VLMRUN_API_KEY is set)\nGenerate a one-day travel plan using vlmrun (if VLMRUN_API_KEY is set)\nClean up temporary files automatically\n\nOptions:\n\n--output DIR — Output directory (default: ./travel_brochure)\n--osc-count N — Number of OpenStreetCam photos (default: 3)\n--commons-count N — Number of Commons images (default: 2)\n\nNote: 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.\n\nExample:\n\nuv run scripts/simple_travel_brochure.py --city \"Paris, France\" --output ./paris_trip\n\nOutput:\n\nimages/ — Downloaded photos (5 images total)\nmanifest.json — Metadata about the city, coordinates, and image paths\nvideo/ — Generated travel video (if VLMRUN_API_KEY is set)\ntravel_plan.md — One-day travel itinerary (if VLMRUN_API_KEY is set)"
      },
      {
        "title": "Advanced: Step-by-Step Workflow",
        "body": "For more control over each step, use the individual scripts below."
      },
      {
        "title": "Workflow Overview",
        "body": "Collect input – Get destination city from the user.\nGeocode – Resolve city name to coordinates (lat, lng).\nFetch imagery & info – OpenStreetCam (nearby photos) + Wikimedia Commons (search images and metadata).\nGenerate assets – Use vlmrun to create a short travel video and a travel plan from the collected images and info.\n\nAll paths below are relative to the directory containing this SKILL.md.\n\nRun scripts using:\n\nuv run scripts/script_name.py (recommended - handles dependencies automatically via PEP 723)\npython scripts/script_name.py (if dependencies are already installed)"
      },
      {
        "title": "Step 1: Get Destination City",
        "body": "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."
      },
      {
        "title": "Step 2: Geocode City",
        "body": "Resolve city name to latitude/longitude (e.g. for OpenStreetCam and optional Commons geo-search).\n\nuv run scripts/geocode_city.py \"Paris, France\"\n# Or: python scripts/geocode_city.py \"Tokyo\"\n\nOutput: JSON with lat, lng, display_name. Use these in Steps 3–4."
      },
      {
        "title": "Step 3: Fetch OpenStreetCam Photos",
        "body": "OpenStreetCam provides street-level imagery. Base URL: https://api.openstreetcam.org/.\n\nNearby sequences: POST /nearby-tracks — body: lat, lng, distance (km).\nNearby photos: POST /1.0/list/nearby-photos/ — body: lat, lng, radius (meters), optional page, ipp.\n\nNo access_token required for these read endpoints. Use scripts/fetch_openstreetcam.py to request photos and optionally download thumbnails/full images into a folder.\n\nuv run scripts/fetch_openstreetcam.py --lat 48.8566 --lng 2.3522 --radius 2000 --output ./assets/osc --max-photos 20\n\nProduces: image files under --output and a small manifest (e.g. osc_manifest.json) with captions/locations if available."
      },
      {
        "title": "Step 4: Fetch Wikimedia Commons Images & Info",
        "body": "Commons provides landmark and cultural images. API: https://commons.wikimedia.org/w/api.php.\n\nSearch: action=query, list=search, srsearch=<city or landmark>, srnamespace=6 (File namespace).\nImage URLs and metadata: action=query, prop=imageinfo, iiprop=url|extmetadata, titles=File:....\n\nUse scripts/fetch_commons.py to search by destination name, resolve file URLs, and optionally download to a folder.\n\nuv run scripts/fetch_commons.py --query \"Paris landmarks\" --output ./assets/commons --max-images 15\n\nProduces: image files and a manifest (e.g. commons_manifest.json) with captions/descriptions from Commons."
      },
      {
        "title": "Step 5: Aggregate Manifest for vlmrun",
        "body": "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.\n\nuv run scripts/run_travel_pipeline.py --city \"Paris, France\" --output-dir ./travel_output\n\nThis script should: geocode → fetch OSC → fetch Commons → write images/ and manifest.json (or manifest.txt) under --output-dir."
      },
      {
        "title": "Step 6: Generate Video and Travel Plan with vlmrun",
        "body": "Use the vlmrun-cli-skill workflow: ensure vlmrun is installed and VLMRUN_API_KEY is set.\n\nTravel 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.\n\nNote: If VLMRUN_API_KEY is set as an environment variable, you can omit --api-key:\n\n# Using environment variable (recommended)\nvlmrun 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\n\n# Or using --api-key from .env, flag directly\nvlmrun --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\n\nIf 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.”\n\nTravel plan (1-day) – Use the same images plus a text prompt to get a narrative or bullet-point plan.\n\n# Using environment variable (recommended)\nvlmrun 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\n\n# Or using --api-key flag directly\nvlmrun --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\n\nSave the model’s text response (and any artifact) under --output-dir (e.g. travel_plan.md)."
      },
      {
        "title": "Scripts Reference",
        "body": "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"
      },
      {
        "title": "API References",
        "body": "OpenStreetCam: API Reference — nearby-tracks, list/nearby-photos, auth only for uploads.\nWikimedia Commons: Commons API — action=query, list=search, prop=imageinfo; MediaWiki API help.\nvlmrun: Use the vlmrun-cli-skill for setup, env vars, and all vlmrun chat options."
      },
      {
        "title": "Checklist for a Complete Run",
        "body": "User provided destination city (and country if needed).\n Geocoded city and confirmed lat/lng.\n Fetched OpenStreetCam photos; saved images and manifest.\n Fetched Commons images for the destination; saved images and manifest.\n Built aggregated manifest/images under one output dir.\n Ran vlmrun with collected images to generate travel video; saved artifact with -o.\n Ran vlmrun with same (or subset) images to generate travel plan; saved text as markdown."
      },
      {
        "title": "Installation Issues",
        "body": "Python not found:\n\nWindows: Ensure Python is added to PATH during installation, or use py instead of python\nmacOS/Linux: Use python3 instead of python\n\nuv command not found:\n\nRestart your terminal after installation\nWindows: Check if uv is in your PATH: $env:PATH\nmacOS/Linux: Ensure ~/.cargo/bin or ~/.local/bin is in your PATH\n\nVirtual environment activation fails:\n\nWindows PowerShell: If you get an execution policy error, run: Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser\nWindows CMD: Use .venv\\Scripts\\activate.bat instead of .ps1\nmacOS/Linux: Ensure you're using source .venv/bin/activate (not ./.venv/bin/activate)\n\nvlmrun not found:\n\nEnsure virtual environment is activated\nReinstall: uv pip install \"vlmrun[cli]\"\nVerify: which vlmrun (macOS/Linux) or where.exe vlmrun (Windows)"
      },
      {
        "title": "Runtime Issues",
        "body": "Geocode fails – Try adding country/region, or use “City, Country” format.\nOpenStreetCam returns few/no results:\nIncrease radius parameter (default: 2000m, try 5000m or 10000m)\nTry city center coordinates instead of outskirts\nSome regions have sparse coverage; try nearby major cities\nCommons returns few results – Broaden query (e.g. “City tourism”, “City sights”).\nvlmrun errors:\nConfirm VLMRUN_API_KEY is set correctly: echo $VLMRUN_API_KEY (macOS/Linux) or echo $env:VLMRUN_API_KEY (Windows)\nCheck network connection\nReduce number of input images if hitting API limits (try 5-10 images instead of 20+)\nVerify API key is valid and has sufficient credits/quota\n\nScript execution errors:\n\nEnsure you're in the correct directory (skill root directory)\nCheck that virtual environment is activated\nVerify all dependencies are installed: uv pip list"
      },
      {
        "title": "Example End-to-End",
        "body": "# 1) Ask user for city, then run pipeline (e.g. \"Paris, France\")\nuv run scripts/run_travel_pipeline.py --city \"Paris, France\" --output-dir ./travel_output\n\n# 2) Generate travel video (use image paths from travel_output/images/ or image_paths.txt)\nvlmrun 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\n\n# 3) Generate 1-day travel plan (same images)\nvlmrun 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"
      },
      {
        "title": "Quick Reference: Key URLs",
        "body": "OpenStreetCam API base: https://api.openstreetcam.org/\nCommons API: https://commons.wikimedia.org/w/api.php\nNominatim geocoding: https://nominatim.openstreetmap.org/search?q=<query>&format=json"
      }
    ],
    "body": "Travel Destination Brochure & Video\n\nCreate 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.\n\nPrerequisites\n\nBefore starting, ensure you have:\n\nPython 3.10 or higher installed\nInternet connection (for downloading images and API access)\nVLMRUN_API_KEY (optional, but required for video and travel plan generation)\n\nNo API keys required for:\n\nOpenStreetCam (public read access)\nWikimedia Commons (public access)\nNominatim geocoding (public access)\nInstallation Steps\nStep 1: Verify Python Installation\n\nCheck if Python 3.10+ is installed:\n\nWindows (PowerShell):\n\npython --version\n# Should show Python 3.10.x or higher\n\n\nmacOS/Linux:\n\npython3 --version\n# Should show Python 3.10.x or higher\n\n\nIf Python is not installed or is an older version:\n\nWindows: Download from python.org\nmacOS: brew install python@3.11 (or use python.org installer)\nLinux: sudo apt install python3.11 (Ubuntu/Debian) or use your distribution's package manager\nStep 2: Install uv (Package Manager)\n\nWindows (PowerShell):\n\n# Using pip\npip install uv\n\n# Or using PowerShell installer\npowershell -ExecutionPolicy ByPass -c \"irm https://astral.sh/uv/install.ps1 | iex\"\n\n\nmacOS/Linux:\n\n# Using pip\npip install uv\n\n# Or using curl installer\ncurl -LsSf https://astral.sh/uv/install.sh | sh\n\n\nVerify installation:\n\nuv --version\n\nStep 3: Create Virtual Environment\n\nNavigate to the skill directory and create a virtual environment:\n\nWindows (PowerShell):\n\ncd c:\\Users\\mehed\\.claude\\skills\\travel-destination-brochure\nuv venv\n.venv\\Scripts\\Activate.ps1\n\n\nmacOS/Linux:\n\ncd ~/.claude/skills/travel-destination-brochure\nuv venv\nsource .venv/bin/activate\n\n\nNote: You should see (.venv) in your terminal prompt when activated.\n\nStep 4: Install Dependencies\n\nInstall the required packages:\n\n# Install vlmrun CLI (required for video and travel plan generation)\nuv pip install \"vlmrun[cli]\"\n\n# Install requests (required for API calls)\nuv pip install requests\n\n\nVerify installation:\n\nvlmrun --version\npython -c \"import requests; print(requests.__version__)\"\n\nStep 5: Set Up VLMRUN_API_KEY (Optional but Recommended)\n\nTo generate travel videos and plans, you need a VLMRUN API key:\n\nWindows (PowerShell):\n\n# Set for current session\nCheck .env file for api key\n\n$env:VLMRUN_API_KEY=\"your-api-key-here\"\n\n# Set permanently (User-level)\n[System.Environment]::SetEnvironmentVariable('VLMRUN_API_KEY', 'your-api-key-here', 'User')\n\n\nmacOS/Linux:\n\n# Set for current session\nexport VLMRUN_API_KEY=\"your-api-key-here\"\n\n# Set permanently (add to ~/.bashrc or ~/.zshrc)\necho 'export VLMRUN_API_KEY=\"your-api-key-here\"' >> ~/.bashrc\nsource ~/.bashrc\n\n\nVerify environment variable:\n\nRead .env file to find api keys\n\n# Windows PowerShell\necho $env:VLMRUN_API_KEY\n\n# macOS/Linux\necho $VLMRUN_API_KEY\n\nStep 6: Verify Installation\n\nTest that everything works:\n\n# Test geocoding (should work without API key)\nuv run scripts/geocode_city.py \"Paris, France\"\n\n# Test vlmrun (if API key is set)\nvlmrun --help\n\n\nInstallation Complete! You're ready to generate travel brochures.\n\nQuick Start (Recommended)\n\nUse the simplified all-in-one script that handles everything automatically:\n\nWindows (PowerShell):\n\nuv run scripts/simple_travel_brochure.py --city \"Doha, Qatar\"\n\n\nmacOS/Linux:\n\nuv run scripts/simple_travel_brochure.py --city \"Doha, Qatar\"\n\n\nAlternative (if uv is not available):\n\npython scripts/simple_travel_brochure.py --city \"Doha, Qatar\"\n\n\nThis script will:\n\nGeocode the city name to coordinates\nFetch 3 street-level photos from OpenStreetCam\nFetch 2 landmark images from Wikimedia Commons (total 5 images)\nGenerate a 30-second travel video using vlmrun (if VLMRUN_API_KEY is set)\nGenerate a one-day travel plan using vlmrun (if VLMRUN_API_KEY is set)\nClean up temporary files automatically\n\nOptions:\n\n--output DIR — Output directory (default: ./travel_brochure)\n--osc-count N — Number of OpenStreetCam photos (default: 3)\n--commons-count N — Number of Commons images (default: 2)\n\nNote: 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.\n\nExample:\n\nuv run scripts/simple_travel_brochure.py --city \"Paris, France\" --output ./paris_trip\n\n\nOutput:\n\nimages/ — Downloaded photos (5 images total)\nmanifest.json — Metadata about the city, coordinates, and image paths\nvideo/ — Generated travel video (if VLMRUN_API_KEY is set)\ntravel_plan.md — One-day travel itinerary (if VLMRUN_API_KEY is set)\nAdvanced: Step-by-Step Workflow\n\nFor more control over each step, use the individual scripts below.\n\nWorkflow Overview\nCollect input – Get destination city from the user.\nGeocode – Resolve city name to coordinates (lat, lng).\nFetch imagery & info – OpenStreetCam (nearby photos) + Wikimedia Commons (search images and metadata).\nGenerate assets – Use vlmrun to create a short travel video and a travel plan from the collected images and info.\n\nAll paths below are relative to the directory containing this SKILL.md.\n\nRun scripts using:\n\nuv run scripts/script_name.py (recommended - handles dependencies automatically via PEP 723)\npython scripts/script_name.py (if dependencies are already installed)\nStep 1: Get Destination City\n\nAsk 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.\n\nStep 2: Geocode City\n\nResolve city name to latitude/longitude (e.g. for OpenStreetCam and optional Commons geo-search).\n\nuv run scripts/geocode_city.py \"Paris, France\"\n# Or: python scripts/geocode_city.py \"Tokyo\"\n\n\nOutput: JSON with lat, lng, display_name. Use these in Steps 3–4.\n\nStep 3: Fetch OpenStreetCam Photos\n\nOpenStreetCam provides street-level imagery. Base URL: https://api.openstreetcam.org/.\n\nNearby sequences: POST /nearby-tracks — body: lat, lng, distance (km).\nNearby photos: POST /1.0/list/nearby-photos/ — body: lat, lng, radius (meters), optional page, ipp.\n\nNo access_token required for these read endpoints. Use scripts/fetch_openstreetcam.py to request photos and optionally download thumbnails/full images into a folder.\n\nuv run scripts/fetch_openstreetcam.py --lat 48.8566 --lng 2.3522 --radius 2000 --output ./assets/osc --max-photos 20\n\n\nProduces: image files under --output and a small manifest (e.g. osc_manifest.json) with captions/locations if available.\n\nStep 4: Fetch Wikimedia Commons Images & Info\n\nCommons provides landmark and cultural images. API: https://commons.wikimedia.org/w/api.php.\n\nSearch: action=query, list=search, srsearch=<city or landmark>, srnamespace=6 (File namespace).\nImage URLs and metadata: action=query, prop=imageinfo, iiprop=url|extmetadata, titles=File:....\n\nUse scripts/fetch_commons.py to search by destination name, resolve file URLs, and optionally download to a folder.\n\nuv run scripts/fetch_commons.py --query \"Paris landmarks\" --output ./assets/commons --max-images 15\n\n\nProduces: image files and a manifest (e.g. commons_manifest.json) with captions/descriptions from Commons.\n\nStep 5: Aggregate Manifest for vlmrun\n\nCombine 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.\n\nuv run scripts/run_travel_pipeline.py --city \"Paris, France\" --output-dir ./travel_output\n\n\nThis script should: geocode → fetch OSC → fetch Commons → write images/ and manifest.json (or manifest.txt) under --output-dir.\n\nStep 6: Generate Video and Travel Plan with vlmrun\n\nUse the vlmrun-cli-skill workflow: ensure vlmrun is installed and VLMRUN_API_KEY is set.\n\nTravel 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.\n\nNote: If VLMRUN_API_KEY is set as an environment variable, you can omit --api-key:\n\n# Using environment variable (recommended)\nvlmrun 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\n\n# Or using --api-key from .env, flag directly\nvlmrun --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\n\n\nIf 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.”\n\nTravel plan (1-day) – Use the same images plus a text prompt to get a narrative or bullet-point plan.\n\n# Using environment variable (recommended)\nvlmrun 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\n\n# Or using --api-key flag directly\nvlmrun --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\n\n\nSave the model’s text response (and any artifact) under --output-dir (e.g. travel_plan.md).\n\nScripts Reference\nScript\tPurpose\nscripts/geocode_city.py\tCity name → lat, lng (Nominatim)\nscripts/fetch_openstreetcam.py\tFetch/download OpenStreetCam photos by lat/lng/radius\nscripts/fetch_commons.py\tSearch and download Wikimedia Commons images by query\nscripts/run_travel_pipeline.py\tRun geocode + OSC + Commons and write manifest + images\nAPI References\nOpenStreetCam: API Reference — nearby-tracks, list/nearby-photos, auth only for uploads.\nWikimedia Commons: Commons API — action=query, list=search, prop=imageinfo; MediaWiki API help.\nvlmrun: Use the vlmrun-cli-skill for setup, env vars, and all vlmrun chat options.\nChecklist for a Complete Run\n User provided destination city (and country if needed).\n Geocoded city and confirmed lat/lng.\n Fetched OpenStreetCam photos; saved images and manifest.\n Fetched Commons images for the destination; saved images and manifest.\n Built aggregated manifest/images under one output dir.\n Ran vlmrun with collected images to generate travel video; saved artifact with -o.\n Ran vlmrun with same (or subset) images to generate travel plan; saved text as markdown.\nTroubleshooting\nInstallation Issues\n\nPython not found:\n\nWindows: Ensure Python is added to PATH during installation, or use py instead of python\nmacOS/Linux: Use python3 instead of python\n\nuv command not found:\n\nRestart your terminal after installation\nWindows: Check if uv is in your PATH: $env:PATH\nmacOS/Linux: Ensure ~/.cargo/bin or ~/.local/bin is in your PATH\n\nVirtual environment activation fails:\n\nWindows PowerShell: If you get an execution policy error, run: Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser\nWindows CMD: Use .venv\\Scripts\\activate.bat instead of .ps1\nmacOS/Linux: Ensure you're using source .venv/bin/activate (not ./.venv/bin/activate)\n\nvlmrun not found:\n\nEnsure virtual environment is activated\nReinstall: uv pip install \"vlmrun[cli]\"\nVerify: which vlmrun (macOS/Linux) or where.exe vlmrun (Windows)\nRuntime Issues\nGeocode fails – Try adding country/region, or use “City, Country” format.\nOpenStreetCam returns few/no results:\nIncrease radius parameter (default: 2000m, try 5000m or 10000m)\nTry city center coordinates instead of outskirts\nSome regions have sparse coverage; try nearby major cities\nCommons returns few results – Broaden query (e.g. “City tourism”, “City sights”).\nvlmrun errors:\nConfirm VLMRUN_API_KEY is set correctly: echo $VLMRUN_API_KEY (macOS/Linux) or echo $env:VLMRUN_API_KEY (Windows)\nCheck network connection\nReduce number of input images if hitting API limits (try 5-10 images instead of 20+)\nVerify API key is valid and has sufficient credits/quota\n\nScript execution errors:\n\nEnsure you're in the correct directory (skill root directory)\nCheck that virtual environment is activated\nVerify all dependencies are installed: uv pip list\nExample End-to-End\n# 1) Ask user for city, then run pipeline (e.g. \"Paris, France\")\nuv run scripts/run_travel_pipeline.py --city \"Paris, France\" --output-dir ./travel_output\n\n# 2) Generate travel video (use image paths from travel_output/images/ or image_paths.txt)\nvlmrun 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\n\n# 3) Generate 1-day travel plan (same images)\nvlmrun 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\n\nQuick Reference: Key URLs\nOpenStreetCam API base: https://api.openstreetcam.org/\nCommons API: https://commons.wikimedia.org/w/api.php\nNominatim geocoding: https://nominatim.openstreetmap.org/search?q=<query>&format=json"
  },
  "trust": {
    "sourceLabel": "tencent",
    "provenanceUrl": "https://clawhub.ai/MehediAhamed/travel-destination-brochure",
    "publisherUrl": "https://clawhub.ai/MehediAhamed/travel-destination-brochure",
    "owner": "MehediAhamed",
    "version": "1.0.0",
    "license": null,
    "verificationStatus": "Indexed source record"
  },
  "links": {
    "detailUrl": "https://openagent3.xyz/skills/travel-destination-brochure",
    "downloadUrl": "https://openagent3.xyz/downloads/travel-destination-brochure",
    "agentUrl": "https://openagent3.xyz/skills/travel-destination-brochure/agent",
    "manifestUrl": "https://openagent3.xyz/skills/travel-destination-brochure/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/travel-destination-brochure/agent.md"
  }
}