# CLIの使い方

> ターミナルから動画リンクや手元のファイルを文字起こしします。インストール、一括処理、字幕の保存、スクリプトやエージェント向けのJSON出力を説明します。

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

`transcript1`コマンドに動画リンクかファイルパスを渡すと、ターミナルで文字起こしを取得できます。YouTube、X、TikTok、Instagram、Facebook、Blueskyのリンクや、手元の音声・動画ファイルを指定してください。ほかの対応プラットフォームと必要なバージョンは以下で説明します。リンクの形式や制限は[対応ソースとオプション](https://transcript1.com/ja/docs/sources-and-options)で確認できます。スタンドアロン版のCLIはNode.jsなしで動きます。

SNSリンクを使う場合は、CLIの1.2.0以降に更新してください。1.1.0以前はYouTubeにしか対応しておらず、それ以外のリンクはAPIに送信する前にエラーになります。更新には`transcript1 update`を使います。

1.2.0で対応するのは、上記の6プラットフォームです。Twitch、Dailymotion、Pinterest、LinkedIn、Snapchatには、それぞれに対応したリリースが必要です。古いCLIでは、リンクをAPIに送信する前に拒否することがあります。

SNSのリンクには公開投稿のURLを使ってください。動画が複数ある投稿では、最初の動画だけを文字起こしします。使える短縮リンクや制限は[対応ソースとオプション](https://transcript1.com/ja/docs/sources-and-options)を参照してください。

## インストール

macOSとLinuxのx64・ARM64環境では、次を実行します。

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

実行ファイルは`~/.local/bin`に入ります。PATHの設定が必要な場合は、インストーラーが手順を表示します。インストール先を変えるには、`TRANSCRIPT1_INSTALL_DIR`を設定してください。

短縮エイリアスの`t1`も使えるようになります。zshでは、`~/.zshrc`に`alias transcript1='noglob transcript1'`を追加します。これにより、`?`を含むリンクを引用符なしで渡せます。シェルの設定を変更したくない場合は、`TRANSCRIPT1_NO_MODIFY_SHELL=1`を指定してください。

Windows x64では、PowerShellで次を実行します。

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

インストール先は`%LOCALAPPDATA%\Programs\transcript1`です。短縮エイリアスの`t1.cmd`を追加し、このフォルダーをユーザーのPATHに登録します。インストール後、新しいターミナルを開いてください。

## ログイン

ログインには次のコマンドを使います。

```bash
transcript1 login
```

ブラウザーでtranscript1.comが開きます。SSH接続中や画面のない環境では、代わりにリンクを表示します。ターミナルとページのコードが一致することを確認し、「Approve」をクリックしてください。CLIは承認後、`transcript1 CLI (<computer name>)`という名前のキーを保存します。作成したキーは「[API keys](https://transcript1.com/dashboard/account/tokens)」で確認できます。

リンクだけを表示してブラウザーを開かない場合は、`transcript1 login --no-browser`を実行します。

手持ちのキーを使う場合は、`transcript1 login --with-key`を実行して貼り付けます。標準入力からも渡せます：`transcript1 login < key.txt`。

CIやエージェントでは、環境変数`TRANSCRIPT1_API_KEY`にキーを設定します。環境変数の値は、保存済みのキーより優先されます。対話用のターミナルもキーもないエージェントは、`transcript1 login < /dev/null`を実行し、表示された承認リンクをユーザーに送れます。

`transcript1 logout`でCLIのキーを失効させ、端末から削除できます。失効できなかった場合も端末のキーは削除し、「API keys」での失効を案内します。貼り付けて登録したキーは、「API keys」で失効させてください。

## 動画リンクから文字起こしする

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

完了を待ってから、文字起こしテキストを標準出力（stdout）に表示します。YouTube、X、TikTok、Bluesky、Dailymotion、LinkedInでは、動画の元の言語の字幕を優先します。使える字幕がなければAI文字起こしに切り替えます。進捗は標準エラー出力（stderr）に表示します。

zshではリンクを引用符で囲むと安全です。引用符がないと、`&`はコマンドを分割します。`?`もファイル名のパターンとして解釈しますが、インストーラーが追加するエイリアスを使えば回避できます。

## ファイルを文字起こしする

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

ファイルは2GB（2,000,000,000バイト）までです。拡張子はmp3、wav、m4a、flac、ogg、opus、mp4、mov、webm、mkvに対応しています。CLIがアップロードを行い、文字起こしの完了まで待ちます。

## 複数のファイルやリンクをまとめて処理する

リンクやファイルパスを複数並べるか、フォルダーを指定します。

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

`recordings/*.mp3`のようなパターンも使えます。Windowsでも同じです。フォルダーを指定すると、直下のメディアファイルを名前順に処理します。入力が複数の場合は、デフォルトで入力ごとにファイルを作り、`./transcripts`に保存します。同時処理数は`--jobs`で1〜20に設定できます。デフォルトは2です。

入力に`-`を指定すると、標準入力を読み込みます。リンクかファイルパスを1行ずつ渡してください。macOSやLinuxのシェルでは、次のように使います。

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

空行と`#`で始まる行は無視します。同じ入力が重複していても、処理するのは1回だけです。

入力が1つなら、`-o`で保存先のファイル名を指定します。ただし、既存のフォルダーか、末尾が`/`のパスを渡した場合は、そのフォルダーに保存します。入力が複数なら、`-o`は保存先フォルダーの指定です。フォルダーがなければ自動で作成します。

YouTubeリンクとローカルファイルは、保存先のファイルがすでにあればスキップします。再処理する場合は`--overwrite`を付けてください。

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

## 保存形式とオプション

| オプション | 内容 |
|---|---|
| `-f`、`--format` | `text`（デフォルト）、`srt`、`vtt`、`json`から選びます。JSONはAPIの文字起こしオブジェクトです。 |
| `--speakers` | 話者分離を有効にし、Speaker 1、Speaker 2などのラベルを付けます。 |
| `--timestamps` | 各行の先頭に`[hh:mm:ss]`を付けます。`text`形式専用です。 |
| `--language` | ISO 639-1の言語コードを指定します。デフォルトは`auto`です。 |
| `--source` | `auto`（デフォルト）か`stt`を指定します。YouTube、X、TikTok、Bluesky、Dailymotion、LinkedInでは、使える字幕があれば`captions`も指定できます。`captions`（字幕のみ）は音声をダウンロードせず、STTにも切り替えません。 |
| `--fresh` | リンクの文字起こしで、過去24時間以内の処理済みデータを再利用せずに作り直します。 |

話者分離とタイムスタンプを付ける例です。

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

`--speakers`と`--source captions`は併用できません。`auto`で話者分離を有効にすると、字幕を使わず音声を処理します。字幕を使えるのはYouTubeとXに加え、TikTok、Bluesky、Dailymotion、LinkedInです。YouTube以外の字幕は、自動生成字幕でもセグメント単位のタイムスタンプのみです（`words: null`）。対応状況や言語の指定方法は[対応ソースとオプション](https://transcript1.com/ja/docs/sources-and-options)を参照してください。

## スクリプトやエージェントから使う

シェルを使えるエージェントなら、CLIのインストールと`TRANSCRIPT1_API_KEY`の設定だけで、`transcript1 <link>`や`transcript1 <file>`を実行できます。MCP経由で使う場合は、[MCPサーバーの設定](https://transcript1.com/ja/docs/mcp)を参照してください。

機械で読み取る場合は`--json`を付けます。各入力の処理が終わるたびに、標準出力へJSONを1行ずつ出力します。進捗、処理の集計、更新通知は表示しません。

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

処理が終わったジョブは、APIの文字起こしオブジェクトに`input`と`reused`を加えて返します。テキストをファイルに保存した場合は、`transcript`の代わりに`file`を含めます。IDの発行前にエラーが起きた場合は、`input`と`error`を返します。`error`には`code`と`message`が入ります。スキップした入力では、`input`と`skipped`（`exists`または`out_of_minutes`）を返し、該当する場合は`file`も含めます。`exists`になるのはYouTubeリンクとローカルファイルだけです。

入力が1つで`-o`を付けない場合、`--json`は文字起こし本文もオブジェクトに含め、`-f`は無視します。複数の入力に`-o`を付けずに使うと、本文は`./transcripts`に保存し、JSONには`transcript`ではなく`file`を含めます。ファイルに保存するときの形式は`-f`で指定します。進捗と集計だけを非表示にするには、`-q`か`--quiet`を使います。文字起こしとエラーは引き続き出力します。

完了を待たずに開始し、あとから文字起こしを取得することもできます。

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

`<id>`には、最初のコマンドが出力したIDを入れます。`--no-wait`はIDとステータスを表示し、`--json`も付けた場合はオブジェクトで返します。`get`はジョブが終了するまで待ちます。`-f`、`-o`、`--timestamps`、`--no-wait`、`--json`、`-q`も指定できます。

## CLIを更新する

```bash
transcript1 update
```

標準エラー出力がターミナルの場合、CLIは24時間に1回まで更新を確認します。新しいリリースがあれば通知します。確認自体を止めるには、`TRANSCRIPT1_NO_UPDATE_CHECK=1`を設定してください。`--json`や`-q`を使う場合も、更新通知は表示しません。

## 終了コード

| コード | 内容 |
|---|---|
| 0 | 全入力の処理に成功したか、保存済みのファイルがあるためスキップしました。後者はYouTubeリンクとローカルファイルが対象です。 |
| 1 | 失敗した入力、または分数不足でスキップした入力が1つ以上あります。 |
| 2 | コマンドの指定やログインに問題があります。 |
| 130 | 処理を中断しました。 |

コマンドとフラグの一覧は、`transcript1 --help`で確認できます。引数なしの`transcript1`でも表示します。
