Skip to content

Releases: JimmySadek/video-fetcher-to-markdown

v2.0.1: clearer safety boundaries, no behaviour change

Choose a tag to compare

@JimmySadek JimmySadek released this 07 Oct 09:25
c196ba4

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.dev from an old planning page; that domain fails URL-reputation checks.
  • fetch_media.py now imports its shared helpers normally instead of loading them by file path.
  • The dependency check looks for Python packages without importing them.
  • SKILL.md describes exactly which local tools run (never through a shell) and states that your browser login is used only when you ask for it.
  • SKILL.md and 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)

Choose a tag to compare

@JimmySadek JimmySadek released this 07 Oct 08:56
f002bcf

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? Run npx skills update and you get v2.0.0. The skill is still named youtube-fetcher, and the old repository address redirects here.
  • Cloned with git? git pull follows the redirect; you can also point your remote at the new address.
  • Old links, stars and forks all carry over.
  • YOUTUBE_FETCHER_DIR still works. The new name for that setting is VIDEO_FETCHER_DIR. Notes still go to ~/yt_transcripts by 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_whisper on Apple Silicon, otherwise OpenAI whisper. 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-frames override it.
  • --hint: names and terms Whisper should expect. In testing, --hint "Claude" fixed "cloud" → "Claude".
  • Login walls: a clear exit code 4 with the next steps, including a note when yt-dlp is 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; --force protection; 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-whisper

Verified

  • 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 whisper engine, Windows transcription. Vimeo now requires a login for downloads.

Details and decisions: specs/media-providers.md.

YouTube Fetcher v1.2.0

Choose a tag to compare

@JimmySadek JimmySadek released this 05 Sep 19:00
7401ded

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 txt and 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 --force only when you intend to replace the entire file, including annotations.
  • --format text remains Markdown for compatibility; use --format txt for 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-markdown

See 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

Choose a tag to compare

@JimmySadek JimmySadek released this 03 Aug 01:37
57ae480

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-markdown

Or 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.