KDPへ渡すEPUBのMetadataは、本文を書き終えた後の飾りではありません。少なくとも言語、発行日、表紙を別欄で確定し、生成後のOPFとmanifestから同じ値を読み戻す必要があります。入力画面に文字が入っていることではなく、配布するファイルへ収録されたことを合格条件にします。
この記事では kdp metadata の入力漏れを、書誌カード一枚で防ぎます。検証用の三章、本文画像二枚、表紙一枚を使い、Rune Studioの命令へ渡した値と、EPUB内部で確認できた値を対応させます。KDPによる受理や全リーダーの表示は別の確認です。
言語・発行日・表紙を三つの独立欄にする
書誌カードの一行目は言語です。「日本語の本だから日本語だろう」と推測せず、EPUBのmetadataへ ja が入ったかを見ます。二行目は発行日で、作業日やファイル更新日と混同しません。三行目は表紙で、本文最初の画像ではなくcover-imageとして指定する資産を一つ決めます。
検証ではタイトルを STUDIO-284 Verified Title、言語をja、出版社を Publisher-284 として固定しました。発行日の入力値は 2026-10-04、表紙は cover.png です。これは記事用の合成標本であり、実際の本の書誌ではありません。値を具体的に置く目的は、入力と出力を照合できるようにすることです。
本文画像は figure-1.png と figure-2.png です。表紙と同じPNG形式でも役割は違います。本文中の画像参照を表紙に流用したり、cover-imageがないまま本文先頭の画像を表紙だと思ったりすると、リーダーや販売先によって扱いが変わります。
書誌カードには「入力値」と「EPUB内の確認値」の二列を作ります。未確認の欄を空白のまま残せば、どこで作業が止まっているか分かります。三欄をまとめて「設定済み」と書くと、発行日だけ抜けたときに気づけません。
CLIの入力をカードの各欄へ対応させる
シリーズ情報には rune epub series set --workspace /private/tmp/rune-g2c3-studio-284-bryrc6dq --title "STUDIO-284 Verified Title" --author "Synthetic Author" --publisher Publisher-284 --file-name studio-284 --writing-mode horizontal --language ja --json を実行しました。終了コードは0です。この命令が言語、タイトル、出版社、横書き設定の入力証拠になります。
巻情報は rune epub volume set --workspace /private/tmp/rune-g2c3-studio-284-bryrc6dq --number 0 --version 3.1 --publish-date 2026-10-04 --json です。ここで指定した日は、固定時刻付きの生成metadataへ反映されます。KDPの販売開始日を自動決定する命令ではありません。
表紙は rune epub cover set --workspace /private/tmp/rune-g2c3-studio-284-bryrc6dq --number 0 --path /private/tmp/rune-g2c3-studio-284-bryrc6dq/cover.png --json で巻0へ結び付けました。その後、三章をselectし、plan、exportへ進めています。cover setの成功応答だけでは、生成EPUBへ収録されたかはまだ分かりません。
失敗したときは書誌カードの該当欄へ戻ります。言語が違うならseries set、日付が違うならvolume set、表紙がないならcover setです。すべてを最初からやり直す必要はありません。ただし、修正後は同じEPUBを上書きせず、新しい生成物として検査し直します。
OPF・manifest・spineから出力を読み戻す
生成物は studio-284-260903.120000.epub、SHA-256は e9d7daefe8b17c8cc0666df15f97ec75aebd0af2dbe057ebb6e93fda7460ab5b です。rune inspect epub の結果は valid=true、三つのnavリンクと三つのNCX項目があり、欠落資源の報告はありませんでした。
OPFからはタイトル STUDIO-284 Verified Title、言語ja、出版社 Publisher-284、固定生成日時 2026-09-03T12:00:00+09:00 を取得しました。検証記録は入力した発行日 2026-10-04 も別欄で保持しています。入力値と生成metadataの日時表現を混同せず、どちらを読んだかを明記します。
manifestでは Images/cover.png に properties="cover-image" が付きました。本文画像は Images/p001_01.png など別IDで収録され、合計の画像参照は7件です。表紙一件と、三章が二枚ずつ参照する本文画像六件という内訳です。表紙と本文画像が別役割であることをパッケージ内部から確認できます。
spineはcover、title、nav、三章、colophonの7項目です。古い下書きで想定した「spine=6、画像1」という要約ではなく、cycle5では永続化したパッケージを正本にして具体値を書いています。証拠を再取得した結果と合わない旧要約は、本文の事実として使いません。
署名できない欄を残したままKDPへ渡さない
合格する書誌カードは、言語の入力とOPF、発行日の入力記録、表紙パスとcover-imageを一対一で示します。valid=trueは必要ですが、それだけでは三欄の意味までは保証しません。担当者が各欄の入力と出力を指させることが、引き渡しの条件です。
今回のCLI検査は画像の著作権、KDP受理、端末ごとの表示一致を判定していません。表紙の解像度や内容も合成標本では評価できません。実書籍では権利、サイズ、販売先要件を公式資料で別に確認してください。
Rune Studioはシリーズ情報、巻情報、表紙、章選択、EPUB生成を同じワークスペースで扱う候補です。しかし書誌の意味を決めるのは著者・編集者です。言語・日付・表紙を扱うMac版の範囲はRune Studioの商品ページで照合できます。まず三欄だけのカードを作り、空欄がなくなった生成物のSHAを引き渡し記録へ残してください。

