{"skill":{"slug":"photo-webcam","displayName":"Photo Webcam","summary":"List and snapshot retrieval for webcams (especially foto-webcam.eu). Use this skill when the user types “webcam <number>”, wants to manage a webcam favorites...","description":"---\nname: photo-webcam\ndescription: List and snapshot retrieval for webcams (especially foto-webcam.eu). Use this skill when the user types “webcam <number>”, wants to manage a webcam favorites list, or needs a current snapshot JPG from a foto-webcam.eu webcam sent to chat.\n---\n\n# Photo-Webcam Snapshots\n\nGoal: Fetch a current image from a saved favorites list (number -> webcam page) and send it to the user.\n\n## Data source (favorites)\n\nDefault file in the workspace:\n- `docs/webcams/favorites-muenchen.json`\n\nFormat:\n- `items[].id` (int)\n- `items[].name` (string)\n- `items[].page` (URL of the webcam page)\n- optional `items[].image` (direct image URL)\n\n## Typical user commands\n\n- webcam 1\n- webcam 3+4+5\n- liste\n- liste webcams\n- fuege <name> <url> hinzu\n\n## Workflow: webcam N -> send image\n\n1) Load favorites list from docs/webcams/favorites-muenchen.json.\n2) Find entry with id equal to N.\n3) Fetch snapshot:\n   - If image is set: load that URL directly\n   - Otherwise: derive current 1200 jpg from page URL\n4) Save image to /tmp/webcamN.jpg\n5) Send image via openclaw CLI:\n   openclaw message send --channel telegram --target <CHAT_ID> --message “Webcam N Name” --media /tmp/webcamN.jpg\n\n## Workflow: webcam 3+4+5 -> multiple images\n\nMaximum 6 images per request; ask first if more are requested.\n\nRun a separate openclaw call for each ID — never bundle multiple images into a single command or response.\n\nExample for “webcam 1+3”:\n\n  python3 ... --id 1 --out /tmp/webcam1.jpg\n  -> read name from script output\n  openclaw message send --channel telegram --target <CHAT_ID> --message “Webcam 1 <name>” --media /tmp/webcam1.jpg\n\n  python3 ... --id 3 --out /tmp/webcam3.jpg\n  -> read name from script output\n  openclaw message send --channel telegram --target <CHAT_ID> --message “Webcam 3 <name>” --media /tmp/webcam3.jpg\n\nEach openclaw command runs separately. The caption for each image comes exclusively from the script output (field “name”) of the respective call.\n\n## Workflow: liste -> send favorites list\n\nSend a plain text list:\nWebcam 1 Name\nWebcam 2 Name\netc.\n\nNo formatting, plain text only.\n\n## Resolving the image URL (foto-webcam.eu)\n\nFor a webcam page like:\n- `https://www.foto-webcam.eu/webcam/zugspitze/`\n\nthere is usually a direct “current” image at:\n- `https://www.foto-webcam.eu/webcam/zugspitze/current/1200.jpg`\n\nIn practice: fetch the HTML with a browser User-Agent and search for a link matching `.../current/<digits>.jpg`.\n\n## Script\n\nUse the script:\n- `skills/public/foto-webcam/scripts/foto_webcam_snapshot.py`\n\nExamples:\n\n- Snapshot via favorites ID:\n  - `python3 skills/public/foto-webcam/scripts/foto_webcam_snapshot.py --favorites docs/webcams/favorites-muenchen.json --id 4 --out /tmp/webcam4.jpg`\n\n- Snapshot via URL:\n  - `python3 skills/public/foto-webcam/scripts/foto_webcam_snapshot.py --url https://www.foto-webcam.eu/webcam/zugspitze/ --out /tmp/zugspitze.jpg`\n\n## Maintenance / adding webcams\n\n- Add a new webcam: append to `favorites-muenchen.json` (new `id`, `name`, `page`).\n- If a source is unreliable, set `image` to a direct JPG link.\n\nImportant: chat responses must be plain text only (no Markdown). For audio, use clean speech only (no special characters or formatting).\n\n---\n\n> Eine deutsche Version dieser Skill-Beschreibung ist weiter unten zu finden.\n\n---\n\n# Foto-Webcam Schnappschüsse (Deutsch)\n\nZiel: Ein aktuelles Bild aus einer gespeicherten Favoritenliste (Nummer → Webcam-Seite) abrufen und an den Benutzer senden.\n\n## Datenquelle (Favoriten)\n\nStandarddatei im Workspace:\n- `docs/webcams/favorites-muenchen.json`\n\nFormat:\n- `items[].id` (int)\n- `items[].name` (string)\n- `items[].page` (URL der Webcam-Seite)\n- optional `items[].image` (direkte Bild-URL)\n\n## Typische Benutzerbefehle\n\n- webcam 1\n- webcam 3+4+5\n- liste\n- liste webcams\n- fuege <name> <url> hinzu\n\n## Ablauf: webcam N -> Bild senden\n\n1) Favoritenliste aus docs/webcams/favorites-muenchen.json laden.\n2) Eintrag mit der entsprechenden ID finden.\n3) Schnappschuss abrufen:\n   - Falls `image` gesetzt ist: diese URL direkt laden\n   - Andernfalls: aktuelles 1200-JPG aus der Seiten-URL ableiten\n4) Bild unter /tmp/webcamN.jpg speichern\n5) Bild per openclaw CLI senden:\n   openclaw message send --channel telegram --target <CHAT_ID> --message \"Webcam N Name\" --media /tmp/webcamN.jpg\n\n## Ablauf: webcam 3+4+5 -> mehrere Bilder\n\nMaximal 6 Bilder pro Anfrage; bei mehr zuerst nachfragen.\n\nFür jede ID einen separaten openclaw-Aufruf ausführen — niemals mehrere Bilder in einem einzigen Befehl oder einer Antwort bündeln.\n\nBeispiel für „webcam 1+3\":\n\n  python3 ... --id 1 --out /tmp/webcam1.jpg\n  -> Name aus Script-Ausgabe lesen\n  openclaw message send --channel telegram --target <CHAT_ID> --message \"Webcam 1 <name>\" --media /tmp/webcam1.jpg\n\n  python3 ... --id 3 --out /tmp/webcam3.jpg\n  -> Name aus Script-Ausgabe lesen\n  openclaw message send --channel telegram --target <CHAT_ID> --message \"Webcam 3 <name>\" --media /tmp/webcam3.jpg\n\nJeder openclaw-Befehl läuft separat. Die Bildunterschrift kommt ausschließlich aus der Script-Ausgabe (Feld „name\") des jeweiligen Aufrufs.\n\n## Ablauf: liste -> Favoritenliste senden\n\nEinfache Textliste senden:\nWebcam 1 Name\nWebcam 2 Name\nusw.\n\nKeine Formatierung, nur reiner Text.\n\n## Bild-URL auflösen (foto-webcam.eu)\n\nFür eine Webcam-Seite wie:\n- `https://www.foto-webcam.eu/webcam/zugspitze/`\n\ngibt es normalerweise ein aktuelles Bild unter:\n- `https://www.foto-webcam.eu/webcam/zugspitze/current/1200.jpg`\n\nIn der Praxis: HTML mit Browser-User-Agent abrufen und nach einem Link suchen, der auf `.../current/<Ziffern>.jpg` passt.\n\n## Script\n\nDas Script verwenden:\n- `skills/public/foto-webcam/scripts/foto_webcam_snapshot.py`\n\nBeispiele:\n\n- Schnappschuss per Favoriten-ID:\n  - `python3 skills/public/foto-webcam/scripts/foto_webcam_snapshot.py --favorites docs/webcams/favorites-muenchen.json --id 4 --out /tmp/webcam4.jpg`\n\n- Schnappschuss per URL:\n  - `python3 skills/public/foto-webcam/scripts/foto_webcam_snapshot.py --url https://www.foto-webcam.eu/webcam/zugspitze/ --out /tmp/zugspitze.jpg`\n\n## Pflege / Webcams hinzufügen\n\n- Neue Webcam hinzufügen: Eintrag in `favorites-muenchen.json` ergänzen (neue `id`, `name`, `page`).\n- Bei unzuverlässiger Quelle: `image` auf eine direkte JPG-URL setzen.\n\nWichtig: Chat-Antworten nur als reiner Text (kein Markdown). Für Sprachausgabe: sauberer Text ohne Sonderzeichen oder Formatierung.\n","tags":{"latest":"1.0.6"},"stats":{"comments":0,"downloads":1770,"installsAllTime":0,"installsCurrent":0,"stars":0,"versions":7},"createdAt":1770470873007,"updatedAt":1778486073009},"latestVersion":{"version":"1.0.6","createdAt":1778325943343,"changelog":"Version 1.0.6\n\n- No code or documentation changes detected in this release.\n- Functionality and documentation remain unchanged from the previous version.","license":"MIT-0"},"metadata":null,"owner":{"handle":"unixweb","userId":"s174tcrwnpemzy6zr2jdk2tmcx86cpvr","displayName":"Joachim Hummel","image":"https://avatars.githubusercontent.com/u/12023025?v=4"},"moderation":null}