---
name: video-analyse
description: "Analysiert YouTube-Videos anhand ihrer Untertitel/Transkripte. Erstellt eine Programmzeitschrift-Zusammenfassung als HTML-Datei: Elevator Pitch, die Argumentationslücke, Praxis-Box und Tiefenanalyse."
argument-hint: "<youtube-url>"
---

# YouTube Video-Analyse — AI Skill

Ein AI Skill, der YouTube-Videos analysiert, **bevor** man sie ansieht. Aus den
Untertiteln eines Videos erzeugt er einen Bericht nach dem Prinzip einer
Programmzeitschrift: Reicht eine Minute Lektüre, um zu entscheiden, ob sich das
Anschauen lohnt?

## Was der Skill liefert

| Abschnitt | Frage, die er beantwortet |
|---|---|
| **Elevator Pitch** | Was lernt man? Warum lohnt sich das Video? |
| **Die Lücke** | Warum wirkt das Thema kompliziert? Was verschweigt der Autor? Was bleibt ungelöst? |
| **Praxis-Box** | Die wichtigsten Konzepte in Kurzform + ein Szenario für den Alltag |
| **Tiefenanalyse** | Technische Bewertung: Architektur-Fit, Skalierbarkeit, Komplexität, Relevanz |

## Installation

Die Datei als `SKILL.md` in den Skills-Ordner deines Agenten legen, z. B.:

- **Claude Code:** `~/.claude/skills/video-analyse/SKILL.md`
- **dreb:** `~/.dreb/agent/skills/video-analyse/SKILL.md`
- **pi / andere Agenten:** entsprechend dem dortigen Skill-Verzeichnis

**Voraussetzung:** `yt-dlp` muss installiert und im PATH verfügbar sein
(`pip install yt-dlp` oder Paketmanager des Systems). Ein API-Key ist nicht
nötig — der Skill nutzt die öffentlichen Untertitel des Videos.

## Nutzung

Skill mit der YouTube-URL aufrufen:

```
/video-analyse https://www.youtube.com/watch?v=...
```

Der Agent lädt dann das Transkript, analysiert es und schreibt den Bericht als
HTML-Datei in einen Unterordner des aktuellen Arbeitsverzeichnisses.

---

## Anweisung an den Agenten

Analysiere das YouTube-Video und erstelle eine Zusammenfassung als HTML-Datei: **$ARGUMENTS**

### Ausgabeverzeichnis (PFLICHT — gilt für ALLE erzeugten Dateien)

Alle Ergebnisse (Transkript, HTML, Tutorial) gehören in einen sprechenden
Unterordner des aktuellen Arbeitsverzeichnisses — sonst findet man später nichts
wieder. Der Ordnername wird aus dem Videotitel abgeleitet (slugified), ohne Datum.

```bash
YOUTUBE_URL="[URL aus $ARGUMENTS]"
# Titel holen (ohne Download)
VIDTITLE="$(yt-dlp --print title --skip-download "$YOUTUBE_URL" 2>/dev/null | head -n1)"
# Fallback falls kein Titel ermittelbar
[ -z "$VIDTITLE" ] && VIDTITLE="video"
# Slug: Kleinbuchstaben, Umlaute/Sonderzeichen ersetzen, Leerzeichen->Unterstrich,
#       alles ausser [a-z0-9_] entfernen, auf ~60 Zeichen begrenzen
SLUG="$(printf '%s' "$VIDTITLE" \
    | sed -e 's/ä/ae/g' -e 's/ö/oe/g' -e 's/ü/ue/g' -e 's/Ä/Ae/g' -e 's/Ö/Oe/g' -e 's/Ü/Ue/g' -e 's/ß/ss/g' \
    | tr '[:upper:]' '[:lower:]' \
    | sed -e 's/[^a-z0-9 ]//g' -e 's/ /_/g' -e 's/__*/_/g' -e 's/^_//;s/_$//' \
    | cut -c1-60)"
[ -z "$SLUG" ] && SLUG="video"
OUTDIR="$PWD/video-analyse_${SLUG}"
mkdir -p "$OUTDIR"
```
Alle folgenden Speicherpfade nutzen `$OUTDIR`.

**Ordnername = Videotitel (slugified), KEIN Datum** — Beispiel: `video-analyse_how_transformers_work`.

### Schritt 1: Transkript herunterladen

Extrahiere die YouTube-URL aus $ARGUMENTS. Lade das Transkript mit yt-dlp herunter:

```bash
yt-dlp --write-auto-sub --sub-lang de,en --sub-format srt --skip-download -o "/tmp/videoanalyse_transcript" "YOUTUBE_URL"
```

Lies die SRT-Datei ein und extrahiere den reinen Text (ohne Zeitstempel und Nummern).

**Rohes Transkript sofort nach dem Download speichern (PFLICHT):**
```bash
# Thema aus Videotitel ableiten (kurz, keine Sonderzeichen, z.B. "NPM_Sicherheit")
THEMA="[Thema_aus_Titel]"
DATUM=$(date +%Y-%m-%d)
grep -vE '^[0-9]+$|^[0-9]{2}:[0-9]{2}:[0-9]{2}' /tmp/videoanalyse_transcript.*.srt \
  | sed '/^[[:space:]]*$/d' \
  > "$OUTDIR/Transkript_${THEMA}_${DATUM}.txt"
echo "Transkript gespeichert: $OUTDIR/Transkript_${THEMA}_${DATUM}.txt"
```
Dieser Schritt MUSS ausgefuehrt werden, bevor mit der HTML-Erstellung begonnen wird.

Metadaten abrufen:

```bash
yt-dlp --print title --print channel --print duration_string --print view_count --print upload_date --skip-download "YOUTUBE_URL"
```

Falls kein Transkript verfügbar: Nutzer mitteilen, Skill beenden.

### Schritt 2: Zusammenfassung als HTML-Datei erstellen

Erstelle eine **HTML-Datei** mit folgendem Aufbau:

```html
<!DOCTYPE html>
<html lang="de">
<head>
    <meta charset="UTF-8">
    <title>[Videotitel]</title>
    <style>
        body { font-family: sans-serif; font-size: 16px; line-height: 1.6; max-width: 800px; margin: 40px auto; padding: 0 20px; color: #000; background: #fff; }
        h1, h2, h3 { color: #000; }
        a { color: #000; text-decoration: underline; }
        .toc { padding: 20px; border: 1px solid #000; margin-bottom: 30px; }
        .toc ul { list-style: none; padding-left: 0; }
        .toc li { margin: 5px 0; }
        .meta { padding: 15px 20px; border-left: 4px solid #000; margin-bottom: 25px; }
    </style>
</head>
<body>
    <!-- Inhaltsverzeichnis mit anklickbaren Links -->
    <div class="toc">
        <h2>Inhaltsverzeichnis</h2>
        <ul>
            <li><a href="#programm-info">1. Programm-Info</a></li>
            <li><a href="#elevator-pitch">2. Elevator Pitch</a></li>
            <li><a href="#luecke">3. Die Lücke</a></li>
            <li><a href="#praxis">4. Praxis-Box</a></li>
            <li><a href="#tiefenanalyse">5. Tiefenanalyse</a></li>
        </ul>
    </div>

    <!-- Meta-Daten -->
    <div class="meta" id="programm-info">
        <p><strong>Titel:</strong> [Titel]</p>
        <p><strong>Kanal:</strong> [Kanal]</p>
        <p><strong>Dauer:</strong> [Dauer] | <strong>Views:</strong> [Views]</p>
        <p><strong>URL:</strong> <a href="[URL]">[URL]</a></p>
        <p><strong>Datum:</strong> [Upload-Datum]</p>
    </div>

    <!-- Inhalt -->
    <h2 id="elevator-pitch">Elevator Pitch</h2>
    <p>[3–4 Sätze: Was lernt man? Warum lohnt es sich?]</p>

    <h2 id="luecke">Die Lücke</h2>
    <p>[Warum wirkt es kompliziert? Was verschweigt der Autor? Was wird nicht gelöst?]</p>

    <h2 id="praxis">Praxis-Box</h2>
    <ul>
        <li><strong>[Konzept 1]:</strong> [Kurze Erklärung]</li>
        <li><strong>[Konzept 2]:</strong> [Kurze Erklärung]</li>
        <li><strong>[Konzept 3]:</strong> [Kurze Erklärung]</li>
    </ul>
    <p><strong>Szenario für den Alltag:</strong> [Konkreter Anwendungsfall]</p>

    <h2 id="tiefenanalyse">Tiefenanalyse</h2>
    <p>[Technische Bewertung: Architektur-Fit, Skalierbarkeit, Komplexität, Relevanz für aktuelle Projekte.]</p>
</body>
</html>
```

#### Speicherort und Dateiname

- **Verzeichnis:** `$OUTDIR` (Unterordner des Arbeitsverzeichnisses)
- **Dateiname:** `Videoanalyse_[Thema]_[Datum].html`
- Beispiel: `Videoanalyse_Transformer_Grundlagen_2026-09-01.html`
- Thema aus dem Videotitel ableiten (kurz, keine Sonderzeichen)

#### Rohes Transkript separat speichern
Zusätzlich zur HTML-Zusammenfassung das rohe Transkript speichern:
- **Verzeichnis:** `$OUTDIR` (gleicher Ordner)
- **Dateiname:** `Transkript_[Thema]_[Datum].txt`
- Inhalt: Reiner Text (keine Zeitstempel, keine SRT-Formatierung)

Dem Nutzer beide Pfade mitteilen.

### Schritt 3: Tutorial-Angebot

Nach der Zusammenfassung den Benutzer aktiv fragen:

> "Möchtest du, dass ich dir auf Basis dieses Transkriptes ein Schritt-für-Schritt-Tutorial erstelle?"

Wenn ja: Tutorial erstellen (Ziel & Voraussetzungen → Happy Path → Fehlerbehebung → Praxis-Szenario). Das Tutorial ebenfalls als HTML-Datei in `$OUTDIR` speichern, Dateiname: `Tutorial_[Thema]_[Datum].html`.

## Wichtige Hinweise

- Transkript-Sprache: Deutsch bevorzugen, falls nicht verfügbar Englisch verwenden und auf Deutsch antworten
- Auf Deutsch antworten, auch wenn das Transkript englisch ist (andere Zielsprache: entsprechend anpassen)
- Kein Bezug zu spezifischen Projekten — generisch und projektunabhängig bewerten
- Bei Videos länger als 60 Minuten: Nur die wichtigsten Abschnitte analysieren

---

*Lizenz: Zur freien Verwendung und Anpassung. Veröffentlicht von Crowdcompany UG — crowdcompany.info*
