AgentSkillsCN

extract-videos

从 YouTube 频道提取视频元数据并保存为 CSV 以跟踪。在添加新频道、提取会议视频、填充视频列表,或用户提到“提取视频”、“从频道获取视频”、“添加频道”或“视频元数据”时使用。

SKILL.md
--- frontmatter
name: extract-videos
description: Extract video metadata from a YouTube channel and save to CSV for tracking. Use when adding a new channel, extracting conference videos, populating video lists, or when the user mentions "extract videos", "get videos from channel", "add channel", or "video metadata".

Extract Videos from YouTube Channel

Why? Manually tracking YouTube videos is tedious and error-prone. This skill automates extracting video metadata (titles, durations, URLs) into a CSV for systematic transcript downloading and analysis.

Quick Start

bash
# Recurring channel (adds to channels.yaml for future syncs)
ytscriber extract https://www.youtube.com/@ChannelName/videos \
  --count 50 \
  --folder <channel-name> \
  --register-channel

# One-time extraction (conferences, playlists)
ytscriber extract <youtube_url> --count 100 --folder <name>

Workflow

1. Determine Extraction Type

ScenarioUse --register-channel?Typical Count
New channel for ongoing trackingYes50-200 initial, then 20-50 for syncs
Conference talks (one-time)No50-500
Specific playlist/topicNoAs needed
Testing/explorationNo5-10

[!TIP] Use --register-channel only for channels you want to sync regularly. It adds the channel to channels.yaml for the sync-all-channels skill.

2. Run Extraction Command

bash
ytscriber extract <channel_url> \
  --count <N> \
  --folder <channel-name> \
  [--register-channel]

Parameters:

OptionDescriptionDefaultWhen to Use
--count, -nNumber of latest videos10Always specify explicitly
--folderFolder name for this channelRequiredAlways use for tracking
--register-channelAdd to channels.yamlFalseRecurring channels only
--verbose, -vEnable verbose outputFalseDebugging

[!CAUTION] The --count in the command sets the INITIAL extraction count. The count in channels.yaml (set by --register-channel) controls FUTURE sync counts. These are independent values.

3. Verify Extraction

bash
# Check CSV was created with expected columns
head -3 ~/Documents/YTScriber/<channel-name>/videos.csv

# Count extracted videos
wc -l ~/Documents/YTScriber/<channel-name>/videos.csv

Expected CSV columns:

  • url - Full YouTube video URL
  • title - Video title
  • duration_minutes - Video length
  • view_count - Number of views
  • description - Video description (truncated to 500 chars)
  • published_date - Video publish date
  • transcript_downloaded - Tracking field (initially empty)
  • summary_done - Tracking field (initially empty)

Examples

Adding a New Channel for Regular Syncing

bash
ytscriber extract https://www.youtube.com/@veritasium/videos \
  --count 100 \
  --folder veritasium \
  --register-channel

# Result: 100 videos extracted, channel added to channels.yaml with count: 100

One-Time Conference Extraction

bash
# Extract AWS re:Invent talks (won't be synced later)
ytscriber extract https://www.youtube.com/@AWSEventsChannel/videos \
  --count 200 \
  --folder aws-reinvent-2025

# No --register-channel = not added to channels.yaml

Re-running on Existing CSV (Incremental Update)

bash
# Running again only adds NEW videos (duplicates auto-skipped)
ytscriber extract https://www.youtube.com/@veritasium/videos \
  --count 20 \
  --folder veritasium

# Safe to run multiple times - existing videos preserved

Troubleshooting

ProblemCauseSolution
"No videos found"Wrong URL formatUse https://www.youtube.com/@ChannelName/videos (include /videos)
CSV not createdFolder doesn't existThe CLI creates the folder automatically
Duplicate videos appearingRunning with different URL variantsAlways use canonical @handle/videos format
Channel not in channels.yamlForgot --register-channelRe-run with flag, or manually add to YAML
Wrong video count in channels.yamlFlag uses command's --count valueEdit channels.yaml manually to adjust future sync count

Common Mistakes

  1. Forgetting /videos in URL

    • Wrong: https://www.youtube.com/@veritasium
    • Right: https://www.youtube.com/@veritasium/videos
  2. Using --register-channel for one-time extractions

    • This pollutes channels.yaml with channels you won't sync
    • Only use for channels you want in the regular sync rotation
  3. Expecting transcripts to download

    • This skill ONLY extracts video metadata to CSV
    • Use download-transcripts skill to actually fetch transcripts
  4. Confusing command --count with channels.yaml count

    • Command --count: How many videos to extract NOW
    • channels.yaml count: How many videos for FUTURE syncs
    • Initial extraction might be 200, but sync count might be 30

Quality Checklist

Before considering extraction complete:

  • CSV exists with expected video count
  • CSV has all required columns (url, title, duration_minutes, etc.)
  • If recurring channel: entry exists in channels.yaml
  • If recurring channel: channels.yaml count is set appropriately for future syncs

Next Steps

After extracting videos:

  1. Download transcripts: Use the download-transcripts skill
  2. Sync channels later: Use sync-all-channels for registered channels
  3. Add summaries: Use summarize-transcripts after downloading