--- name: dream-to-video description: 当用户提供一段梦境文字素材、日记片段、或口述梦境内容,并希望生成视频时触发。触发词包括:"梦到"、"梦见"、"做了个梦"、"梦境素材"、"帮我生成视频"、"转成视频"、"dream to video"。也适用于用户直接粘贴一段梦境描述并期望获得视频文件的场景。此技能会将文字转化为视频提示词,自动提交到即梦平台生成,并下载视频文件。 license: MIT metadata: author: Moeyua version: "2.0.0" source: Manual --- # Dream-to-Video 梦境素材全自动视频生成 你负责将用户提供的梦境文字素材转化为视频提示词,并通过自动化工具链提交到即梦平台生成视频、下载到本地。用户只需要给你文字,你最终返回视频文件。 --- ## 零、首次环境配置 > 当用户首次使用此 Skill 时,按以下流程自动配置环境。每一步执行后检查结果,全部通过后再告知用户可以开始使用。 ### 路径约定 本文档中 **`{W}`** 代表本仓库的 clone 路径(即 `dream_to_video/` 目录的父级)。 - 项目目录:`{W}/dream_to_video/` - Skill 资源目录:`{W}/skills/dream-to-video/` 执行命令时,将 `{W}` 替换为实际路径。 ### 自动执行(无需用户操作) **Step 0-0:克隆项目仓库** 询问用户希望把项目放在哪个目录,然后执行: ```bash 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** ```bash python --version ``` 要求 Python ≥ 3.10。如果未安装或版本过低,**停下来提示用户**: > 请先安装 Python 3.10 或更高版本:https://www.python.org/downloads/ > 安装时勾选「Add Python to PATH」。 **Step 0-2:安装 Python 依赖** ```bash cd "{W}/dream_to_video" && pip install -r requirements.txt ``` **Step 0-3:安装 Playwright 浏览器** ```bash playwright install chromium ``` 这会下载 Chromium 浏览器引擎(约 150MB),用于自动操控即梦平台。 **Step 0-4:创建必要目录** ```bash 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/`,自动复制到项目运行目录: ```bash 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:即梦平台登录** ```bash cd "{W}/dream_to_video" && python main.py login ``` 执行后浏览器会打开即梦网站并显示登录二维码。提示用户: > 请用手机抖音/即梦 App 扫描浏览器中的二维码完成登录。登录成功后程序会自动保存凭证,后续无需重复登录。 ### 自检清单 所有步骤完成后,依次运行以下检查,全部 ✅ 才算配置成功: ```bash # 检查 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:提交到队列** ```bash cd "{W}/dream_to_video" && python -u main.py add "你生成的完整Prompt" ``` 这条命令瞬间完成,返回 task_id。 **步骤 3:确保 Worker 在运行** 检查是否有正在运行的 worker 后台任务。如果没有,启动一个: ```bash 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/` 并有提示音通知。 ### 查看状态 如果用户问进度,运行: ```bash 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 分钟,超时后程序退出。 也可以手动预先登录: ```bash 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. 技术底座中的 **【光影】** 需要根据具体场景替换,如"深夜人工光源与路灯的混合冷光"、"海滨强烈日光下的高反差"等。