コンテンツにスキップ
Documents for MorningStatusApp
Esc
移動開く⌘Jプレビュー
このページの内容

手動リリース登録 運用ドキュメント

概要

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 テンプレート

ファイル構造

{
  "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)

idmbTrackId には同じ値を指定する。


記入手順

1. 情報収集

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

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

2. ID を決定する

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

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

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

3. エントリを追加する

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

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

4. 動作確認

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

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

記入例

{
  "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.tsfetchReleasesFromDB() 経由で参照)
docs/design/common/data-design.md データ設計書
types/release.ts Release / Track / ReleaseFormat 型定義
docs/operations/discography-operations.md MusicBrainz 同期リリースのカバーアート取得手順

このページは役に立ちましたか?