Photo-Webcam Snapshots
Goal: Fetch a current image from a saved favorites list (number -> webcam page) and send it to the user.
Data source (favorites)
Default file in the workspace:
- docs/webcams/favorites-muenchen.json
Format:
- items[].id (int)
- items[].name (string)
- items[].page (URL of the webcam page)
- optional items[].image (direct image URL)
Typical user commands
- webcam 1
- webcam 3+4+5
- liste
- liste webcams
- fuege <name> <url> hinzu
Workflow: webcam N -> send image
1) Load favorites list from docs/webcams/favorites-muenchen.json.
2) Find entry with id equal to N.
3) Fetch snapshot:
- If image is set: load that URL directly
- Otherwise: derive current 1200 jpg from page URL
4) Save image to /tmp/webcamN.jpg
5) Send image via openclaw CLI:
openclaw message send --channel telegram --target <CHAT_ID> --message “Webcam N Name” --media /tmp/webcamN.jpg
Workflow: webcam 3+4+5 -> multiple images
Maximum 6 images per request; ask first if more are requested.
Run a separate openclaw call for each ID — never bundle multiple images into a single command or response.
Example for “webcam 1+3”:
python3 ... --id 1 --out /tmp/webcam1.jpg
-> read name from script output
openclaw message send --channel telegram --target <CHAT_ID> --message “Webcam 1 <name>” --media /tmp/webcam1.jpg
python3 ... --id 3 --out /tmp/webcam3.jpg
-> read name from script output
openclaw message send --channel telegram --target <CHAT_ID> --message “Webcam 3 <name>” --media /tmp/webcam3.jpg
Each openclaw command runs separately. The caption for each image comes exclusively from the script output (field “name”) of the respective call.
Workflow: liste -> send favorites list
Send a plain text list:
Webcam 1 Name
Webcam 2 Name
etc.
No formatting, plain text only.
Resolving the image URL (foto-webcam.eu)
For a webcam page like:
- https://www.foto-webcam.eu/webcam/zugspitze/
there is usually a direct “current” image at:
- https://www.foto-webcam.eu/webcam/zugspitze/current/1200.jpg
In practice: fetch the HTML with a browser User-Agent and search for a link matching .../current/<digits>.jpg.
Script
Use the script:
- skills/public/foto-webcam/scripts/foto_webcam_snapshot.py
Examples:
- Snapshot via favorites ID:
-
python3 skills/public/foto-webcam/scripts/foto_webcam_snapshot.py --favorites docs/webcams/favorites-muenchen.json --id 4 --out /tmp/webcam4.jpg -
Snapshot via URL:
python3 skills/public/foto-webcam/scripts/foto_webcam_snapshot.py --url https://www.foto-webcam.eu/webcam/zugspitze/ --out /tmp/zugspitze.jpg
Maintenance / adding webcams
- Add a new webcam: append to
favorites-muenchen.json(newid,name,page). - If a source is unreliable, set
imageto a direct JPG link.
Important: chat responses must be plain text only (no Markdown). For audio, use clean speech only (no special characters or formatting).
> Eine deutsche Version dieser Skill-Beschreibung ist weiter unten zu finden.
Foto-Webcam Schnappschüsse (Deutsch)
Ziel: Ein aktuelles Bild aus einer gespeicherten Favoritenliste (Nummer → Webcam-Seite) abrufen und an den Benutzer senden.
Datenquelle (Favoriten)
Standarddatei im Workspace:
- docs/webcams/favorites-muenchen.json
Format:
- items[].id (int)
- items[].name (string)
- items[].page (URL der Webcam-Seite)
- optional items[].image (direkte Bild-URL)
Typische Benutzerbefehle
- webcam 1
- webcam 3+4+5
- liste
- liste webcams
- fuege <name> <url> hinzu
Ablauf: webcam N -> Bild senden
1) Favoritenliste aus docs/webcams/favorites-muenchen.json laden.
2) Eintrag mit der entsprechenden ID finden.
3) Schnappschuss abrufen:
- Falls image gesetzt ist: diese URL direkt laden
- Andernfalls: aktuelles 1200-JPG aus der Seiten-URL ableiten
4) Bild unter /tmp/webcamN.jpg speichern
5) Bild per openclaw CLI senden:
openclaw message send --channel telegram --target <CHAT_ID> --message "Webcam N Name" --media /tmp/webcamN.jpg
Ablauf: webcam 3+4+5 -> mehrere Bilder
Maximal 6 Bilder pro Anfrage; bei mehr zuerst nachfragen.
Für jede ID einen separaten openclaw-Aufruf ausführen — niemals mehrere Bilder in einem einzigen Befehl oder einer Antwort bündeln.
Beispiel für „webcam 1+3":
python3 ... --id 1 --out /tmp/webcam1.jpg
-> Name aus Script-Ausgabe lesen
openclaw message send --channel telegram --target <CHAT_ID> --message "Webcam 1 <name>" --media /tmp/webcam1.jpg
python3 ... --id 3 --out /tmp/webcam3.jpg
-> Name aus Script-Ausgabe lesen
openclaw message send --channel telegram --target <CHAT_ID> --message "Webcam 3 <name>" --media /tmp/webcam3.jpg
Jeder openclaw-Befehl läuft separat. Die Bildunterschrift kommt ausschließlich aus der Script-Ausgabe (Feld „name") des jeweiligen Aufrufs.
Ablauf: liste -> Favoritenliste senden
Einfache Textliste senden:
Webcam 1 Name
Webcam 2 Name
usw.
Keine Formatierung, nur reiner Text.
Bild-URL auflösen (foto-webcam.eu)
Für eine Webcam-Seite wie:
- https://www.foto-webcam.eu/webcam/zugspitze/
gibt es normalerweise ein aktuelles Bild unter:
- https://www.foto-webcam.eu/webcam/zugspitze/current/1200.jpg
In der Praxis: HTML mit Browser-User-Agent abrufen und nach einem Link suchen, der auf .../current/<Ziffern>.jpg passt.
Script
Das Script verwenden:
- skills/public/foto-webcam/scripts/foto_webcam_snapshot.py
Beispiele:
- Schnappschuss per Favoriten-ID:
-
python3 skills/public/foto-webcam/scripts/foto_webcam_snapshot.py --favorites docs/webcams/favorites-muenchen.json --id 4 --out /tmp/webcam4.jpg -
Schnappschuss per URL:
python3 skills/public/foto-webcam/scripts/foto_webcam_snapshot.py --url https://www.foto-webcam.eu/webcam/zugspitze/ --out /tmp/zugspitze.jpg
Pflege / Webcams hinzufügen
- Neue Webcam hinzufügen: Eintrag in
favorites-muenchen.jsonergänzen (neueid,name,page). - Bei unzuverlässiger Quelle:
imageauf eine direkte JPG-URL setzen.
Wichtig: Chat-Antworten nur als reiner Text (kein Markdown). Für Sprachausgabe: sauberer Text ohne Sonderzeichen oder Formatierung.