Token导航 LogoToken导航TokenDH.com
开发需要联网github未标认证来源可访问许可证需确认审计异常

chanjing-avatar禅境头像

Agent Skill

chanjing-avatar 用于处理 GitHub 仓库、Issue、Pull Request 和代码协作信息,适合在 Codex、Claude、Cursor、Gemini CLI 中需要围绕仓库状态、代码变更或协作事项进行整理时使用。可结合来源仓库、安装命令和原始 README 继续核验具体用法。安装前建议确认权限范围、维护状态,以及是否会触发联网、命令执行或文件读写。

总安装

1,591

周安装

65

GitHub Stars

14

下载量

510
CodexClaudeCursorGemini CLI

安装说明

本站只整理中文说明和来源信息,不托管安装包,也不代用户安装。

GitHub

来源数

2

许可证

unknown

最后核验

2026-05-01

来源状态

来源可访问

安装方式

通过对话安装

复制提示词发给支持本地命令或 Skills 的 AI 助手,先确认命令和权限,再让它执行。

请帮我安装这个 Agent Skill:chanjing-avatar(禅境头像)
来源仓库:https://github.com/chanjing-ai/chan-skills
仓库路径:skills/chanjing-avatar
安装命令:
npx skills add https://github.com/chanjing-ai/chan-skills --skill chanjing-avatar
安装前请先检查当前环境是否支持对应 CLI,并向我确认将要执行的命令、安装目录、联网范围和文件读写权限;确认后再执行。

命令行安装

复制命令到本机终端执行。该命令会通过 npx skills 从第三方来源获取 Skill;本站只展示命令,不托管安装包,也不自动执行。

skills.shnpx skills
npx skills add https://github.com/chanjing-ai/chan-skills --skill chanjing-avatar

简介

chanjing-avatar 用于调用蝉镜 Avatar Open API 创建对口型任务,适合在 Codex、Claude、Cursor、Gemini CLI 中需要音视频唇形同步处理时使用。

  • 支持上传音视频素材、创建任务、轮询进度与获取结果链接,依赖本地凭据与 Python 脚本。
  • 运行依赖 Python3 与同仓库脚本,无需 ffmpeg/ffprobe,权限边界由 manifest.yaml 定义。
  • 安装前需确认权限范围、维护状态,以及是否会触发联网、命令执行或文件读写操作。
  • 适用宿主包括 Codex、Claude、Cursor、Gemini CLI,接入前应确认版本、权限和运行环境要求。

SKILL.md

Chanjing Avatar (Lip-Syncing)

功能说明

调用蝉镜 Avatar Open API:上传音视频素材、创建对口型任务、轮询与获取结果链接。脚本为 Python HTTP/上传客户端,依赖 ffmpeg/ffprobe。

运行依赖

  • python3 与同仓库 scripts/*.py
  • ffmpeg/ffprobe 门控

环境变量与机器可读声明

  • 环境变量键名与说明:manifest.yamlenvironment 段)及本文
  • 变量、凭据、合规 permissionsclientPermissionsagentPolicymanifest.yaml

使用命令

  • ClawHub(slug 以注册表为准):clawhub run chanjing-avatar
  • 本仓库python skills/chanjing-avatar/scripts/create_task.py …(流程见正文 How to Use

登记与审稿(单一事实来源)

主凭据、上传/下载边界、浏览器引导等:manifest.yaml 为准。本篇 How to Use 起为 API 步骤说明。

When to Use This Skill

Use this skill when the user needs to create lip-syncing videos (digital avatar videos) with synchronized mouth movements.

Chanjing Avatar supports:

  • Text-driven or audio-driven lip-syncing
  • Multiple system voices for TTS
  • Video resolution customization
  • Task status polling and callback

How to Use This Skill

前置条件:执行本 Skill 前,必须先通过 chanjing-credentials-guard 完成 AK/SK 与 Token 校验。凭据与审稿对表见 manifest.yaml

Security & credentials(引用)

详见 manifest.yamlcredentialsclientPermissions(含本地上传、结果 URL、浏览器行为;合规见顶层 permissions)。

Multiple APIs need to be invoked. All share the domain: "https://open-api.chanjing.cc". All requests communicate using json. You should use utf-8 to encode and decode text throughout this task.

  1. Obtain an access_token, which is required for all subsequent API calls
  2. Upload your video/audio files using the File Management API to get file_id
  3. Create a lip-syncing task with video and audio/text using these file_id values
  4. Poll the Query Task Detail API or use Task List API to check status
  5. Download the generated video using the url in response when status is completed

Obtain AccessToken

~/.chanjing/credentials.json 读取 app_idsecret_key,若无有效 Token 则调用:

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

请求体(使用本地配置的 app_id、secret_key):

{
  "app_id": "<从 credentials.json 读取>",
  "secret_key": "<从 credentials.json 读取>"
}

Response example:

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

Response field description:

First-level FieldSecond-level FieldDescription
codeResponse status code
msgResponse message
dataResponse data
access_tokenValid for one day, previous token will be invalidated
expire_inToken expiration time

Response Status Code Description

CodeDescription
0Success
400Invalid parameter format
40000Parameter error
50000System internal error

Upload Media Files (File Management)

Before creating a lip-syncing task, you must upload your video (and optional audio) files using the File Management API to obtain file_id values.

The full documentation is here: [File Management](https://doc.chanjing.cc/api/file/file-management.html).

Step 1: Get upload URL

GET /open/v1/common/create_upload_url
access_token: {{access_token}}

Query params:

KeyExampleDescription
servicelip_sync_video / lip_sync_audioFile usage purpose. Use lip_sync_video for driving video, lip_sync_audio for audio (if audio-driven).
name1.mp4Original file name including extension

You will get a response containing sign_url, mime_type, and file_id. Use the sign_url with HTTP PUT to upload the file, setting Content-Type to the returned mime_type. After the PUT completes, poll the file detail API until the file is ready (do not assume a fixed wait). Keep the returned file_id for video_file_id / audio_file_id below.

Polling: Call GET /open/v1/common/file_detail?id={{file_id}} with access_token until the response data.status indicates success (e.g. status === 2). Only then use the file_id for the create task API.

Create Lip-Syncing Task

Submit a lip-syncing video creation task, which returns a video ID for polling later.

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

Request body example (TTS-driven):

{
  "video_file_id": "e284db4d95de4220afe78132158156b5",
  "screen_width": 1080,
  "screen_height": 1920,
  "callback": "https://example.com/openapi/callback",
  "model": 0,
  "audio_type": "tts",
  "tts_config": {
    "text": "君不见黄河之水天上来,奔流到海不复回。",
    "audio_man_id": "C-f2429d07554749839849497589199916",
    "speed": 1,
    "pitch": 1
  }
}

Request body example (Audio-driven):

{
  "video_file_id": "e284db4d95de4220afe78132158156b5",
  "screen_width": 1080,
  "screen_height": 1920,
  "model": 0,
  "audio_type": "audio",
  "audio_file_id": "audio_file_id_from_file_management"
}

Request field description:

Parameter NameTypeRequiredDescription
video_file_idstringYesVideo file ID from File Management (data.file_id). Supports mp4, mov, webm
screen_widthintNoScreen width, default 1080
screen_heightintNoScreen height, default 1920
backwayintNoPlayback order when reaching end: 1-normal, 2-reverse. Default 1
drive_modestringNoDrive mode: ""-normal, "random"-random frame. Default ""
callbackstringNoCallback URL for async notification
modelintNoModel version: 0-basic, 1-high quality. Default 0
audio_typestringNoAudio type: "tts"-text driven, "audio"-audio driven. Default "tts"
tts_configobjectYes (for tts)TTS configuration when audio_type="tts"
tts_config.textstringYes (for tts)Text to synthesize
tts_config.audio_man_idstringYes (for tts)Voice ID
tts_config.speednumberNoSpeech speed: 0.5-2, default 1
tts_config.pitchnumberNoPitch, default 1
audio_file_idstringYes (for audio)Audio file ID from File Management (data.file_id) when audio_type="audio". Supports mp3, m4a, wav
volumeintNoVolume: 1-100, default 100

Response example:

{
  "trace_id": "8d10659438827bd4d59eaa2696f9d391",
  "code": 0,
  "msg": "success",
  "data": "9499ed79995c4bdb95f0d66ca84419fd"
}

Response field description:

FieldDescription
codeResponse status code
msgResponse message
dataVideo ID for subsequent polling

Query Task List

Get a list of lip-syncing tasks.

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

Request body:

{
  "page": 1,
  "page_size": 10
}

Request field description:

ParameterTypeRequiredDescription
pageintNoPage number, default 1
page_sizeintNoPage size, default 10

Response example:

{
  "trace_id": "8d10659438827bd4d59eaa2696f9d391",
  "code": 0,
  "msg": "success",
  "data": {
    "list": [
      {
        "id": "9499ed79995c4bdb95f0d66ca84419fd",
        "status": 20,
        "progress": 100,
        "msg": "success",
        "video_url": "https://res.chanjing.cc/xxx/lip-sync/9499ed79995c4bdb95f0d66ca84419fd.mp4",
        "preview_url": "https://res.chanjing.cc/xxx/lip-sync/9499ed79995c4bdb95f0d66ca84419fd.jpg",
        "duration": 300,
        "create_time": 1738636800
      }
    ],
    "page_info": {
      "page": 1,
      "size": 10,
      "total_count": 1,
      "total_page": 1
    }
  }
}

Response field description:

First-level FieldSecond-level FieldDescription
codeResponse status code
msgResponse message
dataResponse data
listTask list
id: Video ID
status: Task status (0-pending, 10-generating, 20-success, 30-failed)
progress: Progress 0-100
msg: Task message
video_url: Video download URL
preview_url: Cover image URL
duration: Video duration in ms
create_time: Creation time (unix timestamp)
page_infoPagination info

Query Task Detail

Poll the following API to check task status until completed.

GET /open/v1/video_lip_sync/detail
access_token: {{access_token}}

Query params:

ParameterDescription
idVideo ID

Example: GET /open/v1/video_lip_sync/detail?id=9499ed79995c4bdb95f0d66ca84419fd

Response example:

{
  "trace_id": "8d10659438827bd4d59eaa2696f9d391",
  "code": 0,
  "msg": "success",
  "data": {
    "id": "9499ed79995c4bdb95f0d66ca84419fd",
    "status": 20,
    "progress": 100,
    "msg": "success",
    "video_url": "https://res.chanjing.cc/xxx/lip-sync/9499ed79995c4bdb95f0d66ca84419fd.mp4",
    "preview_url": "https://res.chanjing.cc/xxx/lip-sync/9499ed79995c4bdb95f0d66ca84419fd.jpg",
    "duration": 300,
    "create_time": 1738636800
  }
}

Response field description:

First-level FieldSecond-level FieldDescription
codeResponse status code
msgResponse message
dataResponse data
idVideo ID
statusTask status: 0-pending, 10-generating, 20-success, 30-failed
progressProgress 0-100
msgTask message
video_urlVideo download URL
preview_urlCover image URL
durationVideo duration in ms
create_timeCreation time (unix timestamp)

Callback Notification

When a callback URL is provided, the system will send a POST request when the task completes:

{
  "trace_id": "8d10659438827bd4d59eaa2696f9d391",
  "code": 0,
  "msg": "success",
  "data": {
    "id": "9499ed79995c4bdb95f0d66ca84419fd",
    "status": 20,
    "progress": 100,
    "msg": "success",
    "video_url": "https://res.chanjing.cc/xxx/lip-sync/9499ed79995c4bdb95f0d66ca84419fd.mp4",
    "preview_url": "https://res.chanjing.cc/xxx/lip-sync/9499ed79995c4bdb95f0d66ca84419fd.jpg",
    "duration": 300,
    "create_time": 1738636800
  }
}

Scripts

本 Skill 提供脚本(skills/chanjing-avatar/scripts/),与 chanjing-credentials-guard 使用同一配置文件(~/.chanjing/credentials.json)获取 Token。

脚本说明
get_upload_url.py获取上传链接,输出 sign_urlmime_typefile_id
upload_file.py上传本地文件,轮询 file_detail 直到就绪后输出 file_id
create_task.py创建对口型任务(TTS 或音频驱动),输出视频任务 id
poll_task.py轮询任务直到完成,输出 video_url

示例(在项目根或 skill 目录下执行):

# 1. 上传驱动视频,得到 video_file_id
VIDEO_FILE_ID=$(python skills/chanjing-avatar/scripts/upload_file.py --service lip_sync_video --file ./my_video.mp4)

# 2. 创建 TTS 对口型任务(需先通过 list_common_audio 获取 audio_man_id)
TASK_ID=$(python skills/chanjing-avatar/scripts/create_task.py \
  --video-file-id "$VIDEO_FILE_ID" \
  --text "君不见黄河之水天上来" \
  --audio-man-id "C-f2429d07554749839849497589199916")

# 3. 轮询直到完成,得到视频下载链接
python skills/chanjing-avatar/scripts/poll_task.py --id "$TASK_ID"

音频驱动时:先上传音频得到 audio_file_id,再 create_task.py --video-file-id <id> --audio-file-id <audio_file_id>

Response Status Code Description

CodeDescription
0Response successful
10400AccessToken verification failed
40000Parameter error
40001Exceeds RPM/QPS limit
50000System internal error

适合场景

01

用户想查找某类 Agent Skill 时

02

需要根据任务场景推荐可安装能力包时

03

需要对比不同来源的安装命令和来源信息时

能力概览

能力 1

按任务关键词查找相关 Skills

能力 2

展示可复制的安装命令

能力 3

保留来源站点、仓库和原始说明,方便继续核验

能力 4

展示第三方安全扫描或审计结果

安装后应在对应宿主中按原始 README 的触发条件使用;具体调用方式请以来源页面和 README 为准。

平台分布

Codex

34.09%
按下载量换算174

Claude

29.31%
按下载量换算149

Cursor

19.15%
按下载量换算98

Gemini CLI

9.33%
按下载量换算48

安全审计

Gen Agent Trust Hub

通过

Socket

通过

Snyk

未通过

权限和风险

需要联网

该 Skill 可能需要联网访问来源站点、仓库或外部 API;具体网络访问范围需要结合源码和 README 复核。

安装前确认

本站仅展示第三方公开信息,不托管安装包,不提供自动安装或运行环境。安装前应自行审查源码、依赖和命令行为。来源安全扫描存在 warning/failed 结果,不能写成本站确认安全。当前只有一个来源,正式发布前建议补源仓库或其他目录站核验。

来源信息

继续浏览同类 Skills