dream-to-video

SKILL.md

Dream-to-Video 梦境素材全自动视频生成

你负责将用户提供的梦境文字素材转化为视频提示词,并通过自动化工具链提交到即梦平台生成视频、下载到本地。用户只需要给你文字,你最终返回视频文件。


零、首次环境配置

当用户首次使用此 Skill 时,按以下流程自动配置环境。每一步执行后检查结果,全部通过后再告知用户可以开始使用。

路径约定

本文档中 {W} 代表本仓库的 clone 路径(即 dream_to_video/ 目录的父级)。

  • 项目目录:{W}/dream_to_video/
  • Skill 资源目录:{W}/skills/dream-to-video/

执行命令时,将 {W} 替换为实际路径。

自动执行(无需用户操作)

Step 0-0:克隆项目仓库 询问用户希望把项目放在哪个目录,然后执行:

cd "<用户指定的目录>" && git clone https://github.com/mediastormDev/dream-to-video-skill.git && cd dream-to-video-skill

clone 完成后的 dream-to-video-skill 目录即为 {W}。 如果用户说"就在当前目录",则在当前目录下 clone。

Step 0-1:检查 Python

python --version

要求 Python ≥ 3.10。如果未安装或版本过低,停下来提示用户

请先安装 Python 3.10 或更高版本:https://www.python.org/downloads/ 安装时勾选「Add Python to PATH」。

Step 0-2:安装 Python 依赖

cd "{W}/dream_to_video" && pip install -r requirements.txt

Step 0-3:安装 Playwright 浏览器

playwright install chromium

这会下载 Chromium 浏览器引擎(约 150MB),用于自动操控即梦平台。

Step 0-4:创建必要目录

cd "{W}/dream_to_video" && mkdir -p output data auth/browser_profile reference_images/室内 reference_images/室外

Step 0-5:部署参考图素材 仓库内置参考图位于 skills/dream-to-video/reference_images/,自动复制到项目运行目录:

cp -n "{W}/skills/dream-to-video/reference_images/室内/"*.jpg "{W}/dream_to_video/reference_images/室内/" 2>/dev/null; cp -n "{W}/skills/dream-to-video/reference_images/室外/"*.jpg "{W}/dream_to_video/reference_images/室外/" 2>/dev/null; echo "reference images deployed"

-n 不覆盖已存在的文件。如果用户有自己的公司环境照片,可以额外放入对应目录。

需要用户操作

Step 0-6:即梦平台登录

cd "{W}/dream_to_video" && python main.py login

执行后浏览器会打开即梦网站并显示登录二维码。提示用户:

请用手机抖音/即梦 App 扫描浏览器中的二维码完成登录。登录成功后程序会自动保存凭证,后续无需重复登录。

自检清单

所有步骤完成后,依次运行以下检查,全部 ✅ 才算配置成功:

# 检查 1:Python 版本
python --version
# 期望:Python 3.10+

# 检查 2:核心依赖
python -c "import playwright; import cv2; import numpy; print('deps OK')"
# 期望:输出 deps OK

# 检查 3:Playwright 浏览器
python -c "from playwright.sync_api import sync_playwright; b=sync_playwright().start(); br=b.chromium.launch(headless=True); br.close(); b.stop(); print('browser OK')"
# 期望:输出 browser OK

# 检查 4:目录结构
python -c "from pathlib import Path; dirs=['output','data','auth/browser_profile']; ok=all((Path('{W}/dream_to_video')/d).is_dir() for d in dirs); print('dirs OK' if ok else 'dirs MISSING')"
# 期望:输出 dirs OK

# 检查 5:登录状态
cd "{W}/dream_to_video" && python main.py verify
# 期望:显示登录有效

全部通过后,告知用户:

环境配置完成!你现在可以直接给我梦境素材,我会自动生成视频。

如果某项失败,针对性提示用户如何修复,不要继续后续步骤。


一、完整工作流程

用户给梦境素材 → 你按规则转化为 Prompt → 提交到队列 → Worker 自动生成+下载 → 通知用户

每次收到素材后,你必须按以下步骤执行:

步骤 1:转化 Prompt 按下方「二、视频提示词生成规则」将用户的梦境素材转化为视频提示词。直接输出完整 Prompt 文本。

  • 检查规则 9(容貌标识):是否有主角以外的可见人物?有则标注。
  • 检查规则 10(参考图前缀):是否有公司/工作场所物理环境描写?有则追加 参考图中环境; 前缀。

步骤 2:提交到队列

cd "{W}/dream_to_video" && python -u main.py add "你生成的完整Prompt"

这条命令瞬间完成,返回 task_id。

步骤 3:确保 Worker 在运行 检查是否有正在运行的 worker 后台任务。如果没有,启动一个:

cd "{W}/dream_to_video" && python -u main.py worker

以后台模式运行(run_in_background: true)。Worker 会自动:

  1. 检测 Prompt 是否带有 参考图中环境; 前缀
  2. 如果有 → 自动选参考图、切换「全能参考」模式、上传图片、在 ProseMirror 编辑器中通过 @图片1 引用参考图输入提示词
  3. 如果没有 → 直接在 textarea 中输入提示词
  4. 配置生成设置(Seedance 2.0 / 16:9 / 15s)→ 点击生成 → 监控进度 → 下载 → 后处理特效

步骤 4:告知用户 告诉用户已提交,视频生成完成后会自动下载到 {W}/dream_to_video/output/ 并有提示音通知。

查看状态

如果用户问进度,运行:

cd "{W}/dream_to_video" && python -u main.py status

或读取状态文件:{W}/dream_to_video/output/batch_state.json


二、视频提示词生成规则

顶层铁律

1. 绝对写实 (Hardcore Realism)

严禁任何动漫、二次元词汇。禁止使用"金色、唯美、史诗、霓虹灯、赛博朋克"等AI虚词。使用"自然光、侧逆光、35mm镜头、感光度噪点、景深控制"等专业摄影术语。

2. 超现实处理 (Uncanny Dream-Logic)

严禁将人变怪物。通过环境氛围、逻辑跳跃、以及微小但违背常理的细节(如:移动的山脉、自动出现的糕点、重复的机械动作)来体现梦境感。

3. 忠于原著 (Strict Adherence)

必须包含素材中的核心视觉要素(如:特定物品、特定场景、特定人物动作)。不要自己编造不存在的要素。

4. 电影感镜头 (Cinematic Camera)

不再局限于第一视角。可采用全景、特写、手持跟随或固定机位。强调镜头的物理动态(如:镜头抖动、焦点切换、缓慢推拉),保持画面的临场感。优先使用鱼眼镜头 (Fisheye Lens / Ultra-Wide 12mm),通过桶形畸变强化梦境的空间扭曲感和压迫感,尤其适用于近距离人物、走廊、室内等场景。

5. 非言语叙事 (Silent Visuals)

严禁台词描述。所有沟通通过眼神、手势、点头、物理指向或物品展示完成。

6. 主体去名化 (No Names)

统一使用 "主角" (Protagonist)。除全球名人外,人名替换为"同伴"、"司机"、"教徒"等。

7. 画面纯净 (No Text / No Overlay)

严禁画面中出现任何文字、字幕、Logo 或水印。所有信息必须通过纯视觉元素传达,不得依赖叠加文本。

8. 空间与时间 (Logic & Timing)

场景切换需有物理衔接(如走入阴影、开门)或使用 "硬切 (Hard Cut)"。总时长 15s 内,1-6 个分镜。

9. 人物容貌标识 (Character Ethnicity Tagging)

为画面中主角以外的其他可见人物标注容貌特征。不标注主角(梦境为第一人称视角,主角通常以 POV/手部/背影出镜,脸部不可见)。

地域检测:扫描用户素材中的地域/国家关键词:

用户素材关键词 Prompt 中为其他人物追加
美国、纽约、洛杉矶等 美国人
日本、东京、大阪等 日本人
韩国、首尔、釜山等 韩国人
印度、孟买、德里等 印度人
英国、伦敦等 英国人
泰国、曼谷等 泰国人
俄罗斯、莫斯科等 俄罗斯人
其他可识别的国家/地区 对应国籍的人
  • 默认值:素材中没有任何地域/国家词汇时,默认为其他可见人物追加 "东亚人容貌"
  • 写入方式:自然融入其他人物首次出场描写,如"一名东亚人容貌的同伴站在走廊尽头"、"数十名东亚人容貌的同事三五成群分散在场地各处"
  • 无其他人物时:整段梦境只有主角一人(如独自加班、独自在家),则不追加任何容貌标识

10. 公司环境参考图标识 (Company Environment Reference Prefix)

当用户素材描述了特定的公司/工作场所物理环境时,在 Prompt 最前面追加 "参考图中环境;" 前缀。Worker 会自动从 {W}/dream_to_video/reference_images/ 选取对应室内/室外参考图上传。

需要追加(语义指向场所/环境):

用户素材示例 判断 理由
"在公司的走廊里" ✅ 追加 "公司"指代物理场所
"公司门口停着一辆车" ✅ 追加 描述公司的物理入口
"到了几号楼的电梯间" ✅ 追加 描述具体建筑物
"几号棚的灯全亮着" ✅ 追加 描述具体工棚/摄影棚
"办公楼走廊的灯是绿色的" ✅ 追加 描述办公建筑环境
"写字楼大堂很空旷" ✅ 追加 描述写字楼环境
"工厂车间里全是灰尘" ✅ 追加 描述工厂环境
"公司年会在某个场地里,天花板漏水" ✅ 追加 场地+天花板=物理建筑环境
"在公司加班,办公室的灯突然灭了" ✅ 追加 办公室=物理空间

不需要追加(语义指向人/社交关系/非公司场景):

用户素材示例 判断 理由
"公司的同事找我借钱" ❌ 不追加 "公司的"修饰人,非场所
"和公司的人一起吃饭" ❌ 不追加 "公司的人"指社交关系
"公司老板突然出现" ❌ 不追加 指代人物身份
"在商场碰到公司的朋友" ❌ 不追加 场景是商场,非公司
"参与公司红包大战" ❌ 不追加 社交活动,无物理空间描写

判断核心:看"公司/楼/棚"是充当 地点状语(在哪里)还是 定语修饰人(谁的)。前者追加,后者不追加。当同一素材中既有公司环境描写又有公司相关人物时,以是否有具体的公司内部场景描写为准——只要有走廊、办公室、电梯间、车间、场地+天花板/墙壁等实际空间描述,就追加。

写入格式参考图中环境;这是一个[写实+情绪词]的梦境……


输出格式

Prompt 必须是一整段连续文本(不要分段、不要 Markdown),包含以下部分:

部分 1:风格总领句

这是一个 [写实+情绪词] 的梦境,镜头采用 [镜头方式]

部分 2:视觉叙事(Shot 1-6)

分镜 职能 描述要点
Shot 1 起手与定调 环境显现 + 自然光影 + 主角与环境的物理关系
Shot 2 主线与细节 核心事件 + 超现实细节 + 关键动作交互
Shot 3 转折或跳切 硬切或物理衔接 + 镜头机位变动 + 诡异反馈
Shot 4-6 高潮与退出 视觉冲击 + 画面边缘畸变 + 物理消散或硬止

部分 3:环境声效

环境背景音 + 关键物理撞击声 + 扭曲的机械声 / 环境音的物理回响

部分 4:技术风格底座(强制包含)

Arri Alexa拍摄,鱼眼镜头 (Fisheye 12mm),画面呈现明显桶形畸变。上下黑边 (2.39:1 Letterbox),强制宽银幕电影画幅。暗角 (Heavy Vignette),画面四角压暗向中心收拢。[根据场景填写光影描述],低饱和度冷色调。照片级写实。微弱的数字噪点和类似VHS的失真在画面边缘闪烁,图像感觉脆弱,仿佛随时会崩塌瓦解。梦核。阈限空间。


输出示例

这是一个写实荒诞惊恐的梦境,镜头采用鱼眼广角与手持跟随交替。Shot 1:鱼眼镜头,度假区开阔的海滨步道,阳光充足。步道一侧的岩石海岸上,密密麻麻铺满了数百只海狮,它们慵懒地堆叠在一起,湿润皮肤反光。游客们在步道上悠闲走动,与海狮群仅一道低矮栏杆之隔。画面平静得不自然。Shot 2:硬切。固定机位,超广角。海狮群突然躁动,前排的海狮抬起上半身张开嘴露出牙齿。下一秒,整个群体如潮水般同时涌过栏杆,数百只湿滑的躯体在混凝土步道上蠕动推进。游客们开始奔跑,桶形畸变将逃跑的人群拉伸变形。Shot 3:手持跟随,剧烈晃动。主角赤脚在粗糙水泥路面上奔跑,镜头低角度跟随脚部。一只蓝色洞洞鞋被踩踏的人群踢飞,翻滚着落入被海狮占领的区域。主角回头望去,密集的海狮已覆盖整条步道,湿润皮肤在阳光下反射出油腻光泽。Shot 4:鱼眼镜头。主角赤脚跟随人群涌向景区出口铁闸门,身后远处,海狮群的黑色剪影缓慢而整齐地推进,占据整个度假区。出口铁门在人群挤压下发出金属形变声响。画面四角暗角加重,逐渐收缩至全黑。海滨风声与海狮群体的低沉嘶吼混合成持续轰鸣,数百具湿滑身体在混凝土上拖行的摩擦声,人群奔跑的杂乱脚步与喘息,铁闸门被挤压的金属扭曲声。Arri Alexa拍摄,鱼眼镜头 (Fisheye 12mm),画面呈现明显桶形畸变。上下黑边 (2.39:1 Letterbox),强制宽银幕电影画幅。暗角 (Heavy Vignette),画面四角压暗向中心收拢。海滨强烈日光下的高反差,低饱和度冷色调。照片级写实。微弱的数字噪点和类似VHS的失真在画面边缘闪烁,图像感觉脆弱,仿佛随时会崩塌瓦解。梦核。阈限空间。


三、登录说明

Worker 启动时会自动检测即梦平台的登录状态:

  • 首次使用 / 登录过期:浏览器会自动打开即梦网站并显示二维码,同时播放提示音(三声长鸣+两声短鸣)提醒用户。用户用手机扫码登录后,程序自动检测并继续工作。
  • 已登录:直接开始工作,无需任何操作。
  • 超时:默认等待 10 分钟,超时后程序退出。

也可以手动预先登录:

cd "{W}/dream_to_video" && python main.py login

四、后处理特效(Elliptic Shatter)

Worker 下载完每个视频后,会自动执行 椭圆破碎边缘特效 后处理,最终输出两个文件:

文件 命名格式 说明
原版 task_XXX_YYYYMMDD_HHMMSS.mp4 即梦生成的原始视频
特效版 task_XXX_YYYYMMDD_HHMMSS_elliptic-shatter.mp4 叠加椭圆破碎边缘特效

特效说明

  • 视频中心保持清晰原始画面
  • 边缘呈现破碎玻璃质感(碎片散落、轻微旋转、色差折射)
  • 外边框暗黑背景 + 微弱碎片纹理
  • 整体效果:黑色纹理边框 + 椭圆观察窗 + 旋转碎裂粒子

特效脚本位于 effects/elliptic_shatter.py,使用 OpenCV + NumPy 处理,在子进程中运行不阻塞主流程。


五、关键注意事项

  1. Prompt 是一整段纯文本,不要有换行、Markdown 格式或分段。直接作为字符串传给 python main.py add
  2. Worker 只需启动一次,它会持续运行直到所有任务完成。多个素材可以连续 add,Worker 自动排队处理。
  3. 每个任务输出两个视频{W}/dream_to_video/output/:原版 + elliptic-shatter 特效版。
  4. 下载+特效处理完成后有提示音(3 声短促蜂鸣),用户听到声音即可去取视频。
  5. 如果用户一次给了多段素材,为每段分别生成独立的 Prompt 并分别 add。
  6. 技术底座中的 【光影】 需要根据具体场景替换,如"深夜人工光源与路灯的混合冷光"、"海滨强烈日光下的高反差"等。
Weekly Installs
39
GitHub Stars
113
First Seen
2 days ago
Installed on
codex39
opencode39
cursor33
gemini-cli33
github-copilot33
amp33