Path.read_text()/write_text() default to the platform encoding (cp1252
on Windows), which mangles or crashes on UTF-8 files. yt-dlp's
video.info.json is UTF-8 and routinely contains non-ASCII bytes, so on
Windows the parse raised UnicodeDecodeError, was swallowed by a bare
except, and the /watch report came back missing Title/Uploader.
- download.py: read video.info.json as UTF-8; log parse failures to
stderr instead of swallowing them silently.
- whisper.py, setup.py: same UTF-8 fix on .env reads and writes for
symmetry across platforms.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
- watch.py: drop the ⚠️ emoji from the long-video warning; cp1252
consoles on Windows couldn't encode it and the script crashed.
- setup.py: add a Windows branch that prints winget / pip install
commands, matching what the README already promised.
- SKILL.md: note that Windows users must invoke the scripts with
`python`, not `python3` (which is the Microsoft Store stub).
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Give Claude the ability to watch any video — yt-dlp download, ffmpeg
frame extraction with auto-scaled fps, native-caption transcript with
Whisper (Groq/OpenAI) fallback.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>