Skill flagged — suspicious patterns detected

ClawHub Security flagged this skill as suspicious. Review the scan results before using.

YouTube Full Channel Transcripts

v1.0.0

Extract transcripts from all videos in a YouTube channel for free (no paid APIs). Uses yt-dlp to discover videos and fetch available subtitles. Saves combine...

0· 108·0 current·0 all-time
byBlue Fox@otomazeli

Install

OpenClaw Prompt Flow

Install with OpenClaw

Best for remote or guided setup. Copy the exact prompt, then paste it into OpenClaw for otomazeli/youtube-full-channel-transcripts.

Previewing Install & Setup.
Prompt PreviewInstall & Setup
Install the skill "YouTube Full Channel Transcripts" (otomazeli/youtube-full-channel-transcripts) from ClawHub.
Skill page: https://clawhub.ai/otomazeli/youtube-full-channel-transcripts
Keep the work scoped to this skill only.
After install, inspect the skill metadata and help me finish setup.
Required binaries: yt-dlp, jq
Use only the metadata you can verify from ClawHub; do not invent missing requirements.
Ask before making any broader environment changes.

Command Line

CLI Commands

Use the direct CLI path if you want to install manually and keep every step visible.

OpenClaw CLI

Bare skill slug

openclaw skills install youtube-full-channel-transcripts

ClawHub CLI

Package manager switcher

npx clawhub@latest install youtube-full-channel-transcripts
Security Scan
VirusTotalVirusTotal
Benign
View report →
OpenClawOpenClaw
Suspicious
high confidence
Purpose & Capability
Name/description match the code: the script discovers videos with yt-dlp, downloads subtitles, converts SRT to text, and writes JSON/CSV. Required binaries (yt-dlp, jq) make sense. However the script invokes yt-dlp with '--js-runtimes node' but 'node' is not listed as a required binary—this is an actionable mismatch. Also skill.json declares environment vars (YT_DLP_MAX_RETRIES, YT_DLP_SLEEP_INTERVAL) that the script does not actually read.
Instruction Scope
Runtime instructions and the script operate within the stated scope: they call yt-dlp to fetch YouTube data, parse local files in /tmp, and write transcript outputs to an output directory. The script does not read unrelated system files or transmit data to third-party endpoints beyond YouTube/yt-dlp.
Install Mechanism
No install spec (instruction-only plus a shell script). Nothing is downloaded from arbitrary URLs; the script relies on system-installed binaries. This is low-risk from an installer perspective.
Credentials
The skill requests no credentials and declares only non-secret env vars in skill.json. But those declared vars (YT_DLP_MAX_RETRIES, YT_DLP_SLEEP_INTERVAL) are not actually used in the script, and the script expects input via lowercase variables like 'channel_url' which is not documented as an environment variable in skill.json. No sensitive credentials are requested.
Persistence & Privilege
The skill is not always-enabled and does not request elevated persistence. It does write temporary files to /tmp and outputs to a local output directory, which is expected behaviour for this utility.
What to consider before installing
This skill appears to implement the advertised functionality but has small inconsistencies you should be aware of before installing: 1) The script calls yt-dlp with '--js-runtimes node' but 'node' is not listed as a required binary—install Node.js or remove that option if you rely on yt-dlp's default. 2) skill.json declares YT_DLP_MAX_RETRIES and YT_DLP_SLEEP_INTERVAL, but the script does not use them; retries/backoff mentioned in README are not implemented. 3) The script expects input via environment variables named in lowercase (e.g., channel_url); the SKILL.md usage (prefixing the command with channel_url=...) will work but confirm how your agent passes parameters. 4) The script writes temporary files to /tmp and output files to a relative output_dir—run it in an isolated workspace if you need to protect local data. If these mismatches worry you, request an updated skill that: documents required 'node' if needed, actually uses or removes the declared env vars, and clarifies how parameters should be provided.

Like a lobster shell, security has layers — review code before you run it.

Runtime requirements

🎥 Clawdis
Binsyt-dlp, jq
latestvk97103ddjxva2t3j6rjkdvjncs83fyv5
108downloads
0stars
1versions
Updated 1mo ago
v1.0.0
MIT-0

YouTube Full Channel Transcripts

Free, local alternative to Apify actor — no third-party paid APIs.

Fetches all videos from a YouTube channel (or playlist), extracts available transcripts (auto-generated or manual), and exports to JSON/CSV.

When to Use

  • "Get all transcripts from channel X"
  • "Export channel Y's video subtitles"
  • "Build dataset of all videos from creator Z"

Prerequisites

Usage

# Basic: fetch all transcripts from a channel
youtube_full_channel_transcripts channel_url="https://www.youtube.com/@SomeChannel" output_format="json"

# With filters
youtube_full_channel_transcripts channel_url="https://www.youtube.com/c/ChannelName" max_videos=50 languages="en" include_auto_generated=true

Options

ParameterTypeRequiredDescription
channel_urlstringyesYouTube channel URL, handle, or playlist URL
output_formatstringnoOutput format: json (default) or csv
max_videosintegernoLimit number of videos to process (default: all)
languagesstringnoComma-separated language codes (e.g., en,es). Default: en
include_auto_generatedbooleannoInclude auto-generated transcripts? (default: true)
output_dirstringnoDirectory to save results (default: workspace/exports/youtube-transcripts)

Output

  • transcripts.json or transcripts.csv — structured data with:
    {
      "video_id": "abc123",
      "title": "Video Title",
      "url": "https://youtube.com/watch?v=abc123",
      "upload_date": "20240322",
      "duration": 360,
      "language": "en",
      "transcript": "Full text...",
      "is_auto_generated": false
    }
    
  • Summary printed to console: number of videos processed, success/failure counts.

Implementation Details

  1. Discovery: yt-dlp --flat-playlist -J to list all videos
  2. Transcript fetch: yt-dlp --write-subs --sub-format srt --skip-download per video
  3. Parsing: Extract SRT subtitles and convert to plain text
  4. Combine: Aggregate results into JSON/CSV

Errors & Retries

  • If a video has no available transcript, it's skipped (logged)
  • Network errors: retry up to 3 times with backoff
  • Rate limiting: yt-dlp handles automatically; can add --sleep-interval if needed

Notes

  • Respect YouTube's rate limits. The tool includes small delays by default.
  • Large channels (100+ videos) may take a while; use max_videos to limit.
  • Auto-generated transcripts are more available but less accurate.

Comments

Loading comments...