Project Note Json To Epub logo

Project Note Json To Epub

Community
twhsi
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, 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.

Overview

Publishertwhsi
Repositoryskills
Skill nameproject-note-json-to-epub
Stars
259
Forks
37
Bundled files
1
Links
  • Markdown instructions

    A SKILL.md file the model loads on demand, so it only costs tokens when a request actually matches.

  • Works with any LLM

    AI skills are plain Markdown, not provider-specific code, so this works with GPT, Claude, Gemini, Grok, or a local model.

  • 1 bundled files

    Scripts, templates, and references the model can read while it works. Files are read-only and never executed.

  • Open source

    Published by twhsi on GitHub. Read the source before you install it.

Installation

Install the Project Note Json To Epub AI skill in TypingMind to use it with any LLM, or drop it into another agent that reads SKILL.md.

1

Install in TypingMind

TypingMind installs a skill straight from its GitHub folder — it reads SKILL.md, bundles the resource files, and stores the result locally.

  1. Open the app and go to Plugins → Skills.
  2. Choose "Install from GitHub".
  3. Paste the skill folder URL below and confirm.
    https://github.com/twhsi/skills/tree/main/skills/project-note-json-to-epub
  4. Enable the skill in any chat where you want it available.
Plugins → Skills → Add skill → From GitHub URL, then paste the folder URL and press Continue.
2

Install in another agent

Any agent that reads the Agent Skills format can use this skill — copy the folder into that agent's skills directory.

Claude Code — .claude/skills
git clone --depth 1 https://github.com/twhsi/skills.git /tmp/skills
mkdir -p .claude/skills
cp -r /tmp/skills/skills/project-note-json-to-epub .claude/skills/project-note-json-to-epub
Restart Claude Code after copying so it picks up the new skill.

Use it in TypingMind

Enable Project Note Json To Epub in any TypingMind chat and the model takes it from there. Its name and description sit in the system prompt, and the moment a request matches, the model loads the full instructions itself — you never invoke it by hand, and it costs no tokens until it is actually used.

The model loads Project Note Json To Epub on its own as soon as a request matches it.

Works with any AI model

AI skills are plain Markdown instructions rather than provider-specific code, so Project Note Json To Epub is not tied to the model it was written for. Install it once in TypingMind and use it with GPT-5, Claude, Gemini, Grok, DeepSeek, Mistral, Llama, or a local model you run yourself — all on your own API keys.

  • Loaded only when it is needed

    The system prompt carries just the name and description. The instructions are fetched on the first matching request, so an idle skill costs nothing.

  • Switch models mid-chat

    Because the skill is instructions rather than code, changing model does not break it — the next model reads the same SKILL.md.

Skill instructions

This is the SKILL.md content the model loads. Read it before installing — a skill is instructions your model will follow.

專案筆記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.
    • Confirm orthogonal_check.ok is true when the JSON includes directory/index/cross-link fields.
    • For PDF output, inspect the PDF annotations with pypdf or equivalent and fail if internal GoTo/destination link counts do not match the expected forward/backlink model.
    • Render the PDF to PNG and visually confirm Chinese text, blue link text, spacing, and page flow. If Chinese text renders as boxes, fix font embedding and rebuild.

EPUB Requirements

  • EPUB mimetype must be the first zip entry and stored uncompressed.
  • META-INF/container.xml, OEBPS/content.opf, OEBPS/nav.xhtml, and XHTML text files must exist.
  • dc:title in content.opf must match the requested book/version title.
  • The書末索引 must show keyword id, keyword, weight, and clickable page links.
  • The OPF spine must place the keyword index page after all正文 pages unless the user explicitly requests a front-loaded index for review. -正文 keyword markers should show the keyword plus a small clickable Kxxx backlink.
  • Preserve readable styling; backlinks should not disrupt paragraph flow.

PDF Requirements

  • Generate PDF only when requested, or when the user asks for Kindle-compatible clickable links.
  • PDF links must be internal document links using named destinations or explicit GoTo actions.
  • The書末索引 must include clickable links back to正文 chunk destinations. -正文 keyword markers must include clickable Kxxx backlinks to the keyword index destination.
  • PDF link counts should mirror EPUB expectations unless layout requires an explicitly documented exception.
  • Use a CJK-capable embedded font for Chinese output. On macOS, a ReportLab build may use a TTC font such as /System/Library/Fonts/STHeiti Medium.ttc with a selected subfont index; in other environments choose an available Noto/Source Han CJK font.
  • Render at least one representative page to PNG before delivery and inspect for missing glyphs, clipped text, overlapping links, and unreadable spacing.
  • Kindle note: PDF internal links are the compatibility target. Do not depend on JavaScript, web URLs, or EPUB-only href behavior for the PDF edition.

Validation Checklist

Before telling the user it is finished, report:

text
errors: 0
title: ...
all_href_count: ...
index_forward_links_tested: ...
body_return_links_tested: ...
index_entries: ...
true_body_cjk_count: ...
file type: EPUB document
pdf_internal_links_tested: ...
pdf_render_checked: ...
pdf file type: PDF document

If any count fails, fix the generator and rebuild rather than editing EPUB output by hand.

Delivery

Return two links when possible:

  • A simple mobile-safe link: download.epub
  • The formal versioned EPUB filename
  • The companion PDF filename when generated
  • A validation report or short count summary when both EPUB and PDF are generated

Mention the version title and the link-test summary briefly.

Bundled files

The model reads these on demand while the skill is loaded. They are exposed as readable files and are never executed.

Frequently asked questions

What does the Project Note Json To Epub AI skill do?

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.

Why use Project Note Json To Epub on TypingMind?

Because you install it once and use it with any model. Project Note Json To Epub is plain Markdown rather than provider-specific code, so the same skill runs on GPT-5, Claude, Gemini, Grok, or a local model — and you can switch model mid-chat without it breaking. TypingMind runs on your own API keys, so you pay providers directly instead of a per-seat subscription, and your skills and chats stay in your own storage.

How do I install Project Note Json To Epub in TypingMind?

Open Plugins → Skills → Install from GitHub in TypingMind and paste https://github.com/twhsi/skills/tree/main/skills/project-note-json-to-epub. TypingMind reads its SKILL.md and bundles its files and installs it as a skill you can enable per chat.

Which AI models can use Project Note Json To Epub?

Any model you connect in TypingMind. AI skills are plain Markdown instructions rather than provider-specific code, so GPT, Claude, Gemini, Grok, and local models can all load this skill when a request matches it.

How many AI models can I use with Project Note Json To Epub?

As many as you like. As long as a model supports skills, you can use Project Note Json To Epub with it — GPT, Claude, Gemini, Grok, DeepSeek, Mistral, Llama and more — all on TypingMind with your own API keys.

Is the Project Note Json To Epub AI skill free?

It is published on GitHub by twhsi. Check the repository for licensing terms. You only pay your own AI provider for the tokens you use.

What are AI skills?

An AI skill is a reusable instruction bundle that teaches an AI model how to do one specific task. It follows the open Agent Skills format: a SKILL.md file with a name and description, plus any scripts, templates or reference files the model may need. The model reads the instructions only when your request matches the skill, so an installed skill costs nothing until it is used.

How are AI skills different from plugins or MCP servers?

A plugin or MCP server gives a model new tools to call — code that runs somewhere and returns a result. An AI skill gives the model knowledge and process instead: how to approach a task, which steps to follow, what good output looks like. Skills are plain Markdown, so they need no server, no API key and no runtime, and they work with any model.

View all

Set up your own AI workspace now

Get notified about new features and future giveaways by subscribing to our newsletter 👇