ListenHubSDKs & CLI
CLI

CLI クイックスタート

CLI をインストールして認証し、数分でターミナルから最初のポッドキャストを作成します。

本ガイドは、まっさらなマシンから完成したポッドキャストエピソードまでを案内します。listenhub バイナリをインストールし、認証し(対話的な用途では OAuth、スクリプトでは API キー)、最初の生成コマンドを実行します。そのうえで、ポーリングの仕組みと結果の読み取り方を学びます。

Node.js >= 20 が必要です。CLI は ESM のみ対応で、listenhub バイナリとしてグローバルにインストールされます。

対話的なセットアップ(OAuth)

自分のターミナルで作業するときはこの手順を使います。ブラウザ経由でサインインし、あなたのユーザーアカウントとして動作します。

CLI をインストールする

npm install -g @marswave/listenhub-cli

これで listenhub バイナリが PATH に入ります。確認します:

listenhub --version
listenhub --help

ログインする

listenhub auth login

ブラウザが開いて OAuth を完了します。承認すると、CLI はトークンを ~/.config/listenhub/credentials.json(モード 0600)に保存し、サインインしたアカウントを表示します。トークンは自動で更新されるため、この操作はマシンごとに一度だけです。

セッションはいつでも確認できます:

listenhub auth status

最初のポッドキャストを作成する

トピックから、スピーカー 1 人の短いエピソードを生成します:

listenhub podcast create --query "AI agent trends in 2026" --mode quick

このコマンドはジョブを送信し、エピソードが完成するまでポーリングして、スピナーで進捗を表示します。完了するとエピソード ID、タイトル、ステータスを出力します。

podcast create で押さえておきたいフラグ:

フラグ説明
--query <text>エピソードのトピックまたはプロンプト。
--source-url <url>エピソードの根拠となる参照 URL。繰り返し指定可能。
--source-text <text>エピソードの根拠となる参照テキスト。繰り返し指定可能。
--mode <mode>quickdeepdebate のいずれか。デフォルトは quick
--lang <lang>enzhja のいずれか。省略時は query から自動判定。
--speaker <name>名前でスピーカーを指定。繰り返し指定可能。1 人なら単独エピソード、2 人以上ならマルチボイスのエピソードになります。
--speaker-id <id>inner ID でスピーカーを指定。繰り返し指定可能。ID が分かっている場合は --speaker の代わりに使います。

スピーカーを省略すると、CLI は検出した言語のデフォルトを選びます。声を自分で選ぶには、まずスピーカーを一覧し(openapi ネームスペースが照会可能な一覧を提供します。後述の API キーを使う手順 を参照)、--speaker または --speaker-id を渡します。

結果を読み取る

デフォルトではコマンドが生成の完了まで待つため、最終出力はすでに完成したエピソードを反映しています:

✓ Podcast created

  ID:     ep_xxx
  Title:  AI agent trends in 2026
  Status: success

最近のエピソードはいつでも一覧できます:

listenhub podcast list

ポーリングの仕組み

生成は非同期です。作成系のコマンドはすべてジョブを送信して ID を受け取り、ジョブが終了状態に達するまで API をポーリングします。

  • 間隔。 CLI は 10 秒ごとにステータスを確認します。
  • タイムアウト。 --timeout <seconds> で待機時間の上限を決めます。podcast create のデフォルトは 300(5 分)です。ジョブの完了前にタイムアウトすると、コマンドは終了コード 3 で終了します。ジョブはサーバー側で動き続けるため、後から ID で取得できます。
  • 結果。 成功するとコマンドは完成したエピソードを出力します。サーバー側で失敗した場合は失敗内容を出力し、非ゼロで終了します。

ポーリングを完全にスキップするには --no-wait を渡します。コマンドはすぐに ID を返して 0 で終了します:

listenhub podcast create --query "AI agent trends in 2026" --no-wait
# ✓ Podcast submitted: ep_xxx

スクリプトや CI では、--no-wait--json-j)を組み合わせます。--json は機械可読な出力を stdout に出す(エラーは stderr のまま)ので、そのまま jq にパイプできます:

ID=$(listenhub podcast create --query "Weekly recap" --no-wait -j | jq -r '.episodeId')

その後は自分のスケジュールでポーリングするか、自前のジョブランナーが完了を報告した時点でエピソードを取得します。

スクリプト向けの設定(API キー)

サーバー上や CI では、OAuth の代わりに API キーを使います。API キーを使うコマンドは listenhub openapi ネームスペースにあり、キーの所有者として動作します。

API キーを作成する

listenhub.ai/settings/api-keys でキーを作成します。キーは lh_sk_ で始まります。

キーを利用できるようにする

方法は 2 つあります。CI や一時的な環境では、環境変数を設定してください。CLI はこちらを先に読み取ります:

export LISTENHUB_API_KEY="lh_sk_..."

ローカルで恒久的に設定する場合は、代わりにディスクへ保存します。このコマンドはキーの入力を求め、~/.config/listenhub/openapi.json(モード 0600)に書き込みます:

listenhub openapi config set-key

設定内容(および実際に有効になっている取得元)を確認するには:

listenhub openapi config show

スピーカーを選ぶ

OAuth の手順とは異なり、openapi podcast create は少なくとも 1 つの --speaker-id を必要とします。利用可能な音声を一覧して ID をコピーします:

listenhub openapi speakers list --language en

NameIDGenderLanguage を含む表が出力されます。--speaker-id に渡すのは ID 列の値です。

API キーでポッドキャストを作成する

listenhub openapi podcast create \
  --query "AI agent trends in 2026" \
  --speaker-id <speaker-id> \
  --mode quick

OAuth のコマンドと同様に、ジョブを送信して完了までポーリングし、終わるとエピソードの詳細を出力します。--no-wait--timeout <seconds>(デフォルト 300)、--json の各フラグも同じように使えます。マルチボイスのエピソードにするには --speaker-id を複数回渡し、内容の根拠を与えるには --source-url / --source-text を追加します。

後から ID でエピソードを取得します:

listenhub openapi podcast get <episode-id>

終了コード

スクリプトは終了コードで分岐できます:

コード意味
0成功
1エラー(バリデーション、API エラー、ネットワーク障害)
2認証が必要、または認証が無効。listenhub auth login を実行し直すか、API キーを確認してください
3タイムアウト。タスクの完了前にポーリングが --timeout を超えました

クレジットの見積もり

生成にはクレジットを消費します。作成する前に、使う製品に対応する estimate コマンド(たとえば listenhub openapi video estimatelistenhub video estimate)でコストを確認し、listenhub openapi subscription で残高を確認してください。固定のコストを前提にせず、必ず照会してください。

次のステップ

このページの内容