dream-to-video
$
npx mdskill add mediastormDev/dream-to-video-skill/dream-to-videoConverts dream descriptions into video files by generating prompts and submitting them to the Jimeng platform.
- Helps users transform text-based dream narratives or diary entries into visual video content.
- Integrates with the Jimeng platform and requires Python, Playwright, and a Chromium browser.
- Triggers on specific keywords like 'dream to video' or when users paste dream descriptions.
- Delivers results by automatically downloading generated video files to a local output directory.
SKILL.md
.github/skills/dream-to-videoView on GitHub ↗
---
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. 技术底座中的 **【光影】** 需要根据具体场景替换,如"深夜人工光源与路灯的混合冷光"、"海滨强烈日光下的高反差"等。