1实现原理 · 为什么它能做到
三子命令 CLI(generate / from-script / create-script):generate 是主流程——拿主角图 + 主题,自动生成分镜脚本再逐镜出视频。
python3 scripts/manga_drama.py generate
所谓「主角识别」实为文件名启发式:取图片文件名 stem 拼一句描述,并未做任何图像识别。
return f"图片中的主角(基于文件名: {filename})"
5 种分镜模板(introduction/action/emotion/interaction/ending),每种一段带占位符的 default_prompt,由 generate_scene_prompt 做 format 填充。
"default_prompt": "{character}站在画面中央,微笑看向镜头,背景是柔和的光晕,漫画风格,温馨氛围,{style}"
分镜脚本以 JSON 落盘(create_drama_script),也可读入用户编辑过的脚本(from-script),支持逐镜自定义 prompt。
with open(output_file, 'w', encoding='utf-8') as f:
逐分镜调用 seedance_video.generate_video_task,主角图读成 base64 data URI 注入每个分镜请求,以保角色一致性。
img_url = f"data:image/{mime_type};base64,{img_base64}"
凭证取自 ARK_API_KEY(require_env_key),调用火山方舟 Seedance 异步任务并轮询到完成。
require_env_key("ARK_API_KEY")
脚本显式关闭 TLS 证书校验(CERT_NONE),生成结果用 curl 子进程下载。
ssl_context.verify_mode = ssl.CERT_NONE
产物落到 ~/Desktop/drama_{title}/,每分镜一个 mp4;单分镜失败不中断整体(try/except 继续)。
├── scene_1_introduction.mp4 # 分镜1
可选 --send-feishu 参数被 CLI 接受并一路传递,但 bundle 展示的生成代码内未见飞书发送实现。
| `--send-feishu` | ❌ | 发送到飞书 |
2核心能力
3外部依赖
| 类型 | 依赖 |
|---|---|
| cli | python3(运行自带脚本) |
| cli | curl(下载生成视频) |
| api | 火山方舟 Seedance 视频生成 |
| package | 仓库共享模块 common/env_utils(load_env / require_env_key) |
4风险提醒 风险提醒:红色 · 谨慎使用
- 关闭 TLS 证书校验(CERT_NONE),存在中间人风险,属安全降级(判红档直接依据),建议自行修复为默认校验。
- 读取 ARK_API_KEY 并把用户主角图与提示词外发到火山方舟,素材与账号额度会出网。
- 宣称的「主角识别」实为文件名启发式,生成效果可能不符预期。
- --send-feishu 在展示的代码里看不到实现,可能无效或另有未展示依赖。
5第二遍独立确认
- [ok] 是否关闭 TLS 校验 — seedance_video.py 开头 ssl_context.check_hostname=False、ssl_context.verify_mode=ssl.CERT_NONE(注释「忽略SSL验证」),后续两处 urllib.request.urlopen 均带该 context;确为安全降级,判红档的直接依据。
- [discrepancy] 「主角识别」宣称是否名副其实 — SKILL.md 核心功能写「主角识别:分析提供的角色图片,提取角色特征」,但 seedance_video.analyze_image 只取图片文件名 stem 并返回「图片中的主角(基于文件名: xxx)」,未做任何图像识别——属能力夸大。
- [discrepancy] --send-feishu 是否有实现 — generate/from-script 均有 --send-feishu 参数并一路传递,但 bundle 展示的 seedance_video.generate_video_task 函数体内未见任何飞书发送逻辑,SKILL.md 也未给实现细节——疑似未完成或依赖未展示的外部步骤。
- [discrepancy] 声明依赖 seedance-video-generation 技能 — SKILL.md 写「需要依赖技能:seedance-video-generation」并引用 ../seedance-video-generation-1.0.3/SKILL.md,但实际自带 scripts/seedance_video.py 直连 API(注释「使用直接 API 调用(无需 SDK)」)——声明与实际实现不一致。
- [ok] 网络调用与凭证读取点 — urllib 两处(建任务、轮询)+ curl 一处(下载);BASE_URL 固定 ark.cn-beijing.volces.com/api/v3。require_env_key('ARK_API_KEY') 在 manga_drama.main 与 seedance_video.generate_video_task 中各出现一次。
- [ok] 写盘点 — 三处落点:create_drama_script 的 open(output_file,'w')、generate_drama 的 drama_dir.mkdir(parents=True, exist_ok=True)、download_video 的 curl -o;无删除操作。
- [unlocatable] env_utils 依赖能否在 skill 内定位 — 两个脚本都把 ../../../common 插入 sys.path 后 import env_utils;该模块不在本 skill 目录内(bundle §1 仅列出 SKILL.md 与 2 个 py),bundle 内无法确认其存在与实现。
- [ok] quote 逐条复核 — 本报告全部 evidence.quote 以子串方式回 bundle 原文比对,无编造。
6结论
aa82a767e5ae8459…dd0bf35595