ListenHub MCP

사용 가능한 도구

ListenHub MCP 도구 8개와 각각의 입력 제약, 그리고 반환하는 응답 구조.

ListenHub MCP server는 8개의 도구를 제공합니다. 각 도구는 OpenAPI 엔드포인트를 감싸며, 성공 시 래핑을 벗긴 data 페이로드를 반환합니다. 기반 응답은 표준 봉투 형식 { "code": 0, "message": "", "data": { ... } }를 따르며, code가 0이 아니면 오류를 의미합니다.

팟캐스트는 1~2명의 스피커를 받습니다. debate 모드는 2인 호스트 형식이라 speaker ID가 2개 필요합니다. FlowSpeech는 1인 전용(스피커 1명)입니다. 언어는 zh 또는 en입니다.

스피커 조회

get_speakers

팟캐스트와 FlowSpeech 생성에 사용할 수 있는 스피커 목록을 반환합니다. 보이스 ID, 이름, 언어, 성별, 데모 오디오 링크, 보이스 프로필이 포함됩니다.

입력

  • language: 언어 코드로 필터링, zh 또는 en (string, 선택)

응답

items 배열을 반환합니다. 각 항목은 speakerId를 가집니다(이 값을 다른 도구의 speakerIds / speakerId에 사용하세요).

{
  "items": [
    {
      "name": "Aria",
      "speakerId": "sp_aria_en",
      "demoAudioUrl": "https://storage.googleapis.com/.../aria-demo.mp3",
      "gender": "female",
      "language": "en",
      "profile": {
        "pitch": ["medium", "medium-high"],
        "speed": ["medium-fast"],
        "traits": ["clear", "bright", "warm"],
        "styles": ["friendly", "narrative"],
        "scenes": ["podcast", "audiobook"],
        "accent": "American English",
        "description": "Warm, conversational host voice.",
        "descriptionLocalized": { "zh": "温暖、口语化的主持人声音。" }
      }
    }
  ]
}

팟캐스트 생성

create_podcast

완전한 팟캐스트(텍스트 + 오디오)를 만듭니다. 완료될 때까지 자동으로 폴링하며, 몇 분이 걸릴 수 있습니다.

입력

  • query: 주제 또는 내용 프롬프트 (string, 선택)
  • sources: 텍스트/URL 소스 배열 (array, 선택)
  • speakerIds: 1~2개의 speaker ID (array, 필수). debate 모드에서는 ID를 2개 지정하세요.
  • language: 언어 코드 zh 또는 en (string, 선택, 기본값: en)
  • mode: 생성 모드 quick, deep, debate (string, 선택, 기본값: quick)

querysources 중 최소 하나는 지정해야 합니다.

응답

이 도구는 완료될 때까지 폴링하므로 팟캐스트 상세 정보를 전부 반환합니다(get_podcast_status와 같은 구조). 완료 시 페이로드 예시:

{
  "episodeId": "664e0c2b9f1a2b3c4d5e6f70",
  "createdAt": 1716460000000,
  "processStatus": "success",
  "contentStatus": "audio-success",
  "completedTime": 1716460320000,
  "credits": 12,
  "title": "How LLMs Changed Search",
  "outline": "1. The shift from keywords...",
  "cover": "https://storage.googleapis.com/.../cover.png",
  "audioUrl": "https://storage.googleapis.com/.../episode.mp3",
  "audioStreamUrl": "https://storage.googleapis.com/.../episode-stream.mp3",
  "subtitlesUrl": "https://storage.googleapis.com/.../episode.srt",
  "scripts": [
    { "speakerId": "sp_aria_en", "speakerName": "Aria", "content": "Welcome back to the show." },
    { "speakerId": "sp_leo_en", "speakerName": "Leo", "content": "Today we're digging into search." }
  ]
}

get_podcast_status

폴링 없이 현재 팟캐스트 상세 정보를 즉시 반환합니다.

입력

  • episodeId: 팟캐스트 에피소드 ID (string, 필수)

응답

create_podcast 완료 페이로드와 같은 구조입니다. 생성이 진행 중일 때 processStatus는 현재 상태를 나타내며, 해당 단계가 끝나기 전까지는 콘텐츠 필드(audioUrl, scripts 등)가 없을 수 있습니다. contentStatustext-success, text-fail, audio-success, audio-fail 중 하나입니다.

{
  "episodeId": "664e0c2b9f1a2b3c4d5e6f70",
  "createdAt": 1716460000000,
  "processStatus": "processing",
  "contentStatus": "text-success",
  "credits": 0,
  "title": "How LLMs Changed Search",
  "outline": "1. The shift from keywords...",
  "scripts": [
    { "speakerId": "sp_aria_en", "speakerName": "Aria", "content": "Welcome back to the show." }
  ]
}

create_podcast_text_only

텍스트만 있는 팟캐스트(스크립트, 오디오 없음)를 만듭니다. 스크립트 우선 워크플로의 첫 단계입니다. 스크립트를 생성해 검토하거나 편집한 다음 generate_podcast_audio를 호출하세요.

입력

  • query: 주제 또는 내용 프롬프트 (string, 선택)
  • sources: 텍스트/URL 소스 배열 (array, 선택)
  • speakerIds: 1~2개의 speaker ID (array, 필수). debate 모드에서는 ID를 2개 지정하세요.
  • language: 언어 코드 zh 또는 en (string, 필수)
  • mode: 생성 모드 quick, deep, debate (string, 선택, 기본값: quick)
  • waitForCompletion: 텍스트 생성이 끝날 때까지 대기 (boolean, 선택, 기본값: true)

querysources 중 최소 하나는 지정해야 합니다.

응답

episodeId와 상태 메시지를 반환합니다. waitForCompletiontrue이면 스크립트가 완성될 때까지 기다린 뒤 반환합니다. 스크립트는 get_podcast_status로 조회하세요.

{
  "episodeId": "664e0c2b9f1a2b3c4d5e6f70",
  "message": "Text content generation started. Audio generation can be triggered later."
}

generate_podcast_audio

이미 만들어진 텍스트 전용 팟캐스트에 오디오를 생성합니다. 스크립트 우선 워크플로의 두 번째 단계입니다.

입력

  • episodeId: 팟캐스트 에피소드 ID (string, 필수)
  • customScripts: 커스텀 스크립트 배열 (array, 선택). 각 항목은 content(string)와 speakerId(string)를 가집니다. 생략하면 기존 스크립트를 사용합니다.
  • waitForCompletion: 오디오 생성이 끝날 때까지 대기 (boolean, 선택, 기본값: true)

응답

오디오 생성이 시작되었음을 확인해 줍니다. 완성된 audioUrlget_podcast_status를 폴링해 확인하세요.

{
  "success": true,
  "message": "Audio generation started",
  "episodeId": "664e0c2b9f1a2b3c4d5e6f70",
  "status": "processing"
}

FlowSpeech 생성

create_flowspeech

텍스트나 URL로 FlowSpeech(1인 내레이션)를 만듭니다. smart 모드는 원본에 AI 보정을 적용하고, direct 모드는 원본을 수정 없이 그대로 읽습니다.

입력

  • sourceType: 소스 유형 text 또는 url (string, 필수)
  • sourceContent: 소스 내용 — 텍스트 본문 또는 URL (string, 필수). text인 경우 최소 10자 이상이어야 합니다.
  • speakerId: 내레이션 speaker ID (string, 필수). FlowSpeech는 정확히 한 명의 스피커를 사용합니다.
  • language: 언어 코드 zh 또는 en (string, 선택)
  • mode: 생성 모드 smart 또는 direct (string, 선택, 기본값: smart)

응답

episodeId를 반환합니다. 생성은 비동기로 진행되므로 get_flowspeech_status로 폴링하세요.

{
  "episodeId": "664e0c2b9f1a2b3c4d5e6f71"
}

get_flowspeech_status

폴링 없이 현재 FlowSpeech 상세 정보를 즉시 반환합니다.

입력

  • episodeId: FlowSpeech 에피소드 ID (string, 필수)

응답

FlowSpeech의 scripts는 팟캐스트에서 쓰는 스피커별 배열이 아니라 하나의 문자열(내레이션 스크립트)입니다. 콘텐츠 필드는 각 단계가 끝나는 대로 채워집니다.

{
  "episodeId": "664e0c2b9f1a2b3c4d5e6f71",
  "createdAt": 1716460000000,
  "processStatus": "success",
  "completedTime": 1716460120000,
  "title": "Quarterly Product Update",
  "outline": "1. Highlights...",
  "cover": "https://storage.googleapis.com/.../cover.png",
  "audioUrl": "https://storage.googleapis.com/.../flowspeech.mp3",
  "audioStreamUrl": "https://storage.googleapis.com/.../flowspeech-stream.mp3",
  "subtitlesUrl": "https://storage.googleapis.com/.../flowspeech.srt",
  "scripts": "Welcome to the quarterly update. This quarter we shipped..."
}

사용자 구독 조회

get_user_subscription

현재 사용자의 구독과 크레딧 잔액을 반환합니다. 플랜 상세, 월간 / 영구 / 한정 기간 크레딧, 전체 사용 가능 크레딧, 갱신 상태, 구독 날짜가 포함됩니다. 생성하기 전에 이 도구를 호출해 크레딧이 충분한지 확인하세요.

입력

없음.

응답

타임스탬프는 13자리 밀리초입니다. totalAvailableCredits는 사용 가능한 월간, 영구, 한정 기간 크레딧의 합계입니다.

{
  "subscriptionStartedAt": 1714000000000,
  "subscriptionExpiresAt": 1716592000000,
  "usageAvailableMonthlyCredits": 480,
  "usageTotalMonthlyCredits": 500,
  "usageAvailablePermanentCredits": 100,
  "usageTotalPermanentCredits": 100,
  "usageAvailableLimitedTimeCredits": 0,
  "totalAvailableCredits": 580,
  "resetAt": 1716592000000,
  "platform": "web",
  "renewStatus": true,
  "paidStatus": true,
  "subscriptionPlan": {
    "name": "Pro",
    "duration": "monthly",
    "platform": "web"
  }
}

크레딧 비용은 도구마다 고정되어 있지 않습니다. 생성 전에 비용을 예상하려면 OpenAPI 레퍼런스의 해당 */estimate-credits 엔드포인트를 사용하고, 실시간 잔액은 get_user_subscription으로 확인하세요.


ListenHub MCP server를 사용해 주셔서 감사합니다.

지원 문의: support@marswave.ai

이 페이지의 내용