agentCLAWHUBUnverified

youtube-transcript-native-node

Extract a clean plain-text transcript from existing YouTube captions - native Node.js, zero npm dependencies. Use when the user asks to summarize, quote, or extract captions/transcript text from a YouTube URL. Wraps the `yt-dlp` binary on PATH; writes subtitles to a temp dir, parses .vtt captions, strips timestamps/HTML tags, and prints clean text or JSON. No API keys required.

OpenClaw

Rank

62

Safety

84

Downloads

1.8k

Updated

Oct 10, 2026

Version

1.1.27

Source

CLAWHUB

About

What it does, and when to use it.

Capability contract not published. No trust telemetry is available yet. 1.8K downloads reported by the source. Last updated 10/10/2026.

Avoid when

  • Contract metadata is missing or unavailable for deterministic execution.

Risk flags: missing_or_unavailable_contract, trust_data_unavailable, schema_references_missing

Public facts

Every fact links back to the source it came from.

Vendor
Clawhubvendor · observed Oct 10, 2026
Protocol compatibility
OpenClawcompatibility · observed Oct 10, 2026
Adoption signal
1.8K downloadsadoption · observed Oct 10, 2026
Latest release
1.1.27release · observed Sep 11, 2026
Handshake status
UNKNOWNsecurity

Install and run

Setup complexity: low.

clawhub skill install s177the448m6rk54wz8gse0jnd8587yq:youtube-transcript-native-node
  1. Install using `clawhub skill install s177the448m6rk54wz8gse0jnd8587yq:youtube-transcript-native-node` in an isolated environment before connecting it to live workloads.
  2. No published capability contract is available yet, so validate auth and request/response behavior manually.
  3. Review the upstream CLAWHUB listing at https://clawhub.ai/jwestburg/youtube-transcript-native-node before using production credentials.

Contract: missing

curl -s "https://www.xpersona.co/api/v1/agents/clawhub-jwestburg-youtube-transcript-native-node/snapshot"

Documentation

CLAWHUB

145,335 characters of source documentation, loaded on request.

Extracted files

4 files captured from the source.

SKILL.md

---
name: youtube-transcript-native-node
description: Extract a clean plain-text transcript from existing YouTube captions - native Node.js, zero npm dependencies. Use when the user asks to summarize, quote, or extract captions/transcript text from a YouTube URL. Wraps the `yt-dlp` binary on PATH; writes subtitles to a temp dir, parses .vtt captions, strips timestamps/HTML tags, and prints clean text or JSON. No API keys required.
version: 1.1.27
risk_class: external-binary-youtube-network-third-party-content
---

# YouTube Transcript (Native Node)

Version: 1.1.27 / YouTube caption utility with external binary and YouTube access.

Minimal YouTube caption extractor. Native Node.js, zero npm dependencies, wraps the external `yt-dlp` binary.

## Risk / invocation class

Risk class: **external binary wrapper / YouTube network access / third-party content**.

Use deliberately. This skill does not call a web API directly, but `yt-dlp` talks to YouTube and the local environment owns the trusted `yt-dlp` PATH/binary supply-chain boundary.

## Input packet

Required:

- `url`: full single-video YouTube URL from the user. Supported shapes are `youtube.com/watch?v=...`, `/shorts/...`, `/live/...`, `/embed/...`, and `youtu.be/...`; playlists, channels, search, and redirect pages are rejected.
- `goal`: raw transcript, summary input, quote extraction, timestamped notes, or JSON handoff.
- `privacy_sensitivity`: normal, private/client, or unknown.
- `language`: default `en` unless another language is requested.

Optional:

- `timestamps`: needed or not.
- `json`: needed for downstream tool use.
- `dedup_preference`: default auto-caption rolling-window dedup, or `--no-dedup` to preserve rolling-window/repeated-phrase artifacts as much as possible. Exact consecutive duplicate cue text may still be collapsed during VTT parsing.
- `output_destination`: chat summary, explicitly approved saved file path, downstream summarizer, etc.

Stop or ask before use if the video/context is private or client-sensitive and sending access to YouTube via `yt-dlp` is not appropriate.

## Output packet

Return compactly:

- source YouTube URL
- language requested and whether timestamps/JSON were used
- transcript status: success, no captions, dependency missing, private/blocked/rate-limited, or failed
- whether captions appear auto-generated when known
- saved path if the transcript was separately written to an explicitly approved file
- concise transcript summary or excerpt, unless the user requested raw text
- caveats and next safe step

## Security behavior

- Accepts only HTTPS single-video YouTube URLs on `youtube.com`, `www.youtube.com`, `m.youtube.com`, or `youtu.be`; playlist/channel/search/redirect pages and URL credentials are rejected, and invalid-URL errors redact credential, query, and fragment material before printing user-provided URL context.
- Validates `--lang` as a bounded BCP-47-style subtitle language tag such as `en`, `es`, or `en-US`; wildcard/bulk values suc

_meta.json

{
  "ownerId": "kn78bc0rnqe8pnvd4azdnjvmmd858m3q",
  "slug": "youtube-transcript-native-node",
  "version": "1.1.27",
  "publishedAt": 1789093534500
}

references/youtube-transcript-contract.md

# YouTube Transcript Contract

Use only when the compact `SKILL.md` is not enough.

## Commands

Script: `scripts/fetch.mjs`

```powershell
node "<skill-dir>\scripts\fetch.mjs" --url "https://www.youtube.com/watch?v=VIDEO_ID"
node "<skill-dir>\scripts\fetch.mjs" --url "https://www.youtube.com/watch?v=VIDEO_ID" --lang es
node "<skill-dir>\scripts\fetch.mjs" --url "https://www.youtube.com/watch?v=VIDEO_ID" --timestamps
node "<skill-dir>\scripts\fetch.mjs" --url "https://www.youtube.com/watch?v=VIDEO_ID" --json
node "<skill-dir>\scripts\fetch.mjs" --help
```

POSIX shell examples:

```sh
node "<skill-dir>/scripts/fetch.mjs" --url "https://www.youtube.com/watch?v=VIDEO_ID"
node "<skill-dir>/scripts/fetch.mjs" --url "https://www.youtube.com/watch?v=VIDEO_ID" --json
```

## Flags

| Flag | Values | Default | Purpose |
|---|---|---|---|
| `--url` | HTTPS single-video YouTube URL | required | Video to fetch captions for; playlists, channels, search, redirects, and other bulk/non-video pages are rejected |
| `--lang` | bounded BCP-47-style language tag | `en` | Subtitle language, e.g. `en`, `es`, `de`, `en-US`; wildcard/bulk values such as `all` are rejected |
| `--timestamps` | flag | off | Keep `[hh:mm:ss]` prefixes in plain-text or JSON transcript output |
| `--json` | flag | off | Output `{ url, title, lang, auto, timestamps, transcript }` |
| `--no-dedup` | flag | off | Disable rolling-window dedup for auto-captions |
| `-h`, `--help` | flag | — | Show help |

## Credentials and dependency

No API keys or env secrets. Requires Node.js 18+ and `yt-dlp` installed/on PATH for normal use. The wrapper spawns `yt-dlp` with a minimal child environment allowlist instead of ambient `process.env`, and blanks common home/profile/config/cache path variables for the child. It also passes `--ignore-config`, `--no-cache-dir`, and `--no-plugin-dirs` so config/cache behavior and default or added plugin-directory discovery do not silently alter wrapper behavior or load additional local plugin code for this invocation. Self-test mode can lower test-only size/timeout limits for offline regression coverage, but production execution never replaces `yt-dlp` with an arbitrary script path from `YOUTUBE_TRANSCRIPT_TEST_*`; offline tests use an explicit internal self-test fixture argument instead of ambient command redirection. Do not set self-test hooks for normal transcript extraction. The wrapper requests VTT subtitles directly with `--sub-format vtt` and does not invoke yt-dlp's subtitle-conversion postprocessor.

Do not install or update `yt-dlp` as part of this skill without explicit approval.

Package-manager examples for an approved install path:

- Windows: `winget install yt-dlp`
- macOS: `brew install yt-dlp`
- Cross-platform: use official yt-dlp project instructions.

Verify:

```powershell
yt-dlp --version
```

## Auto-caption rolling-window dedup

YouTube auto-generated captions often emit a 3-line scrolling window, causing repeated phrase spam when cues are conc

skill-card.md

## Description:

Extracts clean plain-text or JSON transcripts from existing YouTube captions using native Node.js and a local yt-dlp binary.

This skill is ready for commercial/non-commercial use.

## Publisher:

[jwestburg](https://clawhub.ai/user/jwestburg)

### License/Terms of Use:

MIT-0

## Use Case:

Developers and agent users use this skill to fetch existing captions from a supported single-video YouTube URL and hand clean transcript text to summarization, quote extraction, research triage, or downstream tools.

### Deployment Geography for Use:

Global

## Known Risks and Mitigations:

Risk: Full YouTube URLs may contain tracking, tokens, or other sensitive query parameters and are sent to YouTube through yt-dlp.

Mitigation: Avoid private or client-sensitive videos and strip tracking, token, or other sensitive query parameters before use or downstream logging.

Risk: Normal operation depends on a trusted local yt-dlp binary that contacts YouTube for the supplied video.

Mitigation: Use a trusted yt-dlp binary on PATH, keep the wrapper's YouTube-only single-video allowlist, and do not install or update yt-dlp through the skill without explicit approval.

Risk: Video titles and transcript text are untrusted third-party content and may be inaccurate, auto-generated, copyrighted, or adversarial to downstream agents.

Mitigation: Treat captions as data rather than instructions, summarize before quoting large passages, and republish long transcripts only when rights or permission are clear.

## Reference(s):

- [YouTube Transcript Contract](artifact/references/youtube-transcript-contract.md)
- [ClawHub skill page](https://clawhub.ai/jwestburg/skills/youtube-transcript-native-node)

## Skill Output:

**Output Type(s):** [text, JSON, shell commands, guidance]

**Output Format:** [Plain text or JSON transcript output, with compact Markdown status and caveats from the agent]

**Output Parameters:** [1D]

**Other Properties Related to Output:** [May include source URL, requested language, timestamp mode, auto-caption status, transcript status, caveats, next safe step, and saved path when file output is explicitly approved.]

## Skill Version(s):

1.1.27 (source: frontmatter and server release evidence)

## Ethical Considerations:

Users should evaluate whether this skill is appropriate for their environment, review any generated or modified files before relying on them, and apply their organization's safety, security, and compliance requirements before deployment.
Github ReposUpdated 12h agoRank 70

AionUi

Free, local, open-source 24/7 Cowork app and OpenClaw for Gemini CLI, Claude Code, Codex, OpenCode, Qwen Code, Goose CLI, Auggie, and more | 🌟 Star if you like it!

MCPOPENCLAW
Github ReposUpdated 6mo agoRank 70

activepieces

AI Agents & MCPs & AI Workflow Automation • (~400 MCP servers for AI agents) • AI Automation / AI Agent with MCPs • AI Workflows & AI Agents • MCPs for AI Agents

OPENCLAW
Github ReposUpdated 6mo agoRank 70

cherry-studio

AI productivity studio with smart chat, autonomous agents, and 300+ assistants.

MCPOPENCLAW
Github ReposUpdated 7mo agoRank 70

CopilotKit

The Frontend for Agents & Generative UI. React + Angular

OPENCLAW

Machine-readable data

The same record, as JSON, for agents and crawlers.

{
  "facts": [
    {
      "factKey": "vendor",
      "category": "vendor",
      "label": "Vendor",
      "value": "Clawhub",
      "href": "https://clawhub.ai/jwestburg/skills/youtube-transcript-native-node",
      "sourceUrl": "https://clawhub.ai/jwestburg/skills/youtube-transcript-native-node",
      "sourceType": "profile",
      "confidence": "medium",
      "observedAt": "2026-10-10T03:02:08.406Z",
      "isPublic": true
    },
    {
      "factKey": "protocols",
      "category": "compatibility",
      "label": "Protocol compatibility",
      "value": "OpenClaw",
      "href": "https://www.xpersona.co/api/v1/agents/clawhub-jwestburg-youtube-transcript-native-node/contract",
      "sourceUrl": "https://www.xpersona.co/api/v1/agents/clawhub-jwestburg-youtube-transcript-native-node/contract",
      "sourceType": "contract",
      "confidence": "medium",
      "observedAt": "2026-10-10T03:02:08.406Z",
      "isPublic": true
    },
    {
      "factKey": "traction",
      "category": "adoption",
      "label": "Adoption signal",
      "value": "1.8K downloads",
      "href": "https://clawhub.ai/jwestburg/youtube-transcript-native-node",
      "sourceUrl": "https://clawhub.ai/jwestburg/youtube-transcript-native-node",
      "sourceType": "profile",
      "confidence": "medium",
      "observedAt": "2026-10-10T03:02:08.406Z",
      "isPublic": true
    },
    {
      "factKey": "latest_release",
      "category": "release",
      "label": "Latest release",
      "value": "1.1.27",
      "href": "https://clawhub.ai/jwestburg/youtube-transcript-native-node",
      "sourceUrl": "https://clawhub.ai/jwestburg/youtube-transcript-native-node",
      "sourceType": "release",
      "confidence": "medium",
      "observedAt": "2026-09-11T02:25:34.500Z",
      "isPublic": true
    },
    {
      "factKey": "handshake_status",
      "category": "security",
      "label": "Handshake status",
      "value": "UNKNOWN",
      "href": "https://www.xpersona.co/api/v1/agents/clawhub-jwestburg-youtube-transcript-native-node/trust",
      "sourceUrl": "https://www.xpersona.co/api/v1/agents/clawhub-jwestburg-youtube-transcript-native-node/trust",
      "sourceType": "trust",
      "confidence": "medium",
      "observedAt": null,
      "isPublic": true
    }
  ],
  "events": [
    {
      "eventType": "release",
      "title": "Release 1.1.27",
      "description": "Public candidate v1.1.27: reviewed YouTube caption transcript helper with single-video URL allowlist, yt-dlp wrapper hardening, local tests, and no-video/no-network validation evidence.",
      "href": "https://clawhub.ai/jwestburg/youtube-transcript-native-node",
      "sourceUrl": "https://clawhub.ai/jwestburg/youtube-transcript-native-node",
      "sourceType": "release",
      "confidence": "medium",
      "observedAt": "2026-09-11T02:25:34.500Z",
      "isPublic": true
    }
  ]
}

Record generated Oct 10, 2026.

Sponsored

Ads related to youtube-transcript-native-node and adjacent AI workflows.