๐ŸŽฏ

youtube-collector

๐ŸŽฏSkill

from greatsumini/cc-system

VibeIndex|
What it does

youtube-collector skill from greatsumini/cc-system

youtube-collector

Installation

pip installInstall Python package
pip install google-api-python-client youtube-transcript-api pyyaml
PythonRun Python server
python3 scripts/setup_api_key.py
PythonRun Python server
python3 scripts/setup_api_key.py --api-key YOUR_API_KEY
PythonRun Python server
python3 scripts/setup_api_key.py --show
PythonRun Python server
python3 scripts/register_channel.py --channel-handle @channelname --output-dir .reference/

+ 3 more commands

๐Ÿ“– Extracted from docs: greatsumini/cc-system
4
-
Last UpdatedDec 17, 2025

Skill Details

SKILL.md

์œ ํŠœ๋ธŒ ์ฑ„๋„์„ ๋“ฑ๋กํ•˜๊ณ  ์ƒˆ ์ปจํ…์ธ ๋ฅผ ์ˆ˜์ง‘ํ•˜์—ฌ ์ž๋ง‰ ๊ธฐ๋ฐ˜ ์š”์•ฝ์„ ์ƒ์„ฑํ•˜๋Š” skill. ์‚ฌ์šฉ์ž๊ฐ€ (1) ์œ ํŠœ๋ธŒ ์ฑ„๋„ ๋“ฑ๋ก/๊ด€๋ฆฌ๋ฅผ ์š”์ฒญํ•˜๊ฑฐ๋‚˜, (2) ๋“ฑ๋ก๋œ ์ฑ„๋„์˜ ์ƒˆ ์˜์ƒ ์ˆ˜์ง‘์„ ์š”์ฒญํ•˜๊ฑฐ๋‚˜, (3) ์œ ํŠœ๋ธŒ ์˜์ƒ ์š”์•ฝ์„ ์š”์ฒญํ•  ๋•Œ ์‚ฌ์šฉ. ๋ฐ์ดํ„ฐ๋Š” .reference/ ํด๋”์— YAML ํ˜•์‹์œผ๋กœ ์ €์žฅ๋จ.

Overview

# YouTube Collector

๋“ฑ๋ก๋œ ์œ ํŠœ๋ธŒ ์ฑ„๋„์˜ ์ƒˆ ์ปจํ…์ธ ๋ฅผ ์ˆ˜์ง‘ํ•˜๊ณ  ์ž๋ง‰ ๊ธฐ๋ฐ˜ ์š”์•ฝ์„ ์ƒ์„ฑ.

์‚ฌ์ „ ์š”๊ตฌ์‚ฌํ•ญ

ํ•„์ˆ˜ ํŒจํ‚ค์ง€:

```bash

pip install google-api-python-client youtube-transcript-api pyyaml

```

API ํ‚ค ์„ค์ •: ๋ณด์•ˆ์„ ์œ„ํ•ด API ํ‚ค๋Š” ์‚ฌ์šฉ์ž ํ™ˆ ๋””๋ ‰ํ† ๋ฆฌ์— ์ €์žฅ๋จ.

```bash

# API ํ‚ค ์„ค์ • (๋Œ€ํ™”ํ˜•)

python3 scripts/setup_api_key.py

# ๋˜๋Š” ์ง์ ‘ ์ง€์ •

python3 scripts/setup_api_key.py --api-key YOUR_API_KEY

# ํ˜„์žฌ ์„ค์ • ํ™•์ธ

python3 scripts/setup_api_key.py --show

```

์„ค์ • ํŒŒ์ผ ๊ฒฝ๋กœ:

  • macOS/Linux: ~/.config/youtube-collector/config.yaml
  • Windows: %APPDATA%\youtube-collector\config.yaml

์›Œํฌํ”Œ๋กœ์šฐ

1. ์ฑ„๋„ ๋“ฑ๋ก

์ฑ„๋„ URL ๋˜๋Š” ํ•ธ๋“ค๋กœ ๋“ฑ๋ก:

```bash

# ํ•ธ๋“ค๋กœ ๋“ฑ๋ก

python3 scripts/register_channel.py --channel-handle @channelname --output-dir .reference/

# URL๋กœ ๋“ฑ๋ก

python3 scripts/register_channel.py --channel-url "https://youtube.com/@channelname" --output-dir .reference/

```

๊ฒฐ๊ณผ: .reference/channels.yaml์— ์ฑ„๋„ ์ •๋ณด๊ฐ€ ์ถ”๊ฐ€๋จ.

2. ์ปจํ…์ธ  ์ˆ˜์ง‘

์Šคํฌ๋ฆฝํŠธ๊ฐ€ ์˜์ƒ ๋ชฉ๋ก ์กฐํšŒ + ์ž๋ง‰ ์ˆ˜์ง‘ + YAML ํŒŒ์ผ ์ €์žฅ์„ ์ž๋™์œผ๋กœ ์ฒ˜๋ฆฌ:

```bash

# ํŠน์ • ์ฑ„๋„ ์ˆ˜์ง‘

python3 scripts/collect_videos.py --channel-handle @channelname --output-dir .reference/ --max-results 10

# ๋“ฑ๋ก๋œ ๋ชจ๋“  ์ฑ„๋„ ์ˆ˜์ง‘

python3 scripts/collect_videos.py --all --output-dir .reference/

```

๊ฒฐ๊ณผ: .reference/contents/{channel_handle}/{video_id}.yaml ํŒŒ์ผ๋“ค์ด ์ƒ์„ฑ๋จ.

3. ์š”์•ฝ ์ƒ์„ฑ

์ˆ˜์ง‘ ๊ฒฐ๊ณผ JSON์—์„œ ์ƒˆ๋กœ ์ถ”๊ฐ€๋œ ์˜์ƒ ํ™•์ธ ํ›„, ๊ฐ ์˜์ƒ์˜ YAML ํŒŒ์ผ์— summary ํ•„๋“œ ์ถ”๊ฐ€:

```yaml

summary:

source: "transcript" # ๋˜๋Š” "description" (์ž๋ง‰ ์—†์„ ๋•Œ)

content: |

## ์„œ๋ก 

- ๋ฌธ์ œ ์ œ๊ธฐ ๋˜๋Š” ์ฃผ์ œ ์†Œ๊ฐœ

- ์˜์ƒ์˜ ๋ชฉ์ /๋ฐฐ๊ฒฝ

## ๋ณธ๋ก 

- ํ•ต์‹ฌ ๋‚ด์šฉ ์ƒ์„ธ ์„ค๋ช…

- ํ•ด๊ฒฐ์ฑ…, ๋ฐฉ๋ฒ•๋ก , ์˜ˆ์‹œ ๋“ฑ

- ์ฃผ์š” ํฌ์ธํŠธ๋ณ„ ์ •๋ฆฌ

## ๊ฒฐ๋ก 

- ํ•ต์‹ฌ ์š”์•ฝ

- ์‹œ์‚ฌ์  ๋˜๋Š” ๋‹ค์Œ ๋‹จ๊ณ„

```

์š”์•ฝ ์ƒ์„ฑ ๊ธฐ์ค€:

  • transcript.available: true โ†’ ์ž๋ง‰ ๊ธฐ๋ฐ˜ ์š”์•ฝ, summary.source: "transcript"
  • transcript.available: false โ†’ ์„ค๋ช… ๊ธฐ๋ฐ˜ ์š”์•ฝ, summary.source: "description"

4. ๋ฐ์ดํ„ฐ ์กฐํšŒ

์ˆ˜์ง‘๋œ ์ปจํ…์ธ  ํ™•์ธ:

  • .reference/contents/ ํด๋” ๊ตฌ์กฐ ํ™•์ธ
  • ํŠน์ • ์ฑ„๋„/์˜์ƒ์˜ YAML ํŒŒ์ผ ์ฝ์–ด์„œ ์ •๋ณด ์ œ๊ณต

์Šคํฌ๋ฆฝํŠธ ์˜ต์…˜

register_channel.py

| ์˜ต์…˜ | ์„ค๋ช… |

|------|------|

| --channel-handle | ์ฑ„๋„ ํ•ธ๋“ค (@username) |

| --channel-url | ์ฑ„๋„ URL |

| --channel-id | ์ฑ„๋„ ID (UC...) |

| --output-dir | ์ €์žฅ ๋””๋ ‰ํ† ๋ฆฌ (๊ธฐ๋ณธ: .reference) |

collect_videos.py

| ์˜ต์…˜ | ์„ค๋ช… |

|------|------|

| --channel-handle | ํŠน์ • ์ฑ„๋„ ํ•ธ๋“ค |

| --channel-id | ํŠน์ • ์ฑ„๋„ ID |

| --all | channels.yaml์˜ ๋ชจ๋“  ์ฑ„๋„ ์ฒ˜๋ฆฌ |

| --output-dir | ์ €์žฅ ๋””๋ ‰ํ† ๋ฆฌ (๊ธฐ๋ณธ: .reference) |

| --max-results | ์ฑ„๋„๋‹น ์ตœ๋Œ€ ์ˆ˜์ง‘ ๊ฐœ์ˆ˜ (๊ธฐ๋ณธ: 10) |

| --language | ์ž๋ง‰ ์šฐ์„  ์–ธ์–ด (๊ธฐ๋ณธ: ko) |

| --no-skip-existing | ๊ธฐ์กด ํŒŒ์ผ ๋ฎ์–ด์“ฐ๊ธฐ |

๋ฐ์ดํ„ฐ ๊ตฌ์กฐ

์ƒ์„ธ ์Šคํ‚ค๋งˆ: [references/data-schema.md](references/data-schema.md)

์˜์ƒ ๋ฐ์ดํ„ฐ ์˜ˆ์‹œ

```yaml

video_id: "abc123"

title: "์˜์ƒ ์ œ๋ชฉ"

published_at: "2025-12-10T10:00:00Z"

url: "https://youtube.com/watch?v=abc123"

thumbnail: "https://..."

description: "์˜์ƒ ์„ค๋ช…..."

duration: "PT10M30S"

collected_at: "2025-12-13T15:00:00Z"

transcript:

available: true

language: "ko"

text: "์ž๋ง‰ ์ „์ฒด..."

summary:

source: "transcript"

content: |

## ์„œ๋ก 

- ์˜์ƒ์˜ ๋ฐฐ๊ฒฝ ๋ฐ ๋ชฉ์ 

## ๋ณธ๋ก 

- ํ•ต์‹ฌ ๋‚ด์šฉ 1

- ํ•ต์‹ฌ ๋‚ด์šฉ 2

## ๊ฒฐ๋ก 

- ํ•ต์‹ฌ ์š”์•ฝ

```

์—๋Ÿฌ ์ฒ˜๋ฆฌ

| ์ƒํ™ฉ | ์•ˆ๋‚ด ๋ฉ”์‹œ์ง€ |

|------|------------|

| API ํ‚ค ๋ฏธ์„ค์ • | "YouTube Data API ํ‚ค๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. python3 scripts/setup_api_key.py๋กœ ์„ค์ •ํ•ด์ฃผ์„ธ์š”." |

| ์ฑ„๋„ ๋ฏธ๋“ฑ๋ก | "๋“ฑ๋ก๋œ ์ฑ„๋„์ด ์—†์Šต๋‹ˆ๋‹ค. ๋จผ์ € ์ฑ„๋„์„ ๋“ฑ๋กํ•ด์ฃผ์„ธ์š”." |

| ํŒจํ‚ค์ง€ ๋ฏธ์„ค์น˜ | "ํ•„์š”ํ•œ ํŒจํ‚ค์ง€๋ฅผ ์„ค์น˜ํ•ด์ฃผ์„ธ์š”: pip install google-api-python-client youtube-transcript-api pyyaml" |

| API ํ• ๋‹น๋Ÿ‰ ์ดˆ๊ณผ | "YouTube API ํ• ๋‹น๋Ÿ‰์ด ์ดˆ๊ณผ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๋‚ด์ผ ๋‹ค์‹œ ์‹œ๋„ํ•ด์ฃผ์„ธ์š”." |