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

첫 팟캐스트 만들기

주제 하나로 짧은 단독 진행 에피소드를 생성합니다:

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>quick, deep, debate 중 하나. 기본값은 quick.
--lang <lang>en, zh, ja 중 하나. 생략하면 쿼리에서 자동 감지.
--speaker <name>이름으로 지정하는 스피커. 반복 지정 가능. 스피커가 한 명이면 단독 진행 에피소드가 되고, 두 명 이상이면 여러 목소리의 에피소드가 됩니다.
--speaker-id <id>내부 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로 가져올 수 있습니다.
  • 결과. 성공하면 완성된 에피소드를 출력합니다. 서버 측에서 실패하면 실패 내용을 출력하고 0이 아닌 코드로 종료합니다.

폴링을 아예 건너뛰려면 --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_로 시작합니다.

키를 사용할 수 있게 하기

두 가지 방법이 있습니다. 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는 최소 하나의 --speaker-id를 요구합니다. 사용 가능한 보이스 목록을 조회해 ID를 복사하세요:

listenhub openapi speakers list --language en

Name, ID, Gender, Language 열로 이루어진 표가 출력됩니다. --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 estimate 또는 listenhub video estimate)으로 비용을 확인하고, 남은 잔액은 listenhub openapi subscription으로 확인하세요. 비용이 고정되어 있다고 가정하지 말고 항상 조회하세요.

다음 단계

이 페이지의 내용