# 项目文件

项目里你能打开的每个文件、它里面放什么，以及哪条命令写入它。

文件夹见[项目目录](/zh-cn/docs/cli/project-directory)。在文件表里，**由谁写入** 一列写明是谁创建或修改这个文件。

## 文件

| 文件 | 内容 | 由谁写入 |
|---|---|---|
| `series.json` | 项目的标题、设置和列表。见下文 | `minicut new`、`minicut save`、你的 Agent 和应用 |
| `source/sources.json` | 故事来自哪些素材，一开始是空的 | `minicut new` |
| `research.md` | 研究出来的创意 | 你的 Agent，在剧本环节 |
| `script.md` | 故事和世界观文档 | 你的 Agent，在剧本环节 |
| `episodes/epNN/script.md` | 这一集的剧本 | 你的 Agent，在剧本环节 |
| `episodes/epNN/shots.md` | [分镜表](/zh-cn/docs/cli/shot-sheet) | 你的 Agent，在分镜表环节 |
| `episodes/epNN/assets.md` | 资产清单和图片提示词 | 你的 Agent，在分镜表环节 |
| `episodes/epNN/prompts.md` | 视频提示词，每个镜头一节 | 你的 Agent，在分镜表环节 |
| `episodes/epNN/shots.checks.json`、`episodes/epNN/prompts.checks.json` | 旁边那个文件最近一次检查的结果 | `minicut check` |
| `episodes/epNN/loops.json` | 每个环节的轮、通过和停止记录 | `minicut loop` |
| `episodes/epNN/now.json` | 你的 Agent 正在写的镜头，保留 120 秒 | `minicut now` |
| `episodes/epNN/mock.sheet.jpg` | 为预览片环节做的、每个镜头一帧的图 | `minicut loop run mock` |
| `episodes/epNN/index.html` | 这一集的时间线 | `minicut new`、`minicut timeline` 和剪辑器 |
| `episodes/epNN/minicut.json` | 这一集的剪辑器设置 | `minicut new` |
| `episodes/epNN/clips/cNN/prompt.md` | 这个镜头的视频提示词 | 你的 Agent |
| `episodes/epNN/clips/cNN/clip.json` | 镜头用的模型、设置和选中的版本。见下文 | 你的 Agent、`minicut save take` 和 `minicut asset pick` |
| `episodes/epNN/clips/cNN/tNN.mp4` | 镜头的一个版本。可以是 `.mp4`、`.mov`、`.webm`、`.wav`、`.mp3` 或 `.m4a`。版本从不重命名，也不覆盖 | `minicut save take` 和完成的视频任务 |
| `episodes/epNN/clips/cNN/tNN.json` | 这个版本的记录。见下文 | `minicut save take` 和完成的视频任务 |
| `episodes/epNN/clips/cNN/tNN.checks.json` | 这个版本的检查结果 | `minicut check take` 和视频环节 |
| `episodes/epNN/clips/cNN/jobs/` | 这个镜头每个未完成、失败或已停止的任务各一个文件 | `minicut gen` |

## series.json

| 字段 | 内容 |
|---|---|
| `id` | 项目 id，和文件夹名一样 |
| `uid` | 一个唯一的 id，把项目的任务和这个文件夹对应起来 |
| `title` | 人看的标题 |
| `language` | 项目的语言，例如 `zh` 或 `en` |
| `format` | 单个作品、系列中的一集，或全剧 |
| `entry` | 你带进来的东西：`idea`、`ip`、`story`、`script` 或 `shots` |
| `aspect_ratio` | 视频的画面比例 |
| `resolution` | 视频的尺寸 |
| `fps` | 帧率，一开始是 30 |
| `episodes_planned` | 你计划做几集 |
| `episodes` | 项目各集的 id |
| `library` | 项目用到的角色、场景、道具和风格的 id |
| `models` | 你为每一类选的模型，例如 `"models": {"video": "NAME"}` |
| `loops` | 每个环节的上限，例如 `"loops": {"mock": 4, "takes": 5}`。见[步骤和环节](/zh-cn/docs/cli/steps-and-loops) |

## clip.json

| 字段 | 内容 |
|---|---|
| `id` | 镜头 id，例如 `c01` |
| `model` | 这个镜头的模型。总会写入，值是全剧的默认模型 |
| `params` | 随镜头一起发送的设置，例如画面比例和秒数 |
| `bindings` | 镜头的参考图片 |
| `prompt` | 提示词文件的名字，`prompt.md` |
| `pick` | 镜头用的版本 |
| `shots` | 版本里要保留的部分，用 `from` 和 `to` 两个秒数表示 |
| `fit` | `"take"` 把镜头剪短到和版本一样长。`"freeze"` 保留静帧 |

## tNN.json

| 字段 | 内容 |
|---|---|
| `id` | 版本 id，例如 `t01` |
| `state` | 版本的状态，例如 `done` |
| `file` | 版本的文件名 |
| `kind` | `model`、`code` 或 `placeholder` |
| `model` | 做出这个版本的模型 |
| `settings_sent` | 模型收到的设置 |
| `prompt_text` | 模型收到的提示词 |
| `sha256` | 文件的校验和 |
| `link` | `hardlink` 或 `copy`：镜头文件夹是怎么得到这个文件的 |
| `library` | 同一个文件在你的素材库里的路径 |
| `created` | 记录是什么时候建的 |

## 另见

[项目目录](/zh-cn/docs/cli/project-directory) [分镜表](/zh-cn/docs/cli/shot-sheet) [minicut save](/zh-cn/docs/cli/projects#minicut-save)
