Zyt TTS

v0.6.0

Use Chanjing TTS API to convert text to speech by listing voices, creating synthesis tasks, and polling task status. This skill reads app_id and secret_key f...

0· 192·0 current·0 all-time

Install

OpenClaw Prompt Flow

Install with OpenClaw

Best for remote or guided setup. Copy the exact prompt, then paste it into OpenClaw for zuoyuting214/zyt-tts-test.

Previewing Install & Setup.
Prompt PreviewInstall & Setup
Install the skill "Zyt TTS" (zuoyuting214/zyt-tts-test) from ClawHub.
Skill page: https://clawhub.ai/zuoyuting214/zyt-tts-test
Keep the work scoped to this skill only.
After install, inspect the skill metadata and help me finish setup.
Required env vars: CHANJING_CONFIG_DIR, CHANJING_AUTO_OPEN_LOGIN
Use only the metadata you can verify from ClawHub; do not invent missing requirements.
Ask before making any broader environment changes.

Command Line

CLI Commands

Use the direct CLI path if you want to install manually and keep every step visible.

OpenClaw CLI

Bare skill slug

openclaw skills install zyt-tts-test

ClawHub CLI

Package manager switcher

npx clawhub@latest install zyt-tts-test
Security Scan
VirusTotalVirusTotal
Benign
View report →
OpenClawOpenClaw
Benign
high confidence
Purpose & Capability
The name/description (Chanjing TTS) match the code and SKILL.md: the skill reads local app_id/secret_key, calls the documented Chanjing endpoints, lists voices, creates tasks, and polls status. Small mismatch: the registry metadata marks CHANJING_CONFIG_DIR and CHANJING_AUTO_OPEN_LOGIN as "required env vars," but in practice both are optional (CHANJING_CONFIG_DIR defaults to ~/.chanjing and CHANJING_AUTO_OPEN_LOGIN controls optional browser behavior).
Instruction Scope
SKILL.md and scripts only instruct the agent to read/write a local credentials file (~/.chanjing/credentials.json), refresh an access_token via the documented API, list voices, create tasks, and poll status. There are no instructions to read unrelated system files, exfiltrate arbitrary data, or call endpoints outside the documented Chanjing domain.
Install Mechanism
This is an instruction-only skill with no install spec and a small Python helper script that uses only the standard library (urllib, json, webbrowser). Nothing is downloaded or executed from an external, untrusted URL.
Credentials
The skill declares CHANJING_CONFIG_DIR and CHANJING_AUTO_OPEN_LOGIN as required env vars in metadata, but the code treats them as optional. The skill does not request API keys via environment variables; instead it reads app_id and secret_key from a local credentials.json file. Requiring the two CHANJING_* env vars in metadata is unnecessary but not malicious.
Persistence & Privilege
always is false and the skill does not modify other skills or global agent configuration. It writes/updates ~/.chanjing/credentials.json and will cache access_token/expire_in there (and attempts to set restrictive file permissions), which is appropriate for a local client that stores credentials.
Assessment
This skill appears to be a straightforward Chanjing TTS client. Before installing, note: (1) you must store your app_id and secret_key in ~/.chanjing/credentials.json (or set CHANJING_CONFIG_DIR to another directory) — the skill will read and cache an access_token there; (2) it may create ~/.chanjing and set file permissions; (3) only set CHANJING_AUTO_OPEN_LOGIN=1 if you want the helper to try opening the login page in your browser; (4) network calls go to open-api.chanjing.cc and https://www.chanjing.cc for login guidance — verify you trust that service and your credentials; and (5) the registry metadata over-declares CHANJING_* env vars as "required" though the scripts treat them as optional. If you are comfortable storing credentials in the local file and trusting the Chanjing endpoints, this skill is coherent with its stated purpose.

Like a lobster shell, security has layers — review code before you run it.

Runtime requirements

EnvCHANJING_CONFIG_DIR, CHANJING_AUTO_OPEN_LOGIN
latestvk97dws75423zgz2h85cxc5mngs83n9ht
192downloads
0stars
6versions
Updated 1mo ago
v0.6.0
MIT-0

Chanjing TTS

When to Use This Skill

Use this skill when the user wants to convert text into speech audio with Chanjing TTS.

Typical uses:

  • generate Chinese or English speech from text
  • list available voices and choose a suitable one
  • adjust speech speed
  • create a TTS task and poll until completion
  • return the remote audio URL and subtitle timestamps from the API result

How to Use This Skill

This skill includes its own local configuration and authentication flow.

Local Configuration

This skill reads credentials from:

  • ~/.chanjing/credentials.json
  • or $CHANJING_CONFIG_DIR/credentials.json

The credentials file should contain:

{
  "app_id": "<your_app_id>",
  "secret_key": "<your_secret_key>"
}

Supported environment variables:

  • CHANJING_CONFIG_DIR: custom local config directory
  • API base is fixed to https://open-api.chanjing.cc

If credentials are missing or invalid, scripts return login guidance with the official Chanjing login URL (no browser auto-open by default):

  • https://www.chanjing.cc/openapi/login

Optional behavior:

  • set CHANJING_AUTO_OPEN_LOGIN=1 only when you explicitly want local scripts to try opening the login page in your default browser.

Standard Workflow

All API calls use JSON and UTF-8.

  1. Read local credentials and obtain a valid access_token
  2. List available voices and select one
  3. Create a speech synthesis task and get task_id
  4. Poll task status until success or failure
  5. On success, return the remote audio URL from the API response

By default, return the remote audio URL only. Do not auto-download the audio file unless the user explicitly asks to save it locally.

Covered APIs

This skill currently covers:

  • POST /open/v1/access_token
  • GET /open/v1/list_common_audio
  • POST /open/v1/create_audio_task
  • POST /open/v1/audio_task_state

Scripts

Scripts are located in scripts/.

ScriptPurpose
chanjing-configwrite or inspect local app_id / secret_key configuration
_auth.pyread local credentials, fetch or refresh access_token
list_voiceslist available public voices, default output is id/name, optional --json for full data
create_taskcreate a TTS task and print task_id
poll_taskpoll task status until completion and print the remote audio URL

Usage Examples

# 0. Configure credentials
python scripts/chanjing-config \
  --ak "<your_app_id>" \
  --sk "<your_secret_key>"

# 1. List voices
python scripts/list_voices

# 2. Create a synthesis task
TASK_ID=$(python scripts/create_task \
  --audio-man "f9248f3b1b42447fb9282829321cfcf2" \
  --text "Hello, I am your AI assistant.")

# 3. Poll until completion and get the remote audio URL
python scripts/poll_task --task-id "$TASK_ID"

API Notes

Access Token

Read app_id and secret_key from the local credentials file. If there is no valid token, request one from:

POST /open/v1/access_token
Content-Type: application/json

Request body:

{
  "app_id": "<from local credentials>",
  "secret_key": "<from local credentials>"
}

Response example:

{
  "trace_id": "8ff3fcd57b33566048ef28568c6cee96",
  "code": 0,
  "msg": "success",
  "data": {
    "access_token": "1208CuZcV1Vlzj8MxqbO0kd1Wcl4yxwoHl6pYIzvAGoP3DpwmCCa73zmgR5NCrNu",
    "expire_in": 1721289220
  }
}

Important response fields:

FieldDescription
coderesponse status code
msgresponse message
data.access_tokenvalid token for subsequent calls
data.expire_intoken expiration timestamp

Common status codes:

CodeDescription
0success
400invalid parameter format
40000parameter error
50000system internal error

List Voices

List available public voices:

GET /open/v1/list_common_audio
access_token: {{access_token}}

Use query parameters:

{
  "page": 1,
  "size": 100
}

Response example:

{
  "trace_id": "25eb6794ffdaaf3672c25ed9efbe49c6",
  "code": 0,
  "msg": "success",
  "data": {
    "list": [
      {
        "id": "f9248f3b1b42447fb9282829321cfcf2",
        "grade": 0,
        "name": "带货小芸",
        "gender": "female",
        "lang": "multilingual",
        "desc": "",
        "speed": 1,
        "pitch": 1,
        "audition": "https://res.chanjing.cc/chanjing/res/upload/ms/2025-06-05/7945e0474b8cb526e884ee7e28e4af8d.wav"
      },
      {
        "id": "f5e69c1bbe414bec860da3294e177625",
        "grade": 0,
        "name": "方言口音老奶奶",
        "gender": "female",
        "lang": "multilingual",
        "desc": "",
        "speed": 1,
        "pitch": 1,
        "audition": "https://res.chanjing.cc/chanjing/res/upload/ms/2025-04-30/1b248ad05953028db5a6bcba9a951164.wav"
      }
    ],
    "page_info": {
      "page": 1,
      "size": 100,
      "total_count": 98,
      "total_page": 1
    }
  }
}

Important voice fields:

FieldDescription
idvoice ID
namevoice name
gendergender
langlanguage
descdescription
auditionaudition link
gradegrade

Common status codes:

CodeDescription
0success
10400access token verification failed
40000parameter error
50000system internal error
51000system internal error

Create Speech Task

Create a TTS task:

POST /open/v1/create_audio_task
access_token: {{access_token}}
Content-Type: application/json

Example request body:

{
  "audio_man": "89843d52ccd04e2d854decd28d6143ce",
  "speed": 1,
  "pitch": 1,
  "text": {
    "text": "Hello, I am your AI assistant."
  }
}

Important request fields:

FieldDescription
audio_manvoice ID
speedspeech speed, range 0.5 to 2
pitchusually keep 1
text.textsynthesis text, max 4000 characters
aigc_watermarkoptional visible watermark

Response example:

{
  "trace_id": "dd09f123a25b43cf2119a2449daea6de",
  "code": 0,
  "msg": "success",
  "data": {
    "task_id": "88f635dd9b8e4a898abb9d4679e0edc8"
  }
}

Important response fields:

FieldDescription
coderesponse status code
msgresponse message
data.task_idtask ID for polling

Common status codes:

CodeDescription
0success
400invalid parameter format
10400access token verification failed
40000parameter error
40001exceeds QPS limit
40002production duration reached limit
50000system internal error

Poll Task Status

Poll task status until completion:

POST /open/v1/audio_task_state
access_token: {{access_token}}
Content-Type: application/json

Example request body:

{
  "task_id": "88f635dd9b8e4a898abb9d4679e0edc8"
}

Response example:

{
  "trace_id": "ab18b14574bbcc31df864099d474080e",
  "code": 0,
  "msg": "success",
  "data": {
    "id": "9546a0fb1f0a4ae3b5c7489b77e4a94d",
    "type": "tts",
    "status": 9,
    "text": [
      "猫在跌落时能够在空中调整身体,通常能够四脚着地,这种”猫右自己“反射显示了它们惊人的身体协调能力和灵活性。核磁共振成像技术通过利用人体细胞中氢原子的磁性来生成详细的内部图像,为医学诊断提供了重要工具。"
    ],
    "full": {
      "url": "https://cy-cds-test-innovation.cds8.cn/chanjing/res/upload/tts/2025-04-08/093a59021d85a72d28a491f21820ece4.wav",
      "path": "093a59013d85a72d28a491f21820ece4.wav",
      "duration": 18.81
    },
    "slice": null,
    "errMsg": "",
    "errReason": "",
    "subtitles": [
      {
        "key": "20c53ff8cce9831a8d9c347263a400a54d72be15",
        "start_time": 0,
        "end_time": 2.77,
        "subtitle": "猫在跌落时能够在空中调整身体"
      },
      {
        "key": "e19f481b6cd2219225fa4ff67836448e054b2271",
        "start_time": 2.77,
        "end_time": 4.49,
        "subtitle": "通常能够四脚着地"
      }
    ]
  }
}

Important response fields:

FieldDescription
data.status1 means generating, 9 means completed
data.full.urlremote audio URL
data.full.durationaudio duration
data.subtitlessentence-level timestamps
data.errMsgerror message
data.errReasonerror reason

Common status codes:

CodeDescription
0success
10400access token verification failed
40000parameter error
50000system internal error

Output Convention

Default behavior:

  • return the remote audio URL from data.full.url
  • return subtitles when they are present in the API response
  • do not auto-download the file unless the user explicitly asks

Comments

Loading comments...