# Transkripte im Terminal mit der CLI

> Transkribiere Links und Dateien im Terminal. Verarbeite ganze Ordner, speichere Untertitel und nutze JSON in Skripten oder KI-Agenten.

Canonical: https://transcript1.com/de/docs/cli
Language: de
Last updated: 2026-10-18

Mit `transcript1` transkribierst du direkt im Terminal. Übergib einen Link von YouTube, X, TikTok, Instagram, Facebook oder Bluesky oder den Pfad zu einer Audio- oder Videodatei. Für die CLI brauchst du kein Node.js. Welche weiteren Plattformen funktionieren und was du dabei beachten musst, steht unter [Quellen und Einstellungen](https://transcript1.com/de/docs/sources-and-options).

Für Links aus Social Media brauchst du mindestens CLI 1.2.0. Version 1.1.0 und ältere Versionen nehmen nur YouTube-Links an. Andere Links lehnen sie ab, bevor ein Request die API erreicht. Mit `transcript1 update` installierst du die aktuelle Version.

Diese Mindestversion gilt für die sechs oben genannten Plattformen. Für Twitch, Dailymotion, Pinterest, LinkedIn und Snapchat brauchst du eine neuere CLI-Version, die die jeweilige Plattform unterstützt. Ältere Clients können diese Links bereits lokal ablehnen.

Verwende öffentliche Posts. Enthält ein Post mehrere Videos, transkribiert transcript1 nur das erste. Die erlaubten Kurzlinks und weitere Grenzen findest du unter [Quellen und Einstellungen](https://transcript1.com/de/docs/sources-and-options).

## Installation

Unter macOS oder Linux (x64 oder ARM64):

```bash
curl -fsSL https://transcript1.com/install.sh | sh
```

Das Skript installiert die CLI in `~/.local/bin`. Falls du den PATH anpassen musst, zeigt es einen Hinweis an. Einen anderen Installationsordner legst du mit `TRANSCRIPT1_INSTALL_DIR` fest.

Danach kannst du statt `transcript1` auch die Kurzform `t1` verwenden. Für zsh ergänzt das Skript in `~/.zshrc` den Eintrag `alias transcript1='noglob transcript1'`. Damit funktionieren Links mit `?` auch ohne Anführungszeichen. Wenn das Skript deine Shell-Konfiguration nicht ändern soll, setze `TRANSCRIPT1_NO_MODIFY_SHELL=1`.

Unter Windows x64 führst du den Installer in PowerShell aus:

```powershell
irm https://transcript1.com/install.ps1 | iex
```

Der Installer legt die CLI in `%LOCALAPPDATA%\Programs\transcript1` ab. Er ergänzt deinen Benutzer-PATH und richtet `t1.cmd` als Kurzform ein. Öffne danach ein neues Terminal.

## Anmelden

Starte die Anmeldung:

```bash
transcript1 login
```

Die CLI öffnet transcript1.com im Browser. Über SSH oder ohne grafische Oberfläche zeigt sie stattdessen den Link im Terminal an. Vergleiche den Code im Terminal mit dem auf der Webseite. Stimmen beide überein, klicke auf „Approve“. Nach deiner Freigabe speichert die CLI einen API-Schlüssel namens `transcript1 CLI (<computer name>)`. Im Dashboard findest du ihn unter [„API keys“](https://transcript1.com/dashboard/account/tokens).

Soll die CLI nur den Link anzeigen, nutze `transcript1 login --no-browser`.

Einen vorhandenen API-Schlüssel hinterlegst du mit `transcript1 login --with-key`. Du kannst ihn auch über stdin übergeben: `transcript1 login < key.txt`.

Setze in CI oder für KI-Agenten die Variable `TRANSCRIPT1_API_KEY`. Sie hat Vorrang vor dem gespeicherten Schlüssel. Hat ein Agent weder ein interaktives Terminal noch einen Schlüssel, kann er `transcript1 login < /dev/null` ausführen und dir den Link zur Freigabe schicken.

Mit `transcript1 logout` widerrufst du den CLI-Schlüssel und entfernst die lokale Kopie. Kann die CLI den Schlüssel nicht widerrufen, löscht sie ihn trotzdem lokal und bittet dich, ihn unter „API keys“ zu widerrufen. Einen selbst eingefügten Schlüssel widerrufst du immer dort.

## Link transkribieren

```bash
transcript1 'https://youtu.be/dQw4w9WgXcQ'
```

Du bekommst den fertigen Text auf stdout, Fortschrittsmeldungen auf stderr. Auf YouTube, X, TikTok, Bluesky, Dailymotion und LinkedIn nutzt transcript1 zunächst Untertitel in der Originalsprache. Sind keine verwendbaren Untertitel vorhanden, transkribiert die KI das Audio. Der Befehl wartet, bis das Transkript fertig ist.

Setze Links in zsh am besten in Anführungszeichen. Sonst trennt `&` den Befehl, und zsh behandelt `?` als Platzhalter. Beim Fragezeichen hilft auch der Alias aus dem Installationsskript.

## Datei transkribieren

```bash
transcript1 interview.mp3
transcript1 -f srt -o interview.srt interview.mp3
```

Die CLI übernimmt den Upload und wartet anschließend auf das Transkript. Deine Datei darf bis zu 2 GB groß sein (2.000.000.000 Bytes). Erlaubte Dateiendungen sind mp3, wav, m4a, flac, ogg, opus, mp4, mov, webm und mkv.

## Mehrere Dateien und Links verarbeiten

Übergib mehrere Links oder Dateien auf einmal. Du kannst auch einen ganzen Ordner angeben:

```bash
transcript1 interview.mp3 lecture.mp4
transcript1 -o transcripts/ ./recordings
transcript1 --jobs 4 -o transcripts/ interview.mp3 'https://youtu.be/dQw4w9WgXcQ'
```

Dateimuster wie `recordings/*.mp3` funktionieren auch unter Windows. Bei einem Ordner nimmt die CLI die direkt darin liegenden Mediendateien und sortiert sie nach Namen. Für jede Eingabe speichert sie ein eigenes Transkript, standardmäßig in `./transcripts`. Mit `--jobs` legst du fest, wie viele Jobs parallel laufen: 1–20, standardmäßig 2.

Mit `-` liest die CLI aus stdin. Schreibe dafür einen Link oder Dateipfad pro Zeile. Unter macOS oder Linux geht das zum Beispiel so:

```bash
transcript1 -o transcripts/ - < inputs.txt
```

Leere Zeilen und Kommentare mit `#` am Zeilenanfang überspringt die CLI. Identische Eingaben verarbeitet sie nur einmal.

Bei einer einzelnen Eingabe legt `-o` den Dateinamen fest. Existiert das Ziel schon als Ordner oder endet es auf `/`, speichert die CLI das Transkript darin. Bei mehreren Eingaben legt `-o` immer einen Zielordner fest. Fehlende Zielordner legt die CLI an.

Existiert die Transkriptdatei bereits, überspringt die CLI YouTube-Links und lokale Dateien. Mit `--overwrite` lässt du sie trotzdem erneut verarbeiten:

```bash
transcript1 --overwrite -o transcripts/ ./recordings
```

## Formate und Optionen

| Option | Bedeutung |
|---|---|
| `-f`, `--format` | Wähle `text` (Standard), `srt`, `vtt` oder `json`. Mit JSON bekommst du das Transkriptionsobjekt der API. |
| `--speakers` | Aktiviert die Sprecherzuordnung mit den Labels Speaker 1, Speaker 2 usw. |
| `--timestamps` | Ergänzt vor jeder Zeile `[hh:mm:ss]`. Gilt nur für das Textformat. |
| `--language` | Ein ISO-639-1-Sprachcode oder `auto` (Standard). |
| `--source` | Wähle `auto` (Standard) oder `stt`. Auf YouTube, X, TikTok, Bluesky, Dailymotion und LinkedIn geht auch `captions`, sofern verwendbare Untertitel vorhanden sind. Dieser Modus lädt kein Audio herunter und wechselt nicht zu STT. |
| `--fresh` | Erstellt für einen Link ein neues Transkript, statt eines aus den letzten 24 Stunden zu verwenden. |

So kombinierst du Sprecherzuordnung und Zeitstempel:

```bash
transcript1 --speakers --timestamps --language en interview.mp3
```

`--speakers` und `--source captions` schließen sich aus. Bei auto sorgt die Sprecherzuordnung dafür, dass transcript1 direkt das Audio transkribiert. Die Untertitel-Unterstützung für YouTube und X bleibt bestehen; dazu kommen verfügbare Untertitel auf TikTok, Bluesky, Dailymotion und LinkedIn. Außerhalb von YouTube liefern Untertitel nur Zeitstempel pro Segment, nicht pro Wort (`words: null`). Das gilt auch für automatisch erzeugte Untertitel. Die Plattformübersicht und die Regeln zur Sprachauswahl findest du unter [Quellen und Einstellungen](https://transcript1.com/de/docs/sources-and-options).

## Skripte und KI-Agenten

Hat dein KI-Agent eine Shell, kann er die CLI installieren und mit `TRANSCRIPT1_API_KEY` verwenden. Danach reichen die Befehle `transcript1 <link>` oder `transcript1 <file>`. Nutzt dein Client MCP, folge stattdessen der [MCP-Einrichtung](https://transcript1.com/de/docs/mcp).

Für Skripte gibt `--json` pro abgeschlossener Eingabe eine JSON-Zeile auf stdout aus. Fortschrittsmeldungen, Zusammenfassungen und Update-Hinweise entfallen:

```bash
transcript1 --json 'https://youtu.be/dQw4w9WgXcQ'
```

Bei einem abgeschlossenen Job enthält die Zeile das Transkriptionsobjekt der API sowie `input` und `reused`. Speichert die CLI das Transkript in einer Datei, steht darin `file` statt `transcript`. Scheitert der Aufruf, bevor eine ID vorliegt, bekommst du `input` und ein `error`-Objekt mit `code` und `message`. Bei übersprungenen Eingaben stehen dort `input`, `skipped` (`exists` oder `out_of_minutes`) und gegebenenfalls `file`. Der Grund `exists` gilt nur für YouTube-Links und lokale Dateien.

Bei einer einzelnen Eingabe ohne `-o` liefert `--json` das Transkript direkt im Objekt. Dabei hat `-f` keine Wirkung. Bei mehreren Eingaben ohne `-o` speichert die CLI die Transkripte in `./transcripts`; die JSON-Zeilen enthalten dann `file` statt `transcript`. Sobald die CLI eine Datei schreibt, bestimmt `-f` deren Format. Mit `-q` oder `--quiet` blendest du Fortschrittsmeldungen und Zusammenfassungen aus. Transkript und Fehler gibt die CLI weiterhin aus.

Du kannst einen Job starten und das Transkript später abrufen:

```bash
transcript1 --no-wait interview.mp3
transcript1 get <id>
```

Setze für `<id>` die ID aus dem ersten Aufruf ein. Mit `--no-wait` zeigt die CLI nur ID und Status an, mit `--json` das Objekt. `get` wartet, bis der Job fertig ist. Du kannst dabei `-f`, `-o`, `--timestamps`, `--no-wait`, `--json` und `-q` verwenden.

## Updates

```bash
transcript1 update
```

Ist stderr mit einem Terminal verbunden, sucht die CLI höchstens einmal pro 24 Stunden nach einer neuen Version. Falls es eine gibt, zeigt sie einen Hinweis an. Mit `TRANSCRIPT1_NO_UPDATE_CHECK=1` schaltest du die Prüfung ab. Auch `--json` und `-q` unterdrücken die Update-Prüfung.

## Exit-Codes

| Code | Bedeutung |
|---|---|
| 0 | Alle Eingaben sind fertig oder wurden übersprungen, weil für den YouTube-Link oder die lokale Datei schon eine Transkriptdatei existiert. |
| 1 | Mindestens eine Eingabe ist fehlgeschlagen oder wurde übersprungen, weil die Minuten nicht reichen. |
| 2 | Ungültiger Aufruf oder Problem bei der Anmeldung. |
| 130 | Der Aufruf wurde unterbrochen. |

Alle Befehle und Optionen findest du mit `transcript1 --help` oder einem Aufruf von `transcript1` ohne Argumente.
