Book Capture Obsidian
Execute this workflow to add or migrate books into an Obsidian vault.
Workflow
- Ask the user for the destination Obsidian vault path if missing.
- Read
references/configuration.mdand set environment variables. - Choose one mode:
- Photo ingest with
scripts/ingest_photo.py - Goodreads CSV migration with
scripts/migrate_goodreads_csv.py
- Photo ingest with
- For Goodreads migration, prefer
--group-by-shelfand Google enrichment enabled. - Upsert notes with
scripts/upsert_obsidian_note.py. - Refresh the dashboard with
scripts/generate_dashboard.py. - Run validation and security checks:
sh scripts/run_ci_local.shsh scripts/security_scan_no_pii.sh
Required References
references/configuration.mdfor runtime settings and portabilityreferences/data-contracts.mdfor normalized schema and output contractsreferences/migration-runbook.mdfor Goodreads import sequencereferences/troubleshooting.mdfor extraction and merge failures
Operating Rules
- Require explicit vault destination (
BOOK_CAPTURE_VAULT_PATHor--vault-path) before bulk writes. - Prefer barcode extraction first; use OCR as fallback.
- Keep filenames human-readable (
Title - Author (Publisher, Year)). - Keep
shelfas property and include tagbookin all notes. - Use shared compact series tags (for example
theexpanse,harrypotter) when volume metadata exists; avoid separate series hub notes. - Preserve user notes section during updates.
- Keep outputs deterministic and idempotent for repeated runs.
- Do not store secrets or personal identifiers in generated artifacts.
- Simplified frontmatter: keep only
title,author,publisher,year,isbn_10,isbn_13,cover,shelf,source,source_url,tags. Removepublished_date,genre,status,date_started,date_read,needs_review,goodreads_book_id.