Skip to main content
Glama

Video Learning Agent

Video Learning Agent automatisiert „Lernen durch Videos“ zu einer Engineering-Pipeline.

Du gibst ihm einen Bilibili/YouTube-Videolink, einen Sammellink oder eine Videolistendatei. Es versucht zuerst, Untertitel zu bekommen; wenn es keine Untertitel gibt, sendet es die Aufgabe an deine gemietete GPU-Cloud-Maschine, um ASR auszuführen; nach Abschluss der Transkription werden die Ergebnisse lokal abgerufen, ein Markdown-Lerndokument wird generiert und ein lokaler Suchindex wird aufgebaut.

B站 / YouTube 链接或列表
-> 优先获取字幕
-> 无字幕时上传任务到 GPU 云主机
-> GPU 下载音频并跑 faster-whisper ASR
-> 拉回 transcript.md / segments.jsonl
-> 生成可学习、可操作的 Markdown 总结
-> 建 SQLite / Chroma 搜索索引

Für wen geeignet

  • Personen, die Kursvideos in großen Mengen konsumieren möchten

  • Personen, die öffentliche Videos in Lerndokumente umwandeln möchten

  • Personen, die automatisch „Wissenspunkte + Beispiele + Tool-Befehle + GitHub-Projekte + KI-Praxisprojekte“ generieren möchten

  • Personen, die möchten, dass Claude, Codex, WorkBuddy diesen Ablauf über MCP aufrufen

Related MCP server: mcptube-vision

Funktionen

  • Unterstützt Bilibili und YouTube

  • Unterstützt Einzelvideos, Sammellisten, Playlists, TSV/CSV-Videolisten

  • Bevorzugt Untertitel abrufen, ASR nur wenn Untertitel nicht verfügbar

  • Unterstützt das manuelle Mieten einer GPU-Cloud-Maschine und die Übergabe der SSH-Informationen an den Agenten zur automatischen Verarbeitung

  • Remote-ASR verwendet faster-whisper

  • Standardmodell medium

  • Standard-GPU-Modus cuda + float16

  • Standardmäßig 20 Videos pro Batch

  • Standardmäßig kann eine 4090 3 ASR-Worker parallel versuchen

  • Echtzeit-Anzeige des Download-/ASR-Fortschritts

  • Nach dem lokalen Abruf der Ergebnisse wird ein Markdown-Lerndokument generiert

  • Lokale SQLite-Suche, optionale Chroma-Semantiksuche

  • Bietet MCP-Server

Installation

git clone https://github.com/hahahng/video-learning-agent.git
cd video-learning-agent
python3 -m pip install -e '.[remote,mcp,test,yaml]'

Das System benötigt:

ffmpeg
yt-dlp
python >= 3.10

Unter macOS kann man es so installieren:

brew install ffmpeg yt-dlp

Einfachste Verwendung: Videos mit Untertiteln

Wenn das Video Untertitel hat, ist keine GPU erforderlich.

video-agent ingest "https://www.bilibili.com/video/BVxxx"

Der Befehl erstellt ein Aufgabenverzeichnis:

work/jobs/<job_id>/

Status anzeigen:

video-agent status <job_id>

Zusammenfassung generieren:

video-agent digest <job_id> --index

Suchen:

video-agent search "文件系统"

Was tun, wenn keine Untertitel vorhanden sind: GPU mieten und ASR ausführen

Wenn das Video keine Untertitel hat oder die Untertitelqualität zu schlecht ist, miete eine Cloud-Maschine mit NVIDIA-GPU, um ASR auszuführen.

Dieses Projekt kauft die Maschine nicht automatisch für dich. Du startest selbst eine GPU-Instanz auf der Cloud-Plattform und trägst die SSH-Informationen in die Konfiguration ein.

Empfohlene Konfiguration:

  • GPU: RTX 4090 / A10 / A100 / L40S sind alle geeignet

  • System: Ubuntu 20.04 / 22.04

  • Speicher: mindestens 50GB, für Batch-Verarbeitung empfohlen 100GB+

  • Netzwerk: Zugriff auf Bilibili / YouTube / Hugging Face Modell-Download-Adressen

  • Anmeldemethode: SSH-Passwort oder SSH-Key

1. GPU-Cloud-Maschine mieten

Wähle eine beliebige GPU-Cloud-Plattform mit SSH-Unterstützung. Zum Beispiel die AutoDL-Konsole:

https://www.autodl.com/console/instance/list

Der allgemeine Ablauf ist:

  1. GPU-Instanz auswählen, z. B. 4090.

  2. Ubuntu-Image auswählen.

  3. Einschalten.

  4. SSH-Verbindungsinformationen in der Konsole finden:

    host
    port
    user
    password 或 private key
  5. Lokal zuerst bestätigen, dass man sich anmelden kann:

    ssh -p <port> <user>@<host>

Solange dieser Schritt funktioniert, kann der Agent die anschließende Installation von Abhängigkeiten, das Hochladen von Aufgaben, das Ausführen von ASR und das Abrufen der Ergebnisse übernehmen.

Weitere Details: GPU-ASR-Anleitung

AutoDL-Beispiel

Bei Verwendung von AutoDL:

  1. AutoDL-Instanzliste öffnen.

  2. Eine GPU-Instanz neu erstellen oder starten.

  3. Empfohlen: 4090 wählen, System-Image Ubuntu wählen.

  4. In die Instanzdetailseite gehen und die SSH-Anmeldeinformationen kopieren.

  5. Du erhältst Informationen ähnlich wie diese:

    host: connect.xxx.autodl.com 或平台提供的连接地址
    port: 具体端口
    user: root
    password: 实例密码
  6. Zuerst lokal testen:

    ssh -p <port> root@<host>
  7. Wenn die Anmeldung funktioniert, host/port/user in video-agent.config.yaml eintragen und das Passwort in die Umgebungsvariable setzen.

2. GPU-SSH konfigurieren

Konfigurationsdatei kopieren:

cp video-agent.config.example.yaml video-agent.config.yaml

video-agent.config.yaml bearbeiten:

jobs_root: work/jobs
data_root: data

gpu_profiles:
  my_4090:
    host: your.gpu.ssh.host
    port: 22
    user: root
    remote_root: /root/autodl-tmp/video-learning-agent
    password_env: VIDEO_GPU_PASSWORD

Das Passwort nicht in die Konfigurationsdatei schreiben. In die Umgebungsvariable setzen:

export VIDEO_GPU_PASSWORD='你的 GPU SSH 密码'

Bei Verwendung von SSH-Key:

gpu_profiles:
  my_4090:
    host: your.gpu.ssh.host
    port: 22
    user: root
    remote_root: /root/autodl-tmp/video-learning-agent
    key_filename: /Users/you/.ssh/id_ed25519

3. Videoliste in Batches verarbeiten

TSV-Format-Beispiel:

index	bv	title	url	duration
1	BVxxxx	第一节	https://www.bilibili.com/video/BVxxxx	
2	BVyyyy	第二节	https://www.bilibili.com/video/BVyyyy	

Starten:

video-agent ingest ./videos.tsv \
  --gpu-profile my_4090 \
  --batch-size 20 \
  --asr-workers 3

Wenn du bereits einen Job erstellt hast, aber das Remote-ASR noch nicht gestartet hast:

video-agent run-remote-asr <job_id> \
  --gpu-profile my_4090 \
  --batch-size 20 \
  --asr-workers 3

4. Fortschritt in Echtzeit anzeigen

video-agent status <job_id> --gpu-profile my_4090 --watch

Ausgabe ähnlich wie:

进度:ASR 中
音频:51 / 73
转写:18 / 73
当前:BVxxxx
GPU:82%,显存 17.4G / 24.0G
音频占用:3.9G
数据盘剩余:46G
错误:无

5. Ergebnisse abrufen

video-agent pull <job_id> --gpu-profile my_4090

Lokale Ergebnisse befinden sich in:

work/jobs/<job_id>/transcripts/

Jedes Video enthält:

transcript.md
segments.jsonl

6. Lerndokument generieren

video-agent digest <job_id> --index

Ausgabe:

work/jobs/<job_id>/digests/
data/video_learning.sqlite

Wenn OPENAI_API_KEY gesetzt ist, wird das große Sprachmodell aufgerufen, um eine umfangreichere Zusammenfassung zu generieren:

export OPENAI_API_KEY='你的 OpenAI API Key'
video-agent digest <job_id> --index

Ohne API-Key wird ein strukturell vollständiger lokaler Entwurf generiert.

Vorlage für Zusammenfassungsdokument

Für jedes Video wird ein Markdown-Dokument generiert:

# 编号|总结标题

## 0. 这节课的主线流程图
## 1. 知识点
## 2. 老师例子
## 3. 中间用了什么工具、命令、工作流,我们可以学什么
## 4. GitHub 可复现项目
## 5. 我们利用 AI 可以做什么项目
## 6. 今天可以动手做什么
## 7. 学完这节应该留下什么

Abschnitt 7 versucht, möglichst Folgendes abzudecken:

落地产物
输入
步骤
命令
验收标准
效率提升

MCP-Verwendung

MCP-Server starten:

video-agent-mcp

Bereitgestellte Tools:

  • ingest_url

  • job_status

  • run_remote_asr

  • pull_transcripts

  • digest_transcripts

  • search_notes

Claude, Codex, WorkBuddy können diese Tools aufrufen, solange sie MCP unterstützen.

Optionale Chroma-Vektordatenbank

Die Standardsuche ist SQLite-Chinesisch-n-gram und läuft offline.

Für semantische Suche:

python3 -m pip install chromadb
video-agent index --docs work/jobs/<job_id>/digests --chroma
video-agent search "能做什么 AI 项目" --chroma

Sicherheitshinweise

  • SSH-Passwort nicht in video-agent.config.yaml schreiben.

  • .env, video-agent.config.yaml, work/jobs/ nicht committen.

  • Die GPU-Cloud-Maschine ist nur für das Herunterladen von Audio und ASR zuständig; die Zusammenfassung läuft standardmäßig lokal.

  • Das aktuelle Projekt kauft, stoppt oder zerstört keine Cloud-Maschinen automatisch.

Entwicklung und Tests

python3 -m compileall video_learning_agent tests
python3 -m pytest -q

Related MCP Connectors

Related MCP Servers