# Dream To Video

> 当用户提供一段梦境文字素材、日记片段、或口述梦境内容，并希望生成视频时触发。触发词包括："梦到"、"梦见"、"做了个梦"、"梦境素材"、"帮我生成视频"、"转成视频"、"dream to video"。也适用于用户直接粘贴一段梦境描述并期望获得视频文件的场景。此技能会将文字转化为视频提示词，自动提交到即梦平台生成，并下载视频文件。

- Skill: `mediastormdev/dream-to-video` (Agent Skill, multi-file: 8 files)
- Install (CLI): `npx skillmds@latest add mediastormdev/dream-to-video`
- Raw SKILL.md: https://api.skillmd.com/api/skills/mediastormdev/dream-to-video/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Coding & Dev Tools
- License: MIT
- Author: mediastormDev (https://skillmd.com/u/mediastormdev)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/mediastormdev/dream-to-video

---


# 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. 技术底座中的 **【光影】** 需要根据具体场景替换，如"深夜人工光源与路灯的混合冷光"、"海滨强烈日光下的高反差"等。

