Repository navigation
Releases: JimmySadek/video-fetcher-to-markdown
Release list
v2.0.1: clearer safety boundaries, no behaviour change
A small safety-and-clarity release. Nothing changes in how the skill works. Run npx skills update to get it.
Why
The skills.sh listing showed a security audit failure from Gen Agent Trust Hub (Socket and Snyk pass). The audit itself called the skill's safety posture good. It flagged a link to a young website domain in an old planning page, a metadata file, and a code-loading pattern. This release removes those triggers.
Changed
- Removed a link to
codeguilds.devfrom an old planning page; that domain fails URL-reputation checks. fetch_media.pynow imports its shared helpers normally instead of loading them by file path.- The dependency check looks for Python packages without importing them.
SKILL.mddescribes exactly which local tools run (never through a shell) and states that your browser login is used only when you ask for it.SKILL.mdand the README now say the skill is independent and not affiliated with or endorsed by YouTube, Google, or any other video platform.
Verified
- 77 tests pass; CI on Linux, macOS and Windows.
Findings and evidence: specs/trust-hub-audit.md.
v2.0.0: Video Fetcher to Markdown (formerly YouTube Fetcher)
YouTube Fetcher is now Video Fetcher to Markdown
The skill outgrew its name: it now reads Instagram, TikTok, X, Vimeo, Facebook and other sites, not only YouTube.
Nothing breaks for existing users.
- Installed with
npx skills add? Runnpx skills updateand you get v2.0.0. The skill is still namedyoutube-fetcher, and the old repository address redirects here. - Cloned with git?
git pullfollows the redirect; you can also point your remote at the new address. - Old links, stars and forks all carry over.
YOUTUBE_FETCHER_DIRstill works. The new name for that setting isVIDEO_FETCHER_DIR. Notes still go to~/yt_transcriptsby default.
New install: npx skills add JimmySadek/video-fetcher-to-markdown
Other video sites, transcribed on your own machine
The skill now reads videos from Instagram, TikTok, X, Vimeo, Facebook and anything else yt-dlp supports, plus YouTube videos without captions and local files. The new scripts/fetch_media.py downloads the video, transcribes it locally with Whisper, and saves the same kind of archival note.
New
- Local Whisper transcription:
mlx_whisperon Apple Silicon, otherwise OpenAIwhisper. Nothing is sent to a transcription service. - Frames: for videos up to 3 minutes the note embeds a contact sheet with each tile's time, because short videos often put the real content on screen (tool names, prompts, links).
--frames/--no-framesoverride it. --hint: names and terms Whisper should expect. In testing,--hint "Claude"fixed "cloud" → "Claude".- Login walls: a clear exit code
4with the next steps, including a note whenyt-dlpis old (the most common cause). A browser fallback (scripts/browser_media_links.js) gets the page's direct audio, video or playlist links. Your browser login (--cookies-from-browser) is used only when you ask for it. - Same output rules as before: Markdown, plain text, JSON, SRT and WebVTT;
--forceprotection; exit codes 0–3 unchanged.
Unchanged
scripts/fetch_transcript.py (YouTube captions) behaves as in v1.2.0, plus the new VIDEO_FETCHER_DIR setting name.
Install the extra tools (once, none are installed automatically)
brew install ffmpeg yt-dlp
pipx install mlx-whisper # Apple Silicon; or: pipx install openai-whisperVerified
- 77 tests on Python 3.12 and 3.8; CI on Linux, macOS and Windows.
- Live: an Instagram reel (directly with yt-dlp 2026.08.19, and through the browser fallback) and a TikTok video with frames.
- Not yet tested live: X, Facebook, YouTube without captions, the non-mlx
whisperengine, Windows transcription. Vimeo now requires a login for downloads.
Details and decisions: specs/media-providers.md.
YouTube Fetcher v1.2.0
YouTube Fetcher v1.2.0 makes everyday capture safer and works better across languages, while keeping the portable, no-API-key workflow.
Improvements
- Protect existing Markdown, JSON, SRT, plain-text, and WebVTT files. Refresh an existing default note in place and preserve its permissions.
- Select captions using ordered language preferences, regional variants,
--lang auto, or--strict-lang. - Request YouTube machine translation explicitly with
--translate, with source language and translation provenance recorded in Markdown. - Jump to video moments through linked timestamps and chapters. Export plain text with
--format txtand WebVTT with--format vtt. - Bound network requests, skip optional metadata with
--no-metadata, and report useful access, timeout, translation, and filesystem errors. - Improve isolated setup, safe agent behavior, Unicode filenames/output, and cross-platform regression coverage.
Upgrade notes
- Existing destinations now return exit code 3 in every format and in interactive terminals. Use
--forceonly when you intend to replace the entire file, including annotations. --format textremains Markdown for compatibility; use--format txtfor plain text.- New-file publication is atomic on filesystems supporting hard links. Other filesystems use exclusive creation, which preserves existing files but can expose a new file while it is being written.
- YouTube caption access and translation availability still depend on the video and network. No audio download, browser-cookie access, or paid service is added.
Install
npx skills add JimmySadek/youtube-fetcher-to-markdownSee the README for isolated Python setup and the complete command reference.
Verification
61 regression tests; GitHub CI on Linux (Python 3.8 and 3.14), Windows (3.13), and macOS (3.13); local compatibility through Python 3.14 and the minimum supported caption-library version; Skills CLI 1.5.23 isolated installation; live full-video capture and Japanese-to-English translation.
Release pull request: #4
YouTube Fetcher v1.1.0
YouTube Fetcher v1.1.0 turns captioned YouTube videos into safer, Obsidian-ready archival Markdown notes.
Highlights:
- accepts watch, short, embed, Shorts, live, mobile, music, privacy-enhanced, legacy, and raw-ID inputs
- records the caption language and caption type actually returned
- adds configurable vault/output directories with clear precedence
- preserves existing notes by default and produces safer YAML and Markdown
- supports Python 3.8 through 3.13
- includes portable Codex/Claude skill metadata and an isolated Skills CLI install check
- moves the canonical default branch to main while automatically synchronizing legacy master raw links
Install:
npx skills add JimmySadek/youtube-fetcher-to-markdownOr inspect the tagged source before installation:
https://github.com/JimmySadek/youtube-fetcher-to-markdown/tree/v1.1.0
Verification: 14 deterministic tests, GitHub CI on Python 3.8 and 3.13, isolated Skills CLI 1.5.21 installation, and a live released-tag transcript smoke test.