# Book Publish

> Phase 5: Publishing. Convert to EPUB/PDF/MOBI/TXT/Markdown, cover design, metadata, title candidates, KDP checklist, marketing plan.

- Skill: `thedixitjain/book-publish` (Agent Skill)
- Install (CLI): `npx skillmds add thedixitjain/book-publish`
- Raw SKILL.md: https://api.skillmd.com/api/skills/thedixitjain/book-publish/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Marketing & Growth
- Author: thedixitjain (https://skillmd.com/u/thedixitjain)
- Updated: 2026-09-09
- Page: https://skillmd.com/skills/thedixitjain/book-publish

---



# Phase 5: Publishing

**Formats** (requires `pandoc`, optional `calibre` for MOBI):
- **EPUB**: `pandoc drafts/ch*.md -o publish/book.epub --toc --toc-depth=2 --metadata-file=publish/metadata.yaml --css=publish/style.css`
- **PDF**: `pandoc` with 6x9in geometry, mirror margins, CJK font support
- **MOBI**: `ebook-convert book.epub book.mobi` (optional, Kindle supports EPUB)
- **TXT**: `pandoc --to plain --wrap=none`
- **MD**: `pandoc --to markdown --standalone`

**Metadata**: `publish/metadata.yaml` (title, subtitle, author, lang, keywords, description).

**Titles**: 22+ candidates across 5 categories (descriptive, emotional, question, metaphor, provocative).

**Agents**: `cover-designer` → concepts + image prompts. `illustrator` → interior illustration plan (see `/book-illustrate`). `marketing-expert` → personas, channels, 12-week calendar, launch checklist.

Output: `publish/` directory with all formats + metadata + title-candidates.md + cover/concepts.md + illustrations/plan.md + marketing-plan.md.

Gate: EPUB + PDF generated, metadata complete, 22+ titles, cover concepts, marketing plan.

## Pre-processing

**Poetry line breaks**: If genre is `poetry` or `poetry-essay`, before running pandoc, prepend two trailing spaces (`  `) to each non-empty line within poem sections (content under `##` headings, before `###` subheadings). This forces pandoc to preserve line breaks instead of merging into paragraphs.

**Cover image guard**: Before running pandoc, check if the cover image file referenced in `metadata.yaml` (typically `cover.png`) actually exists. If missing, temporarily remove the `cover-image` field from metadata, run pandoc, then restore the field. This prevents pandoc from failing when cover hasn't been generated yet.


## Post-Completion

Update the project dashboard status:

```bash
node {PLUGIN_ROOT}/velith.mjs scan [project-dir] --plugin-root={PLUGIN_ROOT}
```

---

**Source:** [`hashgraph-online/awesome-codex-plugins`](https://github.com/hashgraph-online/awesome-codex-plugins) → `plugins/epicsagas/Velith/skills/book-publish/SKILL.md`

