/project-note-json-to-epub
Convert structured project-note JSON manuscripts into validated EPUB and optional Kindle-clickable PDF files. Use when the user asks to turn project notes, book-system JSON, FIRE-indexed notes, Luhmann/Zettelkasten numbered chunks, table-of-contents cards, index cards,
$ npx -y skills add twhsi/skills --skill project-note-json-to-epub --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
- Fires itselfAuto-invocation. Claude auto-loads it when your prompt matches the work.Auto-invocation is when the right skill fires by itself at the right moment, driven by a FLOW.md router and a hook, instead of you invoking it by name. It is the difference between a skill being installed and a skill actually getting used.Read the full definition →
- You can call itInvoke it directly when you want it.
- Slash command
/project-note-json-to-epub
Context preview
The summary Claude sees to decide when to auto-load this skill.
Convert structured project-note JSON manuscripts into validated EPUB and optional Kindle-clickable PDF files. Use when the user asks to turn project notes, book-system JSON, FIRE-indexed notes, Luhmann/Zettelkasten numbered chunks, table-of-contents cards, index cards,
SKILL.md
project-note-json-to-epub.SKILL.mdname: project-note-json-to-epub
description: Convert structured project-note JSON manuscripts into validated EPUB and optional Kindle-clickable PDF files. Use when the user asks to turn project notes, book-system JSON, FIRE-indexed notes, Luhmann/Zettelkasten numbered chunks, table-of-contents cards, index cards, cross-linked project notes, or manuscript JSON into an EPUB/PDF with chapter directories, keyword index cards, weighted links, bidirectional backlinks, versioned filenames, chapter-splitting plans, and full link testing.
專案筆記Json變成Epub
Use this skill when a project-note JSON or folder-derived JSON manuscript needs to become an EPUB, or an EPUB plus a PDF review/distribution edition, especially when the user wants chapter directories, index cards, cross-links, keyword numbering, versioned check editions, Chinese character counts, chapter-splitting plans, Kindle-clickable PDF links, or full EPUB/PDF link verification.
Chinese trigger phrases include:
- `專案筆記Json變成Epub`
- `目錄索引卡交叉連結`
- `把這章做成EPUB`
- `章節拆書`
- `關鍵字索引卡`
- `雙向連結EPUB`
- `同時生成PDF`
- `Kindle可以點擊連結`
Core Workflow
1. Inspect the JSON schema before generating anything.
- Identify `title`, `sources`, `toc`, `chunks`, `index`, and validation fields if present.
- Confirm each chunk has a stable code, title, body or source text, EPUB page/anchor, and Chinese character count.
- If the JSON is missing fields, derive them deterministically and write the enriched JSON first.
2. Normalize the book identity.
- Use the user-provided book name exactly.
- For check editions, name versions as: `{書名} 檢查版 YYYY-MM-DD NN`.
- Use an ASCII-safe or underscore filename when needed: `{書名}_檢查版_YYYY-MM-DD_NN.epub`.
- Keep a simple `download.epub` copy for mobile sharing if the user needs an easy download link.
3. Build the table of contents from project-note numbers.
- Preserve Luhmann/Zettelkasten-style codes such as `1.1`, `3.3.c3b`, and `3.3.d.1`.
- Split into no more than five display levels: 部、章、節、項、目.
- Prefer original titles; generate compact titles only for unnamed chunks.
- Mark Chinese character counts at each level where possible.
- Treat the TOC as a directory card: every entry should preserve code, title, depth, page anchor, and future split-book key.
4. Build the keyword index before EPUB rendering.
- Each keyword must have a stable id: `K001`, `K002`, ...
- Sort by descending weight, then keyword for deterministic order.
- Remove keywords below the requested threshold. If unspecified, ask or use the current project threshold.
- Each keyword may link to at most 5 target pages/chunks.
- Each index link needs display text, target, anchor, chunk code, title, and weight.
- Treat every keyword entry as an index card with id, keyword, weight, chapter attributes, selected page links, and cross-link metadata.
5. Add bidirectional link data.
- Forward link: index keyword page number ->正文 chunk anchor.
- Backlink:正文 keyword marker -> index keyword anchor.
- Use the keyword id as backlink display text, such as `K001`.
- Store backlinks in JSON on the chunk, for example `keyword_backlinks`.
- Preserve cross-link attributes on each link: chapter key, section key, item key, selected page order, base weight, remote bonus, adjusted weight, and selection rank.
6. Prepare chapter splitting data.
- Add a `book_split_plan` to JSON when the project is likely to become multiple chapter books.
- Each split entry should include split key, title, first/last code, first/last page, chunk count, CJK count, and output filename hint.
- Keep this data orthogonal to the EPUB render so chapters can later be exported independently.
7. Render EPUB paths relative to the XHTML file that contains the link.
- From `Text/index.xhtml` to正文 parts, use `part2.xhtml#p099`, not `Text/part2.xhtml#p099`.
- From `Text/part*.xhtml` back to the index, use `index.xhtml#idx-k001`, not `../Text/index.xhtml#idx-k001`.
- Keep canonical JSON targets if useful, but convert hrefs correctly during XHTML rendering.
- Put the keyword index card at the end of the book spine as book back matter: directory/intro first,正文 chunks next, `index.xhtml` last. This matches normal human book structure where an index appears after the main text.
8. Generate a PDF companion when requested.
- Use the same enriched JSON, TOC, chunk anchors, keyword ids, and backlink data as the EPUB.
- Preserve the same human link model: directory/index entries jump to正文 anchors, and正文 keyword markers jump back to keyword index anchors.
- Use PDF internal destinations and link annotations, not external file URLs, so links remain clickable after sideloading to Kindle.
- Prefer visible blue linked text for PDF review copies because Kindle users need a clear tap target.
- Embed a CJK-capable font when generating Chinese PDFs. Avoid relying on a viewer's fallback fonts; black square glyphs are a build failure.
- Keep PDF anchors semantically aligned with EPUB anchors when possible: chunk `p099` in EPUB should map to PDF destination `p099`, and keyword `K001` should map to `idx-k001`.
- Treat PDF as a companion format; do not let PDF layout constraints mutate the canonical JSON or EPUB href rules.
9. Validate before delivery.
- Open the EPUB zip and parse every XHTML file as XML.
- Collect all `id` anchors and all `href` links.
- Resolve every href relative to its source XHTML path.
- Fail the build if any target file or anchor is missing.
- Count expected forward links from `index[].links`.
- Count expected backlinks from `chunks[].keyword_backlinks`.
- Confirm actual EPUB forward/backlink counts match expected counts.
- Recalculate `true_body_cjk_count` from正文 body/chunk text only, excluding TOC, index cards, navigation files, metadata, CSS, generated link labels, and markup.
- Report the true body count separately from total EPUB or generated XHTML text counts.
-
Read more
name: project-note-json-to-epub description: Convert structured project-note JSON manuscripts into validated EPUB and optional Kindle-clickable PDF files. Use when the user asks to turn project notes, book-system JSON, FIRE-indexed notes, Luhmann/Zettelkasten numbered chunks, table-of-contents cards, index cards, cross-linked project notes, or manuscript JSON into an EPUB/PDF with chapter directories, keyword index cards, weighted links, bidirectional backlinks, versioned filenames, chapter-splitting plans, and full link testing.
專案筆記Json變成Epub
Use this skill when a project-note JSON or folder-derived JSON manuscript needs to become an EPUB, or an EPUB plus a PDF review/distribution edition, especially when the user wants chapter directories, index cards, cross-links, keyword numbering, versioned check editions, Chinese character counts, chapter-splitting plans, Kindle-clickable PDF links, or full EPUB/PDF link verification.
Chinese trigger phrases include:
- `專案筆記Json變成Epub`
- `目錄索引卡交叉連結`
- `把這章做成EPUB`
- `章節拆書`
- `關鍵字索引卡`
- `雙向連結EPUB`
- `同時生成PDF`
- `Kindle可以點擊連結`
Core Workflow
1. Inspect the JSON schema before generating anything.
- Identify `title`, `sources`, `toc`, `chunks`, `index`, and validation fields if present.
- Confirm each chunk has a stable code, title, body or source text, EPUB page/anchor, and Chinese character count.
- If the JSON is missing fields, derive them deterministically and write the enriched JSON first.
2. Normalize the book identity.
- Use the user-provided book name exactly.
- For check editions, name versions as: `{書名} 檢查版 YYYY-MM-DD NN`.
- Use an ASCII-safe or underscore filename when needed: `{書名}_檢查版_YYYY-MM-DD_NN.epub`.
- Keep a simple `download.epub` copy for mobile sharing if the user needs an easy download link.
3. Build the table of contents from project-note numbers.
- Preserve Luhmann/Zettelkasten-style codes such as `1.1`, `3.3.c3b`, and `3.3.d.1`.
- Split into no more than five display levels: 部、章、節、項、目.
- Prefer original titles; generate compact titles only for unnamed chunks.
- Mark Chinese character counts at each level where possible.
- Treat the TOC as a directory card: every entry should preserve code, title, depth, page anchor, and future split-book key.
4. Build the keyword index before EPUB rendering.
- Each keyword must have a stable id: `K001`, `K002`, ...
- Sort by descending weight, then keyword for deterministic order.
- Remove keywords below the requested threshold. If unspecified, ask or use the current project threshold.
- Each keyword may link to at most 5 target pages/chunks.
- Each index link needs display text, target, anchor, chunk code, title, and weight.
- Treat every keyword entry as an index card with id, keyword, weight, chapter attributes, selected page links, and cross-link metadata.
5. Add bidirectional link data.
- Forward link: index keyword page number ->正文 chunk anchor.
- Backlink:正文 keyword marker -> index keyword anchor.
- Use the keyword id as backlink display text, such as `K001`.
- Store backlinks in JSON on the chunk, for example `keyword_backlinks`.
- Preserve cross-link attributes on each link: chapter key, section key, item key, selected page order, base weight, remote bonus, adjusted weight, and selection rank.
6. Prepare chapter splitting data.
- Add a `book_split_plan` to JSON when the project is likely to become multiple chapter books.
- Each split entry should include split key, title, first/last code, first/last page, chunk count, CJK count, and output filename hint.
- Keep this data orthogonal to the EPUB render so chapters can later be exported independently.
7. Render EPUB paths relative to the XHTML file that contains the link.
- From `Text/index.xhtml` to正文 parts, use `part2.xhtml#p099`, not `Text/part2.xhtml#p099`.
- From `Text/part*.xhtml` back to the index, use `index.xhtml#idx-k001`, not `../Text/index.xhtml#idx-k001`.
- Keep canonical JSON targets if useful, but convert hrefs correctly during XHTML rendering.
- Put the keyword index card at the end of the book spine as book back matter: directory/intro first,正文 chunks next, `index.xhtml` last. This matches normal human book structure where an index appears after the main text.
8. Generate a PDF companion when requested.
- Use the same enriched JSON, TOC, chunk anchors, keyword ids, and backlink data as the EPUB.
- Preserve the same human link model: directory/index entries jump to正文 anchors, and正文 keyword markers jump back to keyword index anchors.
- Use PDF internal destinations and link annotations, not external file URLs, so links remain clickable after sideloading to Kindle.
- Prefer visible blue linked text for PDF review copies because Kindle users need a clear tap target.
- Embed a CJK-capable font when generating Chinese PDFs. Avoid relying on a viewer's fallback fonts; black square glyphs are a build failure.
- Keep PDF anchors semantically aligned with EPUB anchors when possible: chunk `p099` in EPUB should map to PDF destination `p099`, and keyword `K001` should map to `idx-k001`.
- Treat PDF as a companion format; do not let PDF layout constraints mutate the canonical JSON or EPUB href rules.
9. Validate before delivery.
- Open the EPUB zip and parse every XHTML file as XML.
- Collect all `id` anchors and all `href` links.
- Resolve every href relative to its source XHTML path.
- Fail the build if any target file or anchor is missing.
- Count expected forward links from `index[].links`.
- Count expected backlinks from `chunks[].keyword_backlinks`.
- Confirm actual EPUB forward/backlink counts match expected counts.
- Recalculate `true_body_cjk_count` from正文 body/chunk text only, excluding TOC, index cards, navigation files, metadata, CSS, generated link labels, and markup.
- Report the true body count separately from total EPUB or generated XHTML text counts.
-
Three Kings 2.2: compress with iMandalArt, address with BIRD, and publish with an A4 eight-page booklet. iMandalArt, FIRE semantic analysis, planning, and publishing workflows for Claude Code, Codex, and mainstream LLM agents.
Repo: twhsi/skills
Other skills on twhsi-skills.
- /a4-eight-page-booklet
Use A4 Eight Page Booklet 2.2 to create, write, repair, impose, and validate a printable A4 one-sheet eight-page mini book or zine from text, notes, images, BIRD Graph JSON, iMandalArt/九宮, FIRE, outlines, templates, or PDFs. Use whenever the user says A4八頁小書, 八頁小書, 八頁小冊, 八格小書,
Open skill - /auto-luhmann-numberer
Assign, validate, normalize, and explain Luhmann/Zettelkasten-style project-note codes for Chinese book manuscripts, Obsidian Markdown folders, Mandala-Grid section files, HyperCard Markdown stacks, and project-note JSON to EPUB workflows. Use when Codex needs to scan folders
Open skill - /concise-key-points
Compress answers to the highest practical information density with minimal wording while preserving essential meaning. Use when the user asks for 言簡意賅, 講重點, Concise, 精簡回答, 簡潔回答, 只講重點, 直接回答, brief, TL;DR, or otherwise requests a concise key-points response.
Open skill - /epub-hypercard-obsidian
Convert EPUB card books into Obsidian-ready HyperCard Markdown folders and portable zip files. Use when Codex needs to turn an EPUB with XHTML chapters, table-of-contents cards, keyword index cards, backlinks, Luhmann/Zettelkasten numbers, or cross-links into one Markdown file
Open skill - /fantastical-calendar
Create Fantastical calendar events and reminders from Codex on macOS. Use when the user asks Codex to add, schedule, parse, preview, or send a meeting, appointment, task, reminder, time block, daily plan item, 行事曆, 日曆, 會議, 待辦, or 提醒 into Fantastical.
Open skill - /fire-analysis-card
Analyze Chinese notes, articles, manuscripts, and digital card-box material with FIRE 2.0: Full-D numbering, Index keyword webs, Route thinking paths, and Evolution over time. Use when Codex needs to prepare material for semantic search, turn temporary notes into permanent or
Open skill

