---
title: "手動リリース登録 運用ドキュメント"
---

## 概要

MusicBrainz に登録されていないリリース（2023年以降のライブアルバム等）を
`data/inputs/manual-releases.json` に手動で追加・管理するための手順書。

`sync-discography` で取得できる MusicBrainz 登録済みリリースとは別ファイルで管理し、
アプリ起動時にマージして表示する（#612 で実装予定）。

---

## ID 命名規則

手動登録リリースの `id` は以下の形式で付与する。

```
manual-<slug>
```

| 要素 | 説明 |
| --- | --- |
| `manual-` | 手動登録であることを示すプレフィックス（必須） |
| `<slug>` | リリースタイトルを kebab-case に変換した文字列 |

### slug の変換ルール

1. 日本語タイトルは **ローマ字または英語に意訳** する（例: 「コンサートツアー」→ `concert-tour`）
2. スペース・記号は `-`（ハイフン）に置換する
3. 英数字は小文字に統一する
4. 年度・開催地などの識別情報は末尾に付加する

### 例

| リリースタイトル | `id` |
| --- | --- |
| Morning Musume. Concert Tour 2023 Autumn | `manual-concert-tour-2023-autumn` |
| モーニング娘。'23 コンサートツアー秋 | `manual-concert-tour-23-autumn` |
| Hello! Project 2024 Winter Kanshasai | `manual-hp-2024-winter-kanshasai` |

---

## JSON テンプレート

### ファイル構造

```json
{
  "releases": [
    {
      "id": "manual-<slug>",
      "title": "リリースタイトル",
      "releaseDate": "YYYY-MM-DD",
      "format": "<format>",
      "source": "manual",
      "sourceUrl": "https://...",
      "tracks": [
        {
          "id": "manual-<slug>-1-1",
          "mbTrackId": "manual-<slug>-1-1",
          "trackNumber": 1,
          "discNumber": 1,
          "title": "曲タイトル",
          "length": 240000
        }
      ]
    }
  ]
}
```

### フィールド説明

| フィールド | 型 | 必須 | 説明 |
| --- | --- | --- | --- |
| `id` | `string` | ✅ | `manual-<slug>` 形式（命名規則を参照） |
| `title` | `string` | ✅ | リリースの正式タイトル |
| `releaseDate` | `string` | ✅ | リリース日（ISO 8601 形式: `YYYY-MM-DD`） |
| `format` | `ReleaseFormat` | ✅ | リリース種別（下記の選択肢を参照） |
| `source` | `string` | ✅ | 常に `"manual"` を指定する |
| `sourceUrl` | `string` | ✅ | 参照元 URL（公式サイト・Wikipedia 等）。不明な場合は `""` を指定する |
| `tracks` | `Track[]` | — | 収録曲一覧（任意。記入できる場合のみ設定する） |

### `format` の選択肢

| 値 | 用途 |
| --- | --- |
| `single` | シングル |
| `album` | アルバム（スタジオ録音） |
| `ep` | EP |
| `live` | ライブアルバム・コンサート映像 |
| `soundtrack` | サウンドトラック |
| `compilation` | コンピレーション |
| `other` | その他 |

ライブアルバム・コンサート映像は `"live"` を使用する。

### トラック ID の命名規則

手動登録リリースのトラック `id` / `mbTrackId` は以下の形式とする（MusicBrainz UUID の代替）。

```
manual-<slug>-<disc番号>-<track番号>
```

例: `manual-concert-tour-2023-autumn-1-1`（ディスク1・トラック1）

`id` と `mbTrackId` には同じ値を指定する。

---

## 記入手順

### 1. 情報収集

以下の情報を公式サイト・Wikipedia・CDジャーナル等で確認する。

- [ ] リリースタイトル（正式表記）
- [ ] リリース日
- [ ] 種別（シングル / アルバム / ライブアルバム 等）
- [ ] 収録曲一覧（曲名・曲順・ディスク番号）
- [ ] 曲の長さ（秒数・ミリ秒）：不明な場合は `length` を省略する

### 2. ID を決定する

命名規則に従い `manual-<slug>` 形式の ID を決定する。

既存の ID との重複がないことを確認する。

```bash
grep '"id"' data/inputs/manual-releases.json
```

### 3. エントリを追加する

`data/inputs/manual-releases.json` を編集し、`releases` 配列にエントリを追加する。

- トラック情報がない場合は `tracks` フィールドを省略してよい
- 収録曲が複数ディスクにわたる場合は `discNumber` を設定する

### 4. 動作確認

JSON の構文に誤りがないことを確認する。エディタの JSON バリデーション機能、または以下のコマンドを使用する。

```bash
bun -e "JSON.parse(require('fs').readFileSync('data/inputs/manual-releases.json', 'utf8')); console.log('OK')"
```

---

## 記入例

```json
{
  "releases": [
    {
      "id": "manual-concert-tour-2023-autumn",
      "title": "Morning Musume.'23 Concert Tour Autumn ～Nonstop!～",
      "releaseDate": "2024-03-27",
      "format": "live",
      "source": "manual",
      "sourceUrl": "https://www.up-front-works.jp/release/detail/EPBE-5632",
      "tracks": [
        {
          "id": "manual-concert-tour-2023-autumn-1-1",
          "mbTrackId": "manual-concert-tour-2023-autumn-1-1",
          "trackNumber": 1,
          "discNumber": 1,
          "title": "OVERTURE ~Nonstop!~",
          "length": 120000
        },
        {
          "id": "manual-concert-tour-2023-autumn-1-2",
          "mbTrackId": "manual-concert-tour-2023-autumn-1-2",
          "trackNumber": 2,
          "discNumber": 1,
          "title": "恋愛レボリューション21",
          "length": 246000
        }
      ]
    }
  ]
}
```

---

## カバーアートについて

`manual-` プレフィックスの手動登録リリースは MusicBrainz のリリースグループ MBID を持たないため、
`scripts/patch/fetch-release-images.ts`（Cover Art Archive 経由）によるカバーアート自動取得の対象外。

カバーアートを表示したい場合は、タイムラインの `events` テーブルの `imageUrl` フィールドに
直接画像 URL を登録すること（Vercel Blob にアップロード後、DB を手動更新する）。

---

## 関連ファイル

| ファイル | 説明 |
| --- | --- |
| `data/inputs/manual-releases.json` | 手動登録リリースデータ |
| Neon `releases` テーブル | MusicBrainz 同期リリースデータ（`lib/releases.ts` の `fetchReleasesFromDB()` 経由で参照） |
| `docs/design/common/data-design.md` | データ設計書 |
| `types/release.ts` | `Release` / `Track` / `ReleaseFormat` 型定義 |
| `docs/operations/discography-operations.md` | MusicBrainz 同期リリースのカバーアート取得手順 |
