---
name: "jellyfin-nfo-builder"
description: "为剧集整理统一文件名、生成缺失的 Jellyfin .nfo 剧集元数据"
status: proposal
version: "v1"
date: "2026-07-01T23:52:24.406Z"
---

# Jellyfin NFO 剧集元数据补齐技能

为剧集目录整理统一文件名，并为缺失的集数生成标准的 Jellyfin `.nfo` 元数据文件。

## 适用场景

- 手动清理/重命名剧集文件后，部分集数的 `.nfo` 元数据缺失
- 从不同来源合并剧集（高质量版 + 补全集），需要统一格式
- 批量标准化剧集视频文件和元数据

## 前置条件

- 视频文件已整理到一个目录
- 有一条完整的剧集（有 `.nfo` 示例可参照格式）
- 了解剧集的总集数
- shell 工作目录为剧集所在目录

## 步骤

### 1. 检查现有状态

列出目录下所有视频文件和 `.nfo` 文件：

```bash
ls -lh *.mp4 *.nfo 2>/dev/null
```

确定：
- 总集数
- 已有哪些集的 `.nfo`
- 哪些集缺失 `.nfo`
- 文件名是否统一

### 2. 读取一个已有 `.nfo` 作为模板

```bash
cat "剧集名 第xx集.nfo"
```

标准 Jellyfin 剧集 nfo 格式：

```xml
<?xml version="1.0" encoding="UTF-8"?>
<episodedetails>
  <title>第N集</title>
  <season>1</season>
  <episode>N</episode>
  <plot>剧集名 第N集</plot>
  <runtime>233</runtime>
  <aired>2026-01-01</aired>
</episodedetails>
```

### 3. 生成缺失的 `.nfo`

```bash
cd /path/to/剧集目录
for i in 4 5 8 9 10 11; do
  cat > "剧集名 第${i}集.nfo" << EOF
<?xml version="1.0" encoding="UTF-8"?>
<episodedetails>
  <title>第${i}集</title>
  <season>1</season>
  <episode>${i}</episode>
  <plot>剧集名 第${i}集</plot>
  <runtime>233</runtime>
  <aired>2026-01-01</aired>
</episodedetails>
EOF
done
```

> `runtime`（时长秒数）和 `aired`（首播日期）可以参照已有文件填写，或设为默认值。

### 4. 检查结果

```bash
ls -lh *.mp4 *.nfo 2>/dev/null
```

确认每一集都有对应的视频文件和 `.nfo` 文件。

## 注意事项

- Jellyfin 依赖文件名排序，统一格式为 `剧集名 第XX集.mp4`（两位数字，按字母排序正确）
- `.nfo` 中的 `<episode>` 标签必须与集数一致
- 如果整个剧集目录还没有 `tvshow.nfo` 和 `season.nfo`，也需要一并创建
- 视频文件命名应与 `.nfo` 文件名完全一致（仅扩展名不同）