Not in the top 1,000 by GitHub stars

JimmySadek/video-fetcher-to-markdown

Portable AI-agent skill: turn YouTube, Instagram, TikTok, X and other video links into Obsidian-ready Markdown notes: captions or local Whisper transcripts, frames, metadata and timestamps

History

Review weekly changes to SKILL.md before updating. Dates mark the weeks in which we observed each version; checks apply to the recorded commits.

View weekly changes

SKILL.md

Week of Oct 26, 2026 · +0 / −0 lines

Before Network or broad shell → After Network or broad shell

c196ba48df72 → c196ba48df72

Compare on GitHub

View on GitHubAdd to my skills

Verified commit c196ba48df72c064811adcb934104c3e6567858b

522GitHub stars
3stars in 7 days
1skill in this repository
0commits in 30 days

Heat

2.8
  • Star growth, last 7 daysNot available
  • Star growth, last 24 hoursNot available
  • Rank movement, last 7 daysNot available
  • Commits, last 30 daysNot available
  • Accounts asking about it through MCP, last 7 daysNot available
  • Hot votes this weekNot available

Heat never changes the order by stars, and sponsorship never touches it. How heat works

Stars over time

Oct 25, 2026Nov 6, 2026522

30-day change not yet available: not enough history.

Individual skills in this repository

How it works

youtube-fetcher

When your agent uses it

Retrieve transcripts from YouTube, Instagram, TikTok, X, Vimeo and other video sites, summarize or analyze what was said (and shown on screen), or save an Obsidian-ready Markdown knowledge-base note with captions or a Whisper transcript, creator metadata, frames, language, and source provenance. Use for a video URL, video ID or local video file when the request needs spoken content, on-screen text, or an archival note. A bare video link defaults to saving a note.

What it loads into context

Frontmatter

118 tokens

Always available to the agent

SKILL.md

2,883 tokens

When the skill is activated

Reference documents

9,420 tokens

Loaded on request

Token counts are estimates. Scripts run separately; they are not counted as reference context.

The playbook

  1. Choose the result the user asked for
  2. Other sites, and YouTube without captions
  3. Language and translation
  4. Preserve the user's work and source evidence
  5. Exports and capture controls
  6. Operational boundaries

Scripts executed separately

  • .scripts/verify-isolated-install.sh
  • scripts/browser_media_links.js
  • scripts/fetch_media.py
  • scripts/fetch_transcript.py
  • tests/test_cli.py
  • tests/test_fetch_media.py
  • tests/test_fetch_transcript.py
  • tests/test_skill_bundle.py

Files

  • .github/workflows/ci.ymlasset983 bytes
  • .github/workflows/sync-legacy-master.ymlasset443 bytes
  • .gitignoreasset36 bytes
  • .scripts/verify-isolated-install.shruns3,279 bytes
  • LICENSEasset1,066 bytes
  • README.mddoc20,362 bytes
  • SKILL.mdcore12,260 bytes
  • SKILL.mdcore12,260 bytes
  • SKILL.mdcore12,260 bytes
  • SKILL.mdcore12,260 bytes
  • SKILL.mdcore12,260 bytes
  • SKILL.mdcore12,260 bytes
  • SKILL.mdcore12,260 bytes
  • SKILL.mdcore12,260 bytes
  • SKILL.mdcore12,260 bytes
  • SKILL.mdcore12,260 bytes
  • SKILL.mdcore12,260 bytes
  • SKILL.mdcore12,260 bytes
  • SKILL.mdcore12,260 bytes
  • SKILL.mdcore12,260 bytes
  • SKILL.mdcore12,260 bytes
  • SKILL.mdcore12,260 bytes
  • SKILL.mdcore12,260 bytes
  • SKILL.mdcore12,260 bytes
  • SKILL.mdcore12,260 bytes
  • SKILL.mdcore12,260 bytes
  • SKILL.mdcore12,260 bytes
  • SKILL.mdcore12,260 bytes
  • SKILL.mdcore12,260 bytes
  • SKILL.mdcore12,260 bytes
  • SKILL.mdcore12,260 bytes
  • SKILL.mdcore12,260 bytes
  • SKILL.mdcore12,260 bytes
  • SKILL.mdcore12,260 bytes
  • SKILL.mdcore12,260 bytes
  • SKILL.mdcore12,260 bytes
  • SKILL.mdcore12,260 bytes
  • agents/openai.yamlasset258 bytes
  • assets/banner.pngasset1,595,851 bytes
  • requirements.txtdoc55 bytes
  • scripts/browser_media_links.jsruns2,797 bytes
  • scripts/fetch_media.pyruns29,179 bytes
  • scripts/fetch_transcript.pyruns34,838 bytes
  • specs/media-providers.mddoc5,213 bytes
  • specs/trust-hub-audit.mddoc6,384 bytes
  • specs/youtube-fetcher-reliability-and-languages.mddoc7,681 bytes
  • specs/youtube-fetcher-v1-1-release-and-distribution.htmlasset59,875 bytes
  • tests/test_cli.pyruns21,255 bytes
  • tests/test_fetch_media.pyruns12,173 bytes
  • tests/test_fetch_transcript.pyruns8,052 bytes
  • tests/test_skill_bundle.pyruns2,069 bytes
Read SKILL.md

# Video Fetcher to Markdown

Formerly YouTube Fetcher. The skill name stays `youtube-fetcher` so existing installs keep updating.
An independent open-source tool, not affiliated with or endorsed by YouTube, Google, or
any other video platform it reads.

Two scripts, one for each kind of source:

| Source | Script | How |
|---|---|---|
| YouTube with captions | `scripts/fetch_transcript.py` | Reads YouTube's captions. Fast, downloads nothing, no API key. |
| Instagram, TikTok, X, Vimeo, Facebook and other sites; YouTube without captions; a local video or audio file | `scripts/fetch_media.py` | Downloads with `yt-dlp`, transcribes locally with Whisper, adds a contact sheet of frames. |

Both export archival Markdown, plain text, JSON, SRT, or WebVTT and share the same
View the complete source on GitHub

Skills included

  • youtube-fetcher

Repository facts

License
MIT
Created
Mar 4, 2026
Last pushed
Oct 7, 2026
Forks
46
Open issues
0
Project activity
Active

Before you install

Network or broad shell

Automated signals, not a guarantee

Checked Nov 7, 2026

Not fully analyzed: some files were too long, unreadable or missing. This never lowers the level.

Show 30 notes
  • SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
Show all 163 signals by file

.scripts/verify-isolated-install.sh

  • Executable scriptline 1
    #!/usr/bin/env bash
  • Dangerous shell operationline 11
    "${TMPDIR:-/tmp}"/*|/tmp/*|/var/folders/*/T/*) rm -rf -- "$probe_root" ;;

README.md

  • Network accessline 17
    Read the [v2.0.0 release notes](https://github.com/JimmySadek/video-fetcher-to-markdown/releases/tag/v2.0.0)
  • Network accessline 37
    title: "Obsidian: The King of Learning Tools (FULL GUIDE + SETUP)" channel: "Odysseas" url: "https://www.youtube.com/watch?v=hSTy_BInQs8"
  • Network accessline 38
    channel: "Odysseas" url: "https://www.youtube.com/watch?v=hSTy_BInQs8" video_id: "hSTy_BInQs8"
  • Network accessline 39
    url: "https://www.youtube.com/watch?v=hSTy_BInQs8"
  • Network accessline 54
    | Field    | Value | |----------|-------| | URL      | https://www.youtube.com/watch?v=hSTy_BInQs8 |
  • Network accessline 55
    |----------|-------| | URL      | https://www.youtube.com/watch?v=hSTy_BInQs8 | | Channel  | Odysseas |
  • Network accessline 56
    | URL      | https://www.youtube.com/watch?v=hSTy_BInQs8 |
  • Network accessline 81
    The YAML frontmatter makes a collection queryable through tools such as [Dataview](https://github.com/blacksmithgu/obsidian-dataview), while the Markdown
  • Network accessline 82
    [Dataview](https://github.com/blacksmithgu/obsidian-dataview), while the Markdown
  • Network accessline 122
    git clone https://github.com/JimmySadek/video-fetcher-to-markdown.git
  • Network accessline 168
    python3 scripts/fetch_transcript.py "https://youtu.be/VIDEO_ID"
  • Network accessline 309
    python3 scripts/fetch_media.py --check-deps python3 scripts/fetch_media.py --hint "Claude, HyperFrames" -- "https://www.tiktok.com/@user/video/123"
  • Network accessline 310
    python3 scripts/fetch_media.py --hint "Claude, HyperFrames" -- "https://www.tiktok.com/@user/video/123"
  • Access to secretsline 330
    [Credential-related source omitted]
  • Network accessline 339
    [Kit to Clip](https://github.com/JimmySadek/kit-to-clip) turns a brand kit into finished, on-brand videos. Say
  • Access to secretsline 376
    [Credential-related source omitted]
  • Network accessline 380
    The [upstream caption library](https://github.com/jdepoix/youtube-transcript-api)
  • Network accessline 421
    and link. Keep the skill name `youtube-fetcher` for the same reason: `npx skills update` re-adds each install by that name. See [GitHub releases](https://github.com/JimmySadek/video-fetcher-to-markdown/releases)
  • Network accessline 422
    re-adds each install by that name. See [GitHub releases](https://github.com/JimmySadek/video-fetcher-to-markdown/releases) for tagged versions and upgrade notes.
  • Network accessline 423
    [GitHub releases](https://github.com/JimmySadek/video-fetcher-to-markdown/releases)

SKILL.md

  • Network accessline 47
    # SKILL_DIR is the directory containing this SKILL.md python3 "$SKILL_DIR/scripts/fetch_transcript.py" -- "https://youtu.be/VIDEO_ID"
  • Network accessline 48
    python3 "$SKILL_DIR/scripts/fetch_transcript.py" -- "https://youtu.be/VIDEO_ID"
  • Network accessline 60
    # Note with transcript and (for videos up to 3 minutes) a contact sheet of frames python3 "$SKILL_DIR/scripts/fetch_media.py" -- "https://www.tiktok.com/@user/video/123"
  • Network accessline 61
    python3 "$SKILL_DIR/scripts/fetch_media.py" -- "https://www.tiktok.com/@user/video/123"
  • Network accessline 94
    2. **Browser fallback, no login.** If you have a browser tool, open the page, run the    bundled `scripts/browser_media_links.js` in it (it returns the best `audio` and    `video` links, title and description), download both at once with `c
  • Network accessline 95
    bundled `scripts/browser_media_links.js` in it (it returns the best `audio` and    `video` links, title and description), download both at once with `curl -L -o`    (the links are signed and expire within hours), then:
  • Network accessline 96
    `video` links, title and description), download both at once with `curl -L -o`
  • Access to secretsline 109
    [Credential-related source omitted]
  • Access to secretsline 110
    [Credential-related source omitted]
  • Access to secretsline 168
    [Credential-related source omitted]
  • Access to secretsline 204
    [Credential-related source omitted]

scripts/browser_media_links.js

  • Executable scriptline 1
    Executable file
  • Possible obfuscationline 28
    try { const e = new URL(u).searchParams.get('efg'); return JSON.parse(atob(e.replace(/-/g, '+').replace(/_/g, '/'))); }

scripts/fetch_media.py

  • Executable scriptline 1
    #!/usr/bin/env python3
  • Access to secretsline 56
    [Credential-related source omitted]
  • Access to secretsline 68
    [Credential-related source omitted]
  • Access to secretsline 161
    [Credential-related source omitted]
  • Access to secretsline 173
    [Credential-related source omitted]
  • Access to secretsline 174
    [Credential-related source omitted]
  • Access to secretsline 178
    [Credential-related source omitted]
  • Access to secretsline 179
    [Credential-related source omitted]
  • Access to secretsline 207
    [Credential-related source omitted]
  • Access to secretsline 210
    [Credential-related source omitted]
  • Access to secretsline 515
    [Credential-related source omitted]
  • Access to secretsline 532
    [Credential-related source omitted]
  • Access to secretsline 634
    [Credential-related source omitted]

scripts/fetch_transcript.py

  • Executable scriptline 1
    #!/usr/bin/env python3
  • Access to secretsline 222
    [Credential-related source omitted]
  • Network accessline 291
    url = f"https://www.youtube.com/watch?v={video_id}"
  • Network accessline 339
    url = f"https://www.youtube.com/oembed?url=https://www.youtube.com/watch?v={video_id}&format=json"     try:         resp = requests.get(url, timeout=timeout)
  • Network accessline 340
    try:         resp = requests.get(url, timeout=timeout)         resp.raise_for_status()
  • Network accessline 341
    resp = requests.get(url, timeout=timeout)
  • Network accessline 541
    def timestamp_link(seconds: float, video_id: str) -> str:     return f"[{format_timestamp(seconds)}](https://www.youtube.com/watch?v={video_id}&t={max(0, int(seconds))}s)"
  • Network accessline 542
    return f"[{format_timestamp(seconds)}](https://www.youtube.com/watch?v={video_id}&t={max(0, int(seconds))}s)"
  • Network accessline 597
    video_url = f"https://www.youtube.com/watch?v={video_id}"
  • Network accessline 764
    file=sys.stderr,                 )             transcript = selected.fetch()
  • Network accessline 765
    )             transcript = selected.fetch()             if not transcript or not any(
  • Network accessline 766
    transcript = selected.fetch()

specs/media-providers.md

  • Access to secretsline 13
    [Credential-related source omitted]
  • Access to secretsline 15
    [Credential-related source omitted]
  • Access to secretsline 34
    [Credential-related source omitted]
  • Access to secretsline 38
    [Credential-related source omitted]

specs/trust-hub-audit.md

  • Access to secretsline 17
    [Credential-related source omitted]
  • Network accessline 28
    curl -s "https://skills.sh/api/v1/skills/audit/jimmysadek/youtube-fetcher-to-markdown/youtube-fetcher"
  • Access to secretsline 86
    [Credential-related source omitted]

specs/youtube-fetcher-reliability-and-languages.md

  • Access to secretsline 16
    [Credential-related source omitted]
  • Network accessline 47
    [v1.2.0](https://github.com/JimmySadek/youtube-fetcher-to-markdown/releases/tag/v1.2.0)
  • Network accessline 48
    was published on 2026-09-05 at `7401ded6c6195f38db962c95a3cc0a92a96bf42a`, through [PR #4](https://github.com/JimmySadek/youtube-fetcher-to-markdown/pull/4). All Linux, Windows, and macOS jobs passed in
  • Network accessline 49
    through [PR #4](https://github.com/JimmySadek/youtube-fetcher-to-markdown/pull/4).
  • Network accessline 50
    All Linux, Windows, and macOS jobs passed in [PR CI](https://github.com/JimmySadek/youtube-fetcher-to-markdown/actions/runs/33985647882) and [post-merge CI](https://github.com/JimmySadek/youtube-fetcher-to-markdown/actions/runs/33985725827)
  • Network accessline 51
    [PR CI](https://github.com/JimmySadek/youtube-fetcher-to-markdown/actions/runs/33985647882)
  • Network accessline 52
    and [post-merge CI](https://github.com/JimmySadek/youtube-fetcher-to-markdown/actions/runs/33985725827).
  • Network accessline 53
    The [legacy mirror check](https://github.com/JimmySadek/youtube-fetcher-to-markdown/actions/runs/33985725846)

specs/youtube-fetcher-v1-1-release-and-distribution.html

  • Network accessline 71
    </style> <script type="module">   import mermaid from "https://cdn.jsdelivr.net/npm/mermaid@11.16.0/dist/mermaid.esm.min.mjs";
  • Network accessline 72
    <script type="module">   import mermaid from "https://cdn.jsdelivr.net/npm/mermaid@11.16.0/dist/mermaid.esm.min.mjs";   const css = getComputedStyle(document.documentElement);
  • Network accessline 73
    import mermaid from "https://cdn.jsdelivr.net/npm/mermaid@11.16.0/dist/mermaid.esm.min.mjs";
  • Network accessline 96
    <header>     <h1>Plan: YouTube Fetcher v1.1 Release and Distribution</h1>     <p><strong>Historical v1.1 record.</strong> Engineering continues in the <a href="../README.md">current README</a> and <a href="youtube-fetcher-reliability-and-la
  • Network accessline 97
    <h1>Plan: YouTube Fetcher v1.1 Release and Distribution</h1>     <p><strong>Historical v1.1 record.</strong> Engineering continues in the <a href="../README.md">current README</a> and <a href="youtube-fetcher-reliability-and-languages.md">v
  • Network accessline 98
    <p><strong>Historical v1.1 record.</strong> Engineering continues in the <a href="../README.md">current README</a> and <a href="youtube-fetcher-reliability-and-languages.md">v1.2 reliability and language record</a>. Unless explicitly update
  • Network accessline 108
    <dt>Agent</dt><dd>Codex</dd>         <dt>Session</dt><dd>Current Codex desktop planning task</dd>         <dt>Back references</dt><dd><a href="../README.md">README</a>, <a href="../SKILL.md">skill contract</a>, <a href="../scripts/fetch_tra
  • Network accessline 109
    <dt>Session</dt><dd>Current Codex desktop planning task</dd>         <dt>Back references</dt><dd><a href="../README.md">README</a>, <a href="../SKILL.md">skill contract</a>, <a href="../scripts/fetch_transcript.py">runtime script</a>, <a hr
  • Network accessline 110
    <dt>Back references</dt><dd><a href="../README.md">README</a>, <a href="../SKILL.md">skill contract</a>, <a href="../scripts/fetch_transcript.py">runtime script</a>, <a href="https://skills.sh/jimmysadek/youtube-fetcher-to-markdown/youtube-
  • Network accessline 111
    <dt>Forward references</dt><dd>The release, CodeGuilds issue URLs, and <a href="https://github.com/VoltAgent/awesome-agent-skills/pull/869">VoltAgent pull request #869</a> are recorded below. Future directory submissions still require their
  • Network accessline 348
    <ul>         <li><code class="status">[x]</code> The full deterministic regression suite passed on all tested Python versions.</li>         <li><code class="status">[x]</code> <code>python3 scripts/fetch_transcript.py 'https://youtu.be/hSTy
  • Network accessline 349
    <li><code class="status">[x]</code> The full deterministic regression suite passed on all tested Python versions.</li>         <li><code class="status">[x]</code> <code>python3 scripts/fetch_transcript.py 'https://youtu.be/hSTy_BInQs8' --st
  • Network accessline 350
    <li><code class="status">[x]</code> <code>python3 scripts/fetch_transcript.py 'https://youtu.be/hSTy_BInQs8' --stdout --no-description</code> passed end to end without saving a transcript.</li>
  • Network accessline 362
    <li><code class="status">[x]</code> Renamed the local baseline branch to <code>main</code>, tracked <code>origin/main</code>, and refreshed <code>origin/HEAD</code>. The separate Claude worktree remains at <code>d07e035</code> with its untr
  • Network accessline 363
    <li><code class="status">[x]</code> Raw <code>main</code> and compatibility <code>master</code> README and banner URLs return HTTP 200; the live CodeGuilds banner loaded at 1536 × 1024.</li>         <li><code class="status">[x]</code> Pull 
  • Network accessline 364
    <li><code class="status">[x]</code> Pull request <a href="https://github.com/JimmySadek/youtube-fetcher-to-markdown/pull/2">#2</a> merged cleanly at <code>57ae480</code> after Python 3.8 and 3.13 checks passed.</li>
  • Network accessline 365
    <li><code class="status">[x]</code> Post-merge CI run <a href="https://github.com/JimmySadek/youtube-fetcher-to-markdown/actions/runs/30777209683">30777209683</a> and legacy-sync run <a href="https://github.com/JimmySadek/youtube-fetcher-to
  • Network accessline 366
    <li><code class="status">[x]</code> Annotated tag <code>v1.1.0</code> and the <a href="https://github.com/JimmySadek/youtube-fetcher-to-markdown/releases/tag/v1.1.0">GitHub Release</a> point to merged commit <code>57ae480</code>.</li>
  • Network accessline 376
    <p>CodeGuilds work needs its own external-action approval and may proceed in parallel with directory research after v1.1 is public.</p>       <ul>         <li><code class="status">[x]</code> Reported the published npm CLI package-path failu
  • Network accessline 377
    <ul>         <li><code class="status">[x]</code> Reported the published npm CLI package-path failure as <a href="https://github.com/xdevsapps/codeguilds-cli/issues/1">codeguilds-cli #1</a> with the isolated stack trace and verified one-line
  • Network accessline 378
    <li><code class="status">[x]</code> Reported the published npm CLI package-path failure as <a href="https://github.com/xdevsapps/codeguilds-cli/issues/1">codeguilds-cli #1</a> with the isolated stack trace and verified one-line source corre
  • Network accessline 380
    <li><code class="status">[x]</code> Corrected the clipped tagline, refreshed the claimed listing to the released v1.1 README, published its v1.1.0 version record, and set the truthful <code>npx skills</code> install command.</li>         <l
  • Network accessline 381
    <li><code class="status">[x]</code> Re-tested <code>codeguilds info</code> and <code>codeguilds install --project</code> inside disposable home and project directories. The registry reports v1.1.0, but installation falsely succeeds after co
  • Network accessline 382
    <li><code class="status">[x]</code> Reported the incomplete multi-file skill behavior and ignored project scope as <a href="https://github.com/xdevsapps/codeguilds-cli/issues/2">codeguilds-cli #2</a>; current upstream types can describe onl
  • Network accessline 394
    <li><code class="status">[x]</code> <strong>VoltAgent preflight:</strong> captured 191 stars, 15 forks, and 118 skills.sh installs; re-read the live policy; found no duplicate YouTube Fetcher entry; verified the v1.1 release and canonical r
  • Network accessline 395
    <li><code class="status">[x]</code> <strong>Existing discovery:</strong> skills.sh remains live at 118 installs. CodeGuilds shows zero web downloads and one CLI record from the 2026-08-03 isolated verification; that record is not evidence o
  • Network accessline 396
    <li><code class="status">[x]</code> <strong>Wave 1 — submitted:</strong> opened <a href="https://github.com/VoltAgent/awesome-agent-skills/pull/869">VoltAgent pull request #869</a> under Productivity and Collaboration. The link-only entry u
  • Network accessline 397
    <li><code class="status">[]</code> <strong>Conditional human channel:</strong> the live <a href="https://github.com/travisvn/awesome-claude-skills/blob/main/CONTRIBUTING.md">Travis policy</a> prohibits AI-generated or AI-submitted proposals
  • Network accessline 398
    <li><code class="status">[x]</code> <strong>Awesome Claude Code decision — hold:</strong> the <a href="https://github.com/hesreallyhim/awesome-claude-code/issues/new?template=recommend-resource.yml">live human form</a> was inspected. It req
  • Network accessline 399
    <li><code class="status">[]</code> <strong>Optional Wave 2 — staged:</strong> <a href="https://www.awesomeskills.dev/en/submit">AwesomeSkills.dev</a> accepts a GitHub URL and publishes instantly. Its form was inspected, but submission remai
  • Network accessline 473
    <tr><td>Move from <code>master</code> to <code>main</code></td><td>Delivered safely</td><td><code>main</code> is canonical; the automatically fast-forwarded <code>master</code> compatibility branch preserves raw legacy links without divergi
  • Network accessline 474
    <tr><td>CodeGuilds verification</td><td>Partially delivered</td><td>Listing, banner, tagline, README, version, and correct Skills CLI command are live. CodeGuilds' own multi-file installer remains upstream-blocked in issues #1 and #2. Its o
  • Network accessline 475
    <tr><td>Selective library distribution</td><td>Wave 1 submitted</td><td><a href="https://github.com/VoltAgent/awesome-agent-skills/pull/869">VoltAgent pull request #869</a> is open. Travis remains human-authored only. Awesome Claude Code is
  • Network accessline 496
    <ul>       <li>VoltAgent's prior Strategic Partner rejection was specifically about missing real community usage; YouTube Fetcher's present evidence addresses that concern but does not guarantee acceptance.</li>       <li>VoltAgent showed 6
  • Network accessline 497
    <li>VoltAgent's prior Strategic Partner rejection was specifically about missing real community usage; YouTube Fetcher's present evidence addresses that concern but does not guarantee acceptance.</li>       <li>VoltAgent showed 65 open pull
  • Network accessline 498
    <li>VoltAgent showed 65 open pull requests immediately after YouTube Fetcher became <a href="https://github.com/VoltAgent/awesome-agent-skills/pull/869">pull request #869</a>. Its link-only, cross-agent policy and mature-usage requirement m
  • Network accessline 513
    <p><strong>2026-08-03 — local release candidate:</strong> Phases 1–4 completed in feature commit <code>f3a5028</code>. Deterministic tests, Python 3.8/3.13 compatibility, skill validation, formatting and shell checks, isolated installation,
  • Network accessline 514
    <p><strong>2026-08-03 — v1.1 publication:</strong> Jimmy approved the remote gate and later authorized the necessary CodeGuilds correction. GitHub's default moved to <code>main</code>; a synchronized <code>master</code> compatibility branch
  • Network accessline 515
    <p><strong>2026-08-03 — CodeGuilds truth:</strong> The claimed page now shows the released tagline, README, correct Skills CLI command, banner, and version 1.1.0. An isolated CodeGuilds install proved its current single-file skill model can
  • Network accessline 516
    <p><strong>2026-08-03 — end-to-end distribution plan:</strong> Live policy, queue, duplicate, provenance, and usage research confirms that no additional library submission has occurred. VoltAgent is the recommended first link-based PR; Trav
  • Network accessline 517
    <p><strong>2026-08-04 — browser-led distribution execution:</strong> Jimmy authorized end-to-end execution. Codex used the signed-in in-app browser to re-read policies, search duplicates and queues, synchronize Jimmy's VoltAgent fork, and s

tests/test_cli.py

  • Executable scriptline 1
    Executable file
  • Network accessline 31
    Session(),         VIDEO_ID,         "https://example.invalid/captions",
  • Network accessline 32
    VIDEO_ID,         "https://example.invalid/captions",         code,
  • Network accessline 33
    "https://example.invalid/captions",
  • Network accessline 355
    self.assertEqual(code, 0)         self.assertIn(             f"[01:05](https://www.youtube.com/watch?v={VIDEO_ID}&t=65s)", stdout
  • Network accessline 356
    self.assertIn(             f"[01:05](https://www.youtube.com/watch?v={VIDEO_ID}&t=65s)", stdout         )
  • Network accessline 357
    f"[01:05](https://www.youtube.com/watch?v={VIDEO_ID}&t=65s)", stdout
  • Network accessline 463
    session = stack.enter_context(app.create_http_session(7))             request = stack.enter_context(patch.object(Session, "request"))             session.get("https://example.invalid")
  • Network accessline 464
    request = stack.enter_context(patch.object(Session, "request"))             session.get("https://example.invalid")             session.post("https://example.invalid", json={})
  • Network accessline 465
    session.get("https://example.invalid")
  • Network accessline 466
    session.post("https://example.invalid", json={})

tests/test_fetch_media.py

  • Executable scriptline 1
    Executable file
  • Network accessline 24
    REEL = "https://www.instagram.com/reel/DeHP8DPsimI/"
  • Network accessline 42
    "upload_date": "20261005",             "extractor_key": "TikTok",             "webpage_url": "https://www.tiktok.com/@maker/video/abc123",
  • Network accessline 43
    "extractor_key": "TikTok",             "webpage_url": "https://www.tiktok.com/@maker/video/abc123",             "vcodec": "h264",
  • Network accessline 44
    "webpage_url": "https://www.tiktok.com/@maker/video/abc123",
  • Network accessline 106
    self.assertFalse(media.is_url("/tmp/clip.mp4"))         self.assertEqual(media.id_from_url(REEL), "DeHP8DPsimI")         self.assertEqual(media.id_from_url("https://vimeo.com/76979871?share=1"), "76979871")
  • Network accessline 107
    self.assertEqual(media.id_from_url(REEL), "DeHP8DPsimI")         self.assertEqual(media.id_from_url("https://vimeo.com/76979871?share=1"), "76979871")         self.assertEqual(media.id_from_url(""), "")
  • Network accessline 108
    self.assertEqual(media.id_from_url("https://vimeo.com/76979871?share=1"), "76979871")
  • Access to secretsline 168
    [Credential-related source omitted]
  • Access to secretsline 170
    [Credential-related source omitted]
  • Access to secretsline 172
    [Credential-related source omitted]
  • Instruction override signalline 182
    self.assertIn('platform: "TikTok"', text)             self.assertIn('vocabulary_hint: "Claude"', text)             self.assertIn("> Ignore previous instructions", text)  # description kept as quoted source text
  • Instruction override signalline 183
    self.assertIn('vocabulary_hint: "Claude"', text)             self.assertIn("> Ignore previous instructions", text)  # description kept as quoted source text             self.assertIn("[01:05] Number one.", text)
  • Instruction override signalline 184
    self.assertIn("> Ignore previous instructions", text)  # description kept as quoted source text
  • Network accessline 196
    def test_stream_link_keeps_the_page_identity(self):         with tempfile.TemporaryDirectory() as tmp:             stream = "https://cdn.example.com/hls/master.m3u8?sig=1"
  • Network accessline 197
    with tempfile.TemporaryDirectory() as tmp:             stream = "https://cdn.example.com/hls/master.m3u8?sig=1"             code, _, _ = run_cli(["--output-dir", tmp, "--source-url", REEL, "--platform", "Instagram",
  • Network accessline 198
    stream = "https://cdn.example.com/hls/master.m3u8?sig=1"

tests/test_fetch_transcript.py

  • Executable scriptline 1
    Executable file
  • Network accessline 38
    cases = {             VIDEO_ID: VIDEO_ID,             f"https://www.youtube.com/watch?v={VIDEO_ID}": VIDEO_ID,
  • Network accessline 39
    VIDEO_ID: VIDEO_ID,             f"https://www.youtube.com/watch?v={VIDEO_ID}": VIDEO_ID,             f"https://youtube.com/watch?feature=share&v={VIDEO_ID}&t=42": VIDEO_ID,
  • Network accessline 40
    f"https://www.youtube.com/watch?v={VIDEO_ID}": VIDEO_ID,
  • Network accessline 41
    f"https://youtube.com/watch?feature=share&v={VIDEO_ID}&t=42": VIDEO_ID,
  • Network accessline 42
    f"https://m.youtube.com/watch?list=abc&v={VIDEO_ID}": VIDEO_ID,
  • Network accessline 43
    f"https://music.youtube.com/watch?v={VIDEO_ID}": VIDEO_ID,
  • Network accessline 44
    f"https://youtu.be/{VIDEO_ID}?si=abc": VIDEO_ID,
  • Network accessline 45
    f"https://youtube.com/embed/{VIDEO_ID}": VIDEO_ID,
  • Network accessline 46
    f"https://www.youtube-nocookie.com/embed/{VIDEO_ID}": VIDEO_ID,
  • Network accessline 47
    f"https://youtube.com/shorts/{VIDEO_ID}?feature=share": VIDEO_ID,
  • Network accessline 48
    f"https://youtube.com/live/{VIDEO_ID}": VIDEO_ID,
  • Network accessline 54
    def test_rejects_lookalike_hosts_and_invalid_ids(self):         cases = [             f"https://youtube.com.example.org/watch?v={VIDEO_ID}",
  • Network accessline 55
    cases = [             f"https://youtube.com.example.org/watch?v={VIDEO_ID}",             f"https://notyoutube.com/watch?v={VIDEO_ID}",
  • Network accessline 56
    f"https://youtube.com.example.org/watch?v={VIDEO_ID}",
  • Network accessline 57
    f"https://notyoutube.com/watch?v={VIDEO_ID}",
  • Network accessline 58
    "https://youtube.com/watch?feature=share",
  • Network accessline 59
    "https://youtu.be/too-short",

tests/test_skill_bundle.py

  • Executable scriptline 1
    Executable file

How the signals fit together

Facts from a static read of the files at the pinned commit. They describe what the code does, not why.

Some files could not be read; the facts below still hold.

Signal confidence: 122 facts

and 72 more

Works with

Agent compatibility, from the files in this repository
AgentStatusEvidenceInstall to
Claude CodeCompatibleStandard SKILL.md SKILL.md.claude/skills/<skill-name>/
CodexCompatibleStandard SKILL.md SKILL.md.agents/skills/<skill-name>/
CursorCompatibleStandard SKILL.md SKILL.md.cursor/skills/<skill-name>/
Gemini CLICompatibleStandard SKILL.md SKILL.md.gemini/skills/<skill-name>/
GitHub CopilotCompatibleStandard SKILL.md SKILL.md.github/skills/<skill-name>/
OpenCodeCompatibleStandard SKILL.md SKILL.md.opencode/skills/<skill-name>/
  • Native The repository ships a manifest, folder or frontmatter field for this agent.
  • Compatible A standard SKILL.md that this agent can read.
  • Unknown No evidence either way.

Derived automatically from paths, manifests and frontmatter. Not tested on each agent.