-
Notifications
You must be signed in to change notification settings - Fork 0
Review and Write
comicmeta uses a review-then-write pipeline:
discover → review-volumes → fetch-issues → review-issues → map
↓
write
The review phases produce state and reports. map creates the explicit
reviewed mapping consumed by write.
comicmeta discover --source /path/to/comics --report candidates.json
comicmeta review-volumes --report candidates.json --state volume-review.json \
--summary volume-review.md
comicmeta fetch-issues --selections volume-review.json --report issue-candidates.json
comicmeta review-issues --report issue-candidates.json --state issue-review.json \
--summary issue-review.md
comicmeta map --candidates issue-candidates.json --review issue-review.json \
--output reviewed-mapping.json --kavita-export comicmeta-kavita-export.json
comicmeta stage --source /path/to/comics --destination /tmp/comicmeta-staging \
--mapping reviewed-mapping.json --report stage-report.json
comicmeta validate --source /tmp/comicmeta-staging --production /path/to/comics \
--backup-dir /tmp/comicmeta-backups --mapping reviewed-mapping.json \
--copy-report stage-report.json --write-report write-report.json
comicmeta write --source /path/to/comics --mapping reviewed-mapping.json \
--expected-hashes stage-report.json --backup-dir /tmp/comicmeta-backups \
--report write-report.jsonThe interactive dashboard wraps the same workflow and keeps the intermediate steps visible, so normal users do not need to assemble the pipeline by hand.
For a quick preview without staging, use comicmeta write --dry-run with the
reviewed mapping. The full staged sequence above is the production safety path.
write:
- Accepts CBZ archives only.
- Requires reviewed mapping data.
- Creates verified backups before mutation.
- Refuses path traversal and unsafe destinations.
- Refuses to replace any existing root
ComicInfo.xml; replacement is a separate future operation requiring explicit approval. - Preserves successfully written files if a later file fails.
Discovery and issue fetching retain ComicVine issue/volume IDs, canonical URLs, titles, publisher, description/deck, release dates, cover image metadata, person credits, characters, teams, locations, story arcs, tags, and genres. Reviewed issue metadata maps to these ComicInfo fields:
| Reviewed data | ComicInfo.xml |
|---|---|
| Series, series sort, localized series |
Series, SeriesSort, LocalizedSeries
|
| Volume, number, count, year/month/day, format |
Volume, Number, Count, Year, Month, Day, Format
|
| Title, publisher, imprint |
Title, Publisher, Imprint
|
| Writer, penciller, inker, colorist, letterer, cover artist, editor |
Writer, Penciller, Inker, Colorist, Letterer, CoverArtist, Editor
|
| Genres, tags, characters, teams, locations |
Genre, Tags, Characters, Teams, Locations
|
| Story arcs and number |
StoryArc, StoryArcNumber
|
| Summary, notes, ComicVine URL |
Summary, Notes, Web
|
| Age rating |
AgeRating only when explicitly entered and reviewed |
Multi-value fields use the ComicInfo semicolon delimiter. HTML is stripped from ComicVine descriptions before review. XML escaping is handled by the archive writer.
The reviewed mapping preserves comicvine_issue_id, comicvine_volume_id, and
comicvine_url. comicmeta-kavita-export.json is a separate reviewed payload
for a future Kavita API synchronization step. Embedded ComicInfo metadata does
not populate Kavita's AniList, MAL, MangaBaka, Hardcover, Metron, or ComicVine
database IDs, and comicmeta fabricates none of those IDs.
After an approved production write, trigger a manual Kavita library rescan so Kavita reprocesses the changed embedded ComicInfo metadata.
Use comicmeta backups to inspect stored backups. Do not delete backups until
the resulting library has been checked in the reader application.