Convert audio files (MP3, FLAC, etc.) to chaptered M4B audiobooks with Audible metadata.
All LAWs (#!/bin/bash, protected branches, stack prefs) enforced via ~/.claude/CLAUDE.md and hooks.
For any audiobook task (convert, audit, diff, troubleshoot), spawn the audiobook-guide agent. It knows the CLI, the flags, and the workflows. Don't manually walk directories or shell out to ffprobe -- use the tool.
- Run:
uv run audiobook-convert /path/to/audio/ - Audit:
uv run audiobook-audit /path/to/library/(tags, dupes, structure, sources, stale) - Diff:
uv run audiobook-audit /path/to/source --diff /path/to/target(find books in source missing from target) - Config:
.envin project root - Levels: simple | normal | ai | full (set via
PIPELINE_LEVELor--level) - Docs:
docs/install.mdfor full setup guide - Agent:
.claude/agents/audiobook-guide.mdfor interactive assistance
- Package manager:
uv(never pip) - Tests:
uv run pytest tests/ - Type check:
uv run mypy src/ - Format:
ruff format src/ tests/
- Config via pydantic-settings:
.env< env vars < CLI kwargs - AI uses
PIPELINE_LLM_*env vars (notOPENAI_*) to avoid collisions - Library structure:
Author/Book (Year)/Book.m4b .author-overridemarker file forces author folder for multi-author franchises- SQLite-backed state (pipeline.db) -- no JSON manifests