1仕組みと動作原理
3つのサブコマンド CLI(generate / from-script / create-script):generate がメインワークフローで、主人公画像+テーマから絵コンテ脚本を自動生成し、各カットごとに動画を出力します。
python3 scripts/manga_drama.py generate
いわゆる「主人公認識」はファイル名に基づくヒューリスティックに過ぎず、画像ファイル名の stem を取得して1行の説明文を組み立てるだけで、画像認識は一切行っていません。
return f"图片中的主角(基于文件名: {filename})"
5種類の絵コンテテンプレート(introduction/action/emotion/interaction/ending)があり、それぞれプレースホルダー付きの default_prompt を持ち、generate_scene_prompt でフォーマットおよび値の補完を行います。
"default_prompt": "{character}站在画面中央,微笑看向镜头,背景是柔和的光晕,漫画风格,温馨氛围,{style}"
絵コンテ脚本は JSON としてディスクに保存され(create_drama_script)、ユーザーが編集した脚本を読み込むことも可能(from-script)で、カットごとのカスタムプロンプトに対応しています。
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)から取得され、Volcengine Ark Seedance の非同期タスクを呼び出して完了までポーリングします。
require_env_key("ARK_API_KEY")
スクリプトは TLS 証明書の検証を明示的に無効化(CERT_NONE)しており、生成結果は curl サブプロセスを使用してダウンロードされます。
ssl_context.verify_mode = ssl.CERT_NONE
成果物は ~/Desktop/drama_{title}/ に出力され、1カットにつき1つの mp4 が生成されます。単一カットが失敗しても全体は中断されません(try/except で継続)。
├── scene_1_introduction.mp4 # 分镜1
任意の --send-feishu パラメータは CLI で受け付けられそのまま渡されますが、バンドルに含まれる生成コード内に Feishu への送信実装は見当たりません。
| `--send-feishu` | ❌ | 发送到飞书 |
2コア機能
3外部依存関係
| Kind | Dependency / Endpoint |
|---|---|
| cli | python3(运行自带脚本) |
| cli | curl(下载生成视频) |
| api | 火山方舟 Seedance 视频生成 |
| package | 仓库共享模块 common/env_utils(load_env / require_env_key) |
4推奨統制措置と判定根拠
- SKILL.md / 脚本: 未公開またはリバースエンジニアリングされたプライベート API の呼び出し / クライアント識別の偽装
- SKILL.md / 脚本参数: 自動検知の回避、ホストサンドボックスの無効化、または SSL 証明書検証のスキップを含む
- scripts/: ローカルスクリプトまたはコマンドの実行: python3 scripts/manga_drama.py <generate|from-script|create-script>(SKILL.m
- 网络端点: 外部ネットワークアクセスの宣言: POST https://ark.cn-beijing.volces.com/api/v3/contents/generations/tasks(作成
- 本地工作目录: ファイルの読み書きと成果物の出力: 絵コンテ脚本 JSON(create_drama_script が output_file に書き込み)
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…