$npx -y skills add chanjing-ai/chan-skills --skill chanjing-ai-creationChanjing AI creation Open API client: submit image/video tasks, poll task status, list and get tasks, and optionally download outputs when the user runs download_result.py. Reads and writes local credentials.json; calls open-api.chanjing.cc.
| 1 | # Chanjing AI Creation |
| 2 | |
| 3 | ## 功能说明 |
| 4 | |
| 5 | 调用蝉镜 **AI 创作** Open API:**提交任务**、**轮询状态**、**列表与单条查询**;仅在用户明确要求时用 `download_result.py` **可选下载**输出。需**读写**本地 `credentials.json` 并访问 Open API。跨模型文生图/视频等由 `submit_task.py` 参数与透传体决定。本 skill 脚本**不**依赖 ffmpeg/ffprobe。 |
| 6 | |
| 7 | ## 运行依赖 |
| 8 | |
| 9 | - **python3** 与同仓库 `scripts/*.py` |
| 10 | - **无** ffmpeg/ffprobe 门控 |
| 11 | |
| 12 | ## 环境变量与机器可读声明 |
| 13 | |
| 14 | - 环境变量键名与说明:**`manifest.yaml`**(`environment` 段)及本文 |
| 15 | - 变量、凭据、合规 **`permissions`**、**`clientPermissions`、`agentPolicy`**:**`manifest.yaml`** |
| 16 | |
| 17 | ## 使用命令 |
| 18 | |
| 19 | - **ClawHub**(slug 以注册表为准):`clawhub run chanjing-ai-creation` |
| 20 | - **本仓库示例**:`python skills/chanjing-ai-creation/scripts/submit_task.py …`(见正文 **Standard Workflow**) |
| 21 | |
| 22 | --- |
| 23 | |
| 24 | ## 登记与审稿(单一事实来源) |
| 25 | |
| 26 | 主凭据、可选 env、下载信任边界等:**以 `manifest.yaml` 为准**。本篇从 **When to Use** 起写业务能力。 |
| 27 | |
| 28 | ## When to Use This Skill |
| 29 | |
| 30 | 当用户要做这些事时使用本 Skill: |
| 31 | |
| 32 | * **提交**图片或视频 AI 创作任务(`submit_task.py`) |
| 33 | * **列表 / 单条查询**任务(`list_tasks.py`、`get_task.py`) |
| 34 | * **轮询**异步结果直至完成(`poll_task.py`) |
| 35 | * 仅在用户明确要求时**下载**输出(`download_result.py`) |
| 36 | |
| 37 | 上述流程依赖读写本地 `credentials.json` 并调用 `open-api.chanjing.cc`。 |
| 38 | |
| 39 | 如果需求更接近“文生数字人”,优先使用 `chanjing-text-to-digital-person`。 |
| 40 | 如果需求更接近“已有数字人视频合成”,优先使用 `chanjing-video-compose`。 |
| 41 | |
| 42 | ## Preconditions |
| 43 | |
| 44 | 执行本 Skill 前,必须先通过 `chanjing-credentials-guard` 完成 AK/SK 与 Token 校验。 |
| 45 | |
| 46 | 本 Skill 与 guard 共用: |
| 47 | |
| 48 | * `~/.chanjing/credentials.json` |
| 49 | * `https://open-api.chanjing.cc` |
| 50 | |
| 51 | 无凭证时,脚本会自动打开蝉镜登录页,并提示配置命令。 |
| 52 | |
| 53 | ### 审阅与安全(凭据) |
| 54 | |
| 55 | 与 **Purpose / Credentials / Persistence**、**`download_result.py`** 信任边界相关的逐项说明见 **`manifest.yaml`**。 |
| 56 | |
| 57 | **运行时范围**:本 Skill 的说明与脚本仅服务于已声明用途——读取本地 **`credentials.json`**、调用蝉镜 **Open API** 端点;**不**在轮询或查询成功时自动落盘生成物,**仅**在用户显式执行 **`download_result.py`** 时下载资源。 |
| 58 | |
| 59 | **`_auth.py` 与仓库布局**:鉴权辅助可能打开系统浏览器,或按相对路径调用同仓库下的 **`chanjing-credentials-guard`** 脚本(例如 `open_login_page.py`)。这假设当前工作区为 **chan-skills 式多 Skill 目录结构**,或已单独安装并具备等效路径的 guard skill;否则将回退为仅打开登录页 URL。 |
| 60 | |
| 61 | **敏感数据与持久化**:预期仅处理 **`credentials.json`** 中的 `app_id`、`secret_key`、`access_token`(及与 token 生命周期相关的字段,见 `manifest.yaml`)。将 **`access_token` 写入磁盘** 是有意设计且已文档化,对 API 客户端而言通常可接受;但在**多人共用主机**、**全盘备份/同步到不可信存储**等场景下,磁盘上的 token 会**扩大泄露面**,需按环境自行评估。 |
| 62 | |
| 63 | ## Standard Workflow |
| 64 | |
| 65 | AI 创作的主接口是统一提交器: |
| 66 | |
| 67 | 1. 调用 `submit_task.py` 提交图片或视频生成任务,得到 `unique_id` |
| 68 | 2. 调用 `poll_task.py` 轮询直到成功,得到 `output_url` |
| 69 | 3. 如需回看任务参数或错误原因,调用 `get_task.py` |
| 70 | 4. 如需看历史记录,调用 `list_tasks.py` |
| 71 | 5. 只有在用户明确要求保存到本地时,才调用 `download_result.py` |
| 72 | |
| 73 | 这个 skill 默认做成“通用任务提交器”: |
| 74 | |
| 75 | * 对常见图片/视频模型,优先使用脚本提供的通用参数 |
| 76 | * 对特殊模型参数,使用 `--body-file` 或 `--body-json` 透传完整请求体 |
| 77 | |
| 78 | ## Covered APIs |
| 79 | |
| 80 | 本 Skill 当前覆盖: |
| 81 | |
| 82 | * `POST /open/v1/ai_creation/task/submit` |
| 83 | * `POST /open/v1/ai_creation/task/page` |
| 84 | * `GET /open/v1/ai_creation/task` |
| 85 | |
| 86 | ## Scripts |
| 87 | |
| 88 | 脚本目录: |
| 89 | |
| 90 | * `skills/chanjing-ai-creation/scripts/` |
| 91 | |
| 92 | | 脚本 | 说明 | |
| 93 | |------|------| |
| 94 | | `_auth.py` | 读写 `credentials.json`、获取或刷新 `access_token` | |
| 95 | | `submit_task.py` | 提交 AI 创作任务,输出 `unique_id` | |
| 96 | | `get_task.py` | 获取单个任务详情 | |
| 97 | | `list_tasks.py` | 列出图片或视频任务 | |
| 98 | | `poll_task.py` | 轮询任务直到完成,默认输出第一个结果地址 | |
| 99 | | `download_result.py` | 下载图片或视频到 `outputs/ai-creation/` | |
| 100 | |
| 101 | ## Usage Examples |
| 102 | |
| 103 | 示例 1:Seedream 3.0 文生图 |
| 104 | |
| 105 | ```bash |
| 106 | TASK_ID=$(python3 skills/chanjing-ai-creation/scripts/submit_task.py \ |
| 107 | --creation-type 3 \ |
| 108 | --model-code "doubao-seedream-3.0-t2i" \ |
| 109 | --prompt "赛博朋克城市夜景,霓虹灯,雨夜,电影镜头" \ |
| 110 | --aspect-ratio "16:9" \ |
| 111 | --clarity 2048 \ |
| 112 | --number-of-images 1) |
| 113 | |
| 114 | python3 skills/chanjing-ai-creation/scripts/poll_task.py --unique-id "$TASK_ID" |
| 115 | ``` |
| 116 | |
| 117 | 示例 2:腾讯 Kling v2.1 Master 图生视频 |
| 118 | |
| 119 | ```bash |
| 120 | TASK_ID=$(python3 skills/chanjing-ai-creation/scripts/submit_task.py \ |
| 121 | --creation-type 4 \ |
| 122 | --model-code "tx_kling-v2-1-master" \ |
| 123 | --ref-img-url "https://res.chanjing.cc/chanjing/res/aigc_creation/photo/start.jpg" \ |
| 124 | --ref-img-url "https://res.chanjing.cc/chanjing/res/aigc_creation/photo/end.jpg" \ |
| 125 | --prompt "角色从静止到转身,镜头平滑移动,叙事感强" \ |
| 126 | --aspect-ratio "9:16" \ |
| 127 | --clarity 1080 \ |
| 128 | --quality-mode pro \ |
| 129 | --video-duration 5) |
| 130 | |
| 131 | python3 skills/chanjing-ai-creation/scripts/poll_task.py --unique-id "$TASK_ID" |
| 132 | ``` |
| 133 | |
| 134 | 示例 3:直接透传完整 JSON |
| 135 | |
| 136 | ```bash |
| 137 | python3 skills/chanjing-ai-creation/scripts/submit_task.py \ |
| 138 | --body-file ./payload.json |
| 139 | ``` |
| 140 | |
| 141 | ## Download Rule |
| 142 | |
| 143 | 下载是显式动作,不是默认动作: |
| 144 | |
| 145 | * `poll_task.py` 成功后应先返回远端 `output_url` |
| 146 | * 不要自动下载结果文件 |
| 147 | * 只有当用户明确表达“下载到本地”“保存到 outputs”“帮我落盘”时,才执行 `download_result.py` |
| 148 | |
| 149 | ## Output Convention |
| 150 | |
| 151 | 默认本地输出目录: |
| 152 | |
| 153 | * `outputs/ai-creation/` |
| 154 | |
| 155 | ## Additional Resources |
| 156 | |
| 157 | 更多接口细节见: |
| 158 | |
| 159 | * `skills/chanjing-ai-creation/reference.md` |
| 160 | * `skills/chanjing-ai-creation/examples.md` |