главная

Пайплайн сбора данных YouTube для исследовательского анализа

Автоматизирует сбор и структурирование YouTube-контента для масштабируемого анализа и исследовательских задач.

01

обзор

Этот кейс оформлен как чистый showcase-репозиторий для CLI/data-pipeline, который забирает YouTube-данные и выпускает стабильные JSON-артефакты для дальнейшего анализа. Акцент здесь не на одном хаке ради субтитров, а на понятном публичном контракте: аккуратный README, runbook, архитектурные заметки, curated examples и предсказуемые exports.

02

решение

Я собрал TypeScript CLI на Node.js с явным data flow: fetch одного видео, batch-обработка и объединение результатов в channel exports. Репозиторий теперь показывает не только код, но и эксплуатационный слой: cleaner README/runbook, docs/architecture, CI, typed response boundaries на выходе и маленькие репрезентативные примеры в examples/.

03

сложности

В реальной эксплуатации пайплайну пришлось учитывать нестабильность player-запросов, ограничения платформы и долгие batch-прогоны. Поэтому в проекте зафиксированы retries с backoff, cooldown-окна, ротация ключей и user-agent, детерминированные экспорты и прозрачная документация по текущему адаптеру `youtubei/v1/player`, но сам endpoint остаётся технической деталью, а не смыслом кейса.

04

результат

Получился polished публичный репозиторий, по которому легко понять контракт проекта: per-video JSON в `video_data/`, combined channel export в `exports/`, runbook с командами `fetch` / `batch` / `export`, архитектурная схема и curated examples для быстрого ревью. Такой формат удобен и как инженерная витрина, и как основа для downstream text-analysis задач.

repo

репозиторий

Публичный репозиторий показывает текущее состояние пайплайна: README и runbook, заметки по архитектуре, CI, примеры выходных данных и канонические экспорты под review.

stack

стек

  • TypeScript
  • Node.js
  • CLI workflow
  • Typed JSON artifacts
  • GitHub Actions CI
  • youtubei/v1/player adapter

artifacts

артефакты

JSON одного видео

{
  "video_id": "abc123",
  "channel": "DevOops_conf",
  "title": "video title",
  "views": 12345,
  "duration": 901,
  "published": "2024-05-01",
  "text": "normalized transcript text"
}

сводный экспорт канала

exports/DevOops_conf.json
exports/HighLoadChannel.json

array of sorted per-video records
stable shape for downstream analysis

директория examples

examples/single-video.json
examples/channel-export.json

small curated artifacts that mirror the public output contract

CLI и поток данных

fetch -> typed per-video JSON -> batch status updates -> export -> canonical channel dataset