# Transcribe desde la terminal con la CLI

> Instala la CLI para transcribir enlaces, archivos o carpetas. Guarda texto y subtítulos, o recibe JSON para tus scripts y agentes.

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

La CLI te permite transcribir sin salir de la terminal. Ejecuta `transcript1` con un archivo de audio o video de tu computadora, o con un enlace de YouTube, X, TikTok, Instagram, Facebook o Bluesky. No necesitas Node.js para usarla. Más abajo se indican los requisitos de versión para otras plataformas; en [Fuentes y opciones](https://transcript1.com/es/docs/sources-and-options) puedes consultar los enlaces admitidos y sus restricciones.

Para los enlaces de redes sociales necesitas la CLI 1.2.0 o posterior. La versión 1.1.0 y las anteriores solo aceptan YouTube: rechazan los demás enlaces antes de enviarlos a la API. Actualiza con `transcript1 update`.

Ese mínimo corresponde a las seis plataformas originales. Para Twitch, Dailymotion, Pinterest, LinkedIn y Snapchat, usa una versión que ya incluya su compatibilidad. Una CLI antigua puede rechazar esos enlaces sin llegar a llamar a la API.

Elige una publicación pública. Si tiene varios videos, solo se transcribe el primero. Revisa los enlaces cortos que funcionan y los límites en [Fuentes y opciones](https://transcript1.com/es/docs/sources-and-options).

## Instala la CLI

En macOS y Linux, tanto x64 como ARM64, ejecuta:

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

El ejecutable se instala en `~/.local/bin`. Si necesitas ajustar PATH, el instalador te indica cómo hacerlo. Para elegir otra carpeta, configura `TRANSCRIPT1_INSTALL_DIR`.

También puedes usar el alias corto `t1` en lugar de `transcript1`. En zsh, el instalador añade `alias transcript1='noglob transcript1'` a `~/.zshrc`, para que `?` en los enlaces funcione sin comillas. Si no quieres que modifique ese archivo, configura `TRANSCRIPT1_NO_MODIFY_SHELL=1`.

Para Windows x64, ejecuta esto en PowerShell:

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

El instalador usa `%LOCALAPPDATA%\Programs\transcript1`, crea el alias `t1.cmd` y añade la carpeta al PATH de tu usuario. Abre otra terminal para que el cambio tenga efecto.

## Conecta tu cuenta

Inicia sesión con:

```bash
transcript1 login
```

Se abrirá transcript1.com en el navegador. Si estás por SSH o no hay pantalla, verás el enlace en la terminal. Comprueba que el código de la página coincida con el de la terminal y haz clic en “Approve”. La CLI espera tu aprobación y guarda una clave con el nombre `transcript1 CLI (<computer name>)`. Puedes verla en [“API keys”](https://transcript1.com/dashboard/account/tokens).

Si prefieres abrir el enlace por tu cuenta, usa `transcript1 login --no-browser`.

Si ya tienes una clave, ejecuta `transcript1 login --with-key` y pégala. También puedes leerla desde stdin con `transcript1 login < key.txt`.

En CI o con agentes, configura `TRANSCRIPT1_API_KEY`. Esta variable tiene prioridad sobre la clave guardada. Si el agente no tiene terminal o no tiene clave, puede ejecutar `transcript1 login < /dev/null` y pasarte el enlace para que apruebes el acceso.

Para desconectar la CLI, ejecuta `transcript1 logout`: revoca su clave y borra la copia de tu computadora. Si no consigue revocarla, borra la copia local y te pide hacerlo en “API keys”. Las claves que hayas pegado debes revocarlas desde esa página.

## Transcribe un enlace

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

El texto aparece en stdout cuando termina la transcripción; los avisos de progreso van a stderr. Primero se buscan subtítulos en el idioma original en YouTube, X, TikTok, Bluesky, Dailymotion y LinkedIn. Si no se pueden usar, se transcribe el audio con IA.

En zsh, conviene poner los enlaces entre comillas. Sin ellas, `&` divide el comando y `?` se interpreta como comodín, salvo que uses el alias añadido por el instalador.

## Transcribe un archivo

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

Puedes enviar archivos de hasta 2 GB (2,000,000,000 bytes) con extensión mp3, wav, m4a, flac, ogg, opus, mp4, mov, webm o mkv. La CLI se encarga de subirlos y esperar hasta tener el texto.

## Procesa varios archivos o enlaces

Indica varios archivos o enlaces en el comando, o dale una carpeta:

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

También puedes usar patrones como `recordings/*.mp3`, incluso en Windows. Al indicar una carpeta, se toman sus archivos de audio y video del primer nivel, ordenados por nombre. Si envías varios elementos, cada transcripción se guarda por defecto en un archivo dentro de `./transcripts`. Con `--jobs` eliges cuántos procesar a la vez: de 1 a 20; por defecto son 2.

Para leer desde stdin, usa `-` e indica un enlace o ruta de archivo por línea. En macOS o Linux puedes hacerlo así:

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

La CLI ignora las líneas vacías y las que empiezan con `#`. Si repites exactamente el mismo elemento, lo procesa una sola vez.

Con un solo elemento, `-o` permite elegir el nombre del archivo. Si la ruta ya es una carpeta o termina en `/`, se usa como carpeta. Con varios elementos, `-o` siempre indica una carpeta. Si la carpeta de destino no existe, la CLI la crea.

Para enlaces de YouTube y archivos locales, la CLI no repite una transcripción si el archivo de destino ya existe. Si quieres volver a generarlo, agrega `--overwrite`:

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

## Formatos y opciones

| Opción | Para qué sirve |
|---|---|
| `-f`, `--format` | Elige `text` (por defecto), `srt`, `vtt` o `json`. Con JSON recibes el objeto de transcripción de la API. |
| `--speakers` | Añade la identificación de hablantes con etiquetas Speaker 1, Speaker 2, etc. |
| `--timestamps` | Añade `[hh:mm:ss]` al inicio de cada línea. Funciona solo en formato text. |
| `--language` | Indica un código ISO 639-1 o deja `auto`, el valor por defecto. |
| `--source` | Elige `auto` (por defecto) o `stt`. En YouTube, X, TikTok, Bluesky, Dailymotion y LinkedIn también puedes pedir `captions` si hay una pista válida. El modo `captions` (solo subtítulos) nunca descarga audio ni pasa a STT. |
| `--fresh` | Fuerza una nueva transcripción del enlace en lugar de reutilizar una de las últimas 24 horas. |

Combina estas opciones para identificar hablantes y mostrar marcas de tiempo:

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

No combines `--speakers` con `--source captions`. Si dejas auto y activas la identificación de hablantes, se transcribe el audio sin usar subtítulos. YouTube y X mantienen su compatibilidad con subtítulos; también puedes usar las pistas disponibles de TikTok, Bluesky, Dailymotion y LinkedIn. Fuera de YouTube solo incluyen marcas de tiempo por segmento (`words: null`), incluso en las pistas automáticas. Consulta las opciones de cada plataforma y las reglas de idioma en [Fuentes y opciones](https://transcript1.com/es/docs/sources-and-options).

## Integra la CLI en scripts y agentes

Si tu agente tiene acceso a una shell, puede instalar la CLI, configurar `TRANSCRIPT1_API_KEY` y ejecutar `transcript1 <link>` o `transcript1 <file>`. Si se conecta por MCP, sigue la guía del [servidor MCP](https://transcript1.com/es/docs/mcp).

Con `--json`, stdout recibe una línea JSON por cada elemento que termina de procesarse. No se muestran avisos de progreso, resúmenes ni notificaciones de actualización:

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

Cada línea de una transcripción terminada contiene el objeto de la API junto con `input` y `reused`. Si el texto se guardó en un archivo, la línea lleva `file` en lugar de `transcript`. Si hubo un error antes de crear un ID, recibirás `input` y un objeto `error` con `code` y `message`.

Para los elementos que no se procesaron, recibirás `input`, `skipped` con el valor `exists` o `out_of_minutes`, y `file` cuando corresponda. Solo los enlaces de YouTube y los archivos locales pueden omitirse por `exists`.

Si envías un solo elemento sin `-o`, `--json` incluye el texto en el objeto e ignora `-f`. Con varios elementos y sin `-o`, los archivos se guardan en `./transcripts` y cada línea JSON lleva `file` en lugar de `transcript`. Cuando se guarda un archivo, su formato lo define `-f`. Si solo quieres ocultar el progreso y los resúmenes sin perder el texto ni los errores, usa `-q` o `--quiet`.

Puedes iniciar la transcripción y consultarla más tarde:

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

El primer comando muestra el ID y el estado; si añades `--json`, muestra el objeto. Usa ese ID en lugar de `<id>` en el segundo comando. `get` espera mientras la transcripción sigue en curso y acepta `-f`, `-o`, `--timestamps`, `--no-wait`, `--json` y `-q`.

## Actualiza la CLI

```bash
transcript1 update
```

Si stderr está conectado a una terminal, la CLI revisa como máximo una vez cada 24 horas si hay una versión nueva y te avisa. Para desactivar esa revisión, configura `TRANSCRIPT1_NO_UPDATE_CHECK=1`. Tampoco se hace al usar `--json` o `-q`.

## Códigos de salida

| Código | Qué indica |
|---|---|
| 0 | Todo terminó bien, o se omitieron enlaces de YouTube y archivos locales porque ya existía el archivo de destino. |
| 1 | Algún elemento falló o no se procesó por falta de minutos. |
| 2 | Hay un problema con el comando o con el inicio de sesión. |
| 130 | Se interrumpió la ejecución. |

Consulta todos los comandos y opciones con `transcript1 --help`, o ejecuta `transcript1` sin argumentos.
