yt-dlp-Medien- und YouTube-Transcript-Tools über den privaten Proxy bereitstellen #22

Closed
opened 2026-07-17 11:56:56 +02:00 by frank · 2 comments
Owner

Ziel

MCP-Agenten können unterstützte Medien mit yt-dlp herunterladen und YouTube-Untertitel beziehungsweise Transkripte über die private Proxy-Maschine abrufen.

Scope: yt-dlp

  • yt-dlp als externes, versioniertes Open-Source-Werkzeug auf der privaten Proxy-Seite ausführen.
  • Neues MCP-Tool media_download mit einem bewusst kleinen, typisierten Schema statt beliebiger CLI-Argumente.
  • Eingaben mindestens:
    • url
    • media_kind: video, audio oder metadata
    • optionales Format-/Qualitätsprofil aus einer Betreiber-Allowlist
    • optionaler Dateigrößen- und Laufzeitgrenzwert innerhalb serverseitiger Maxima
    • optionales client_profile beziehungsweise yt-dlp impersonation target aus einer Allowlist
  • Niemals eine Shell verwenden; Argumente direkt an exec.CommandContext übergeben.
  • Keine beliebigen --exec, --config-locations, Output-Templates, Plugin-Pfade oder Dateipfade vom Agenten akzeptieren.
  • Pro Job isoliertes Temp-Verzeichnis, Quota, Deadline, Cancel, Prozessgruppen-Abbruch und garantierte Bereinigung.
  • ffmpeg nur optional und mit gepinnter, dokumentierter Version für Merge-/Audio-Konvertierung.
  • Fortschritt und Fehler als stabile Kategorien melden; stderr begrenzen und Secrets redigieren.
  • Große Ergebnisse streamen oder als kurzlebiges Artefakt mit opakem Handle und Resource Link bereitstellen. Niemals vollständig im Arbeitsspeicher puffern.
  • Dateiname, MIME-Type, Größe, Prüfsumme, Quelle und Ablaufzeit als strukturierte Metadaten zurückgeben.

Scope: YouTube-Transkripte

  • Neues MCP-Tool youtube_transcript.
  • Eingaben:
    • YouTube-URL oder Video-ID
    • bevorzugte Sprachen in Reihenfolge
    • manuell, automatisch oder bevorzugt manuell
    • Ausgabeformat text, json, vtt oder srt
    • optionale Übersetzungssprache
  • Primärprovider im MVP: yt-dlp mit --skip-download, --write-subs beziehungsweise --write-auto-subs, --sub-langs und --sub-format.
  • Optionaler Provider: MIT-lizenziertes youtube-transcript-api als isolierter Python-Sidecar für strukturierte Segmente, Sprachwahl und Übersetzung.
  • Provider über eine interne Schnittstelle kapseln und Fallback-Verhalten explizit konfigurieren.
  • Strukturierte Ausgabe enthält video_id, Sprache, generated, translated, Segmente mit start/duration sowie Rohformat bei VTT/SRT.
  • Fehlende Untertitel, blockierte IP, altersbeschränkte Inhalte und gelöschte/private Videos als unterscheidbare Toolfehler melden.

Rechtliche und sicherheitstechnische Grenzen

  • Nur Inhalte herunterladen, für die der Betreiber beziehungsweise Benutzer die notwendigen Rechte und Berechtigungen besitzt.
  • Keine DRM-Umgehung und kein Umgehen von Paywalls, Zugangskontrollen oder Plattformberechtigungen.
  • Cookies sind standardmäßig deaktiviert. Eine spätere Cookie-Unterstützung benötigt ein separates Secret-/Profilkonzept und darf keine Browserprofile des Hosts ungefragt auslesen.
  • Ziel- und Redirect-Policy, Parallelitätslimits und Rate Limits gelten auch für yt-dlp und Transcript-Provider.
  • Toolbeschreibung weist darauf hin, dass Plattformänderungen Extraktoren kurzfristig brechen können und yt-dlp regelmäßig kontrolliert aktualisiert werden muss.

Akzeptanzkriterien

  • End-to-End-Test lädt ein kleines frei nutzbares Testmedium über den privaten Proxy und validiert Größe sowie Prüfsumme.
  • Transcript-Test liefert manuelle und automatische Untertitel in mindestens JSON und VTT, soweit Testfixtures dies anbieten.
  • Der MCP-Server selbst kontaktiert YouTube beziehungsweise Medienziele nicht.
  • Beliebige CLI-Injection, Pfad-Traversal und unbeschränkte Dateigrößen sind durch Tests ausgeschlossen.
  • Cancel beendet yt-dlp, ffmpeg und Sidecars ohne verwaiste Prozesse oder Temp-Dateien.
  • Fehlende Binaries werden beim Proxy-Start als Capability-Abwesenheit gemeldet und führen nicht zu angebotenen, funktionslosen Tools.
  • Wiki dokumentiert Installation, Versionierung, Limits, Rechtehinweis und Troubleshooting.

Abhängigkeiten

  • funktionsfähiger Private-Proxy-Modus
  • Tunnel-Multiplexing mit Cancel/Deadline
  • Netzwerk-Policy und SSRF-Schutz
  • Artefakt-/Streaming-Entscheidung für große Binärantworten

Referenzen

## Ziel MCP-Agenten können unterstützte Medien mit yt-dlp herunterladen und YouTube-Untertitel beziehungsweise Transkripte über die private Proxy-Maschine abrufen. ## Scope: yt-dlp - yt-dlp als externes, versioniertes Open-Source-Werkzeug auf der privaten Proxy-Seite ausführen. - Neues MCP-Tool media_download mit einem bewusst kleinen, typisierten Schema statt beliebiger CLI-Argumente. - Eingaben mindestens: - url - media_kind: video, audio oder metadata - optionales Format-/Qualitätsprofil aus einer Betreiber-Allowlist - optionaler Dateigrößen- und Laufzeitgrenzwert innerhalb serverseitiger Maxima - optionales client_profile beziehungsweise yt-dlp impersonation target aus einer Allowlist - Niemals eine Shell verwenden; Argumente direkt an exec.CommandContext übergeben. - Keine beliebigen --exec, --config-locations, Output-Templates, Plugin-Pfade oder Dateipfade vom Agenten akzeptieren. - Pro Job isoliertes Temp-Verzeichnis, Quota, Deadline, Cancel, Prozessgruppen-Abbruch und garantierte Bereinigung. - ffmpeg nur optional und mit gepinnter, dokumentierter Version für Merge-/Audio-Konvertierung. - Fortschritt und Fehler als stabile Kategorien melden; stderr begrenzen und Secrets redigieren. - Große Ergebnisse streamen oder als kurzlebiges Artefakt mit opakem Handle und Resource Link bereitstellen. Niemals vollständig im Arbeitsspeicher puffern. - Dateiname, MIME-Type, Größe, Prüfsumme, Quelle und Ablaufzeit als strukturierte Metadaten zurückgeben. ## Scope: YouTube-Transkripte - Neues MCP-Tool youtube_transcript. - Eingaben: - YouTube-URL oder Video-ID - bevorzugte Sprachen in Reihenfolge - manuell, automatisch oder bevorzugt manuell - Ausgabeformat text, json, vtt oder srt - optionale Übersetzungssprache - Primärprovider im MVP: yt-dlp mit --skip-download, --write-subs beziehungsweise --write-auto-subs, --sub-langs und --sub-format. - Optionaler Provider: MIT-lizenziertes youtube-transcript-api als isolierter Python-Sidecar für strukturierte Segmente, Sprachwahl und Übersetzung. - Provider über eine interne Schnittstelle kapseln und Fallback-Verhalten explizit konfigurieren. - Strukturierte Ausgabe enthält video_id, Sprache, generated, translated, Segmente mit start/duration sowie Rohformat bei VTT/SRT. - Fehlende Untertitel, blockierte IP, altersbeschränkte Inhalte und gelöschte/private Videos als unterscheidbare Toolfehler melden. ## Rechtliche und sicherheitstechnische Grenzen - Nur Inhalte herunterladen, für die der Betreiber beziehungsweise Benutzer die notwendigen Rechte und Berechtigungen besitzt. - Keine DRM-Umgehung und kein Umgehen von Paywalls, Zugangskontrollen oder Plattformberechtigungen. - Cookies sind standardmäßig deaktiviert. Eine spätere Cookie-Unterstützung benötigt ein separates Secret-/Profilkonzept und darf keine Browserprofile des Hosts ungefragt auslesen. - Ziel- und Redirect-Policy, Parallelitätslimits und Rate Limits gelten auch für yt-dlp und Transcript-Provider. - Toolbeschreibung weist darauf hin, dass Plattformänderungen Extraktoren kurzfristig brechen können und yt-dlp regelmäßig kontrolliert aktualisiert werden muss. ## Akzeptanzkriterien - End-to-End-Test lädt ein kleines frei nutzbares Testmedium über den privaten Proxy und validiert Größe sowie Prüfsumme. - Transcript-Test liefert manuelle und automatische Untertitel in mindestens JSON und VTT, soweit Testfixtures dies anbieten. - Der MCP-Server selbst kontaktiert YouTube beziehungsweise Medienziele nicht. - Beliebige CLI-Injection, Pfad-Traversal und unbeschränkte Dateigrößen sind durch Tests ausgeschlossen. - Cancel beendet yt-dlp, ffmpeg und Sidecars ohne verwaiste Prozesse oder Temp-Dateien. - Fehlende Binaries werden beim Proxy-Start als Capability-Abwesenheit gemeldet und führen nicht zu angebotenen, funktionslosen Tools. - Wiki dokumentiert Installation, Versionierung, Limits, Rechtehinweis und Troubleshooting. ## Abhängigkeiten - funktionsfähiger Private-Proxy-Modus - Tunnel-Multiplexing mit Cancel/Deadline - Netzwerk-Policy und SSRF-Schutz - Artefakt-/Streaming-Entscheidung für große Binärantworten ## Referenzen - yt-dlp: https://github.com/yt-dlp/yt-dlp - yt-dlp Subtitle Options: https://github.com/yt-dlp/yt-dlp#subtitle-options - yt-dlp Installation: https://github.com/yt-dlp/yt-dlp/wiki/Installation - youtube-transcript-api: https://github.com/jdepoix/youtube-transcript-api
Author
Owner

🤖 forge agent started

  • Agent: codex
  • Model: gpt-5.6-sol
  • Mode: pr
  • Trigger: assignee=agent|+5 mapped

yt-dlp-Medien- und YouTube-Transcript-Tools über den privaten Proxy bereitstellen — MCP-Agenten können unterstützte Medien mit yt-dlp herunterladen und YouTube-Untertitel beziehungsweise Transkripte über die private Proxy-Maschine abrufen.

🤖 **forge agent started** - Agent: `codex` - Model: `gpt-5.6-sol` - Mode: `pr` - Trigger: `assignee=agent|+5 mapped` yt-dlp-Medien- und YouTube-Transcript-Tools über den privaten Proxy bereitstellen — MCP-Agenten können unterstützte Medien mit yt-dlp herunterladen und YouTube-Untertitel beziehungsweise Transkripte über die private Proxy-Maschine abrufen.
frank 2026-07-17 15:08:09 +02:00
Author
Owner

Umgesetzt (Code + Docs):

  • Provider-Schnittstelle mit konfigurierbarer Kette media.transcript_providers (Default: ytdlp, innertube)
  • InnerTube-HTTP-Fallback über httpexec (Clients ANDROID_VR → IOS → …)
  • Echte translation_language via YouTube tlang= (nur InnerTube; Quellsprachen bleiben in languages)
  • MCP Progress-Notifications für media_download / youtube_transcript bei gesetztem Progress-Token

Bewusster Rest aus dem Issue-Scope:

  • yt-dlp Sekundär-/CDN-/Redirect-Ziele weiterhin nur über Host-/Container-Egress, nicht über die interne HTTP-Network-Policy
Umgesetzt (Code + Docs): - Provider-Schnittstelle mit konfigurierbarer Kette `media.transcript_providers` (Default: `ytdlp`, `innertube`) - InnerTube-HTTP-Fallback über `httpexec` (Clients ANDROID_VR → IOS → …) - Echte `translation_language` via YouTube `tlang=` (nur InnerTube; Quellsprachen bleiben in `languages`) - MCP Progress-Notifications für `media_download` / `youtube_transcript` bei gesetztem Progress-Token Bewusster Rest aus dem Issue-Scope: - yt-dlp Sekundär-/CDN-/Redirect-Ziele weiterhin nur über Host-/Container-Egress, nicht über die interne HTTP-Network-Policy
Sign in to join this conversation.
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Reference
ai-tools/private-proxy-mcp#22
No description provided.