/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
$ npx -y skills add twhsi/skills --skill epub-hypercard-obsidian --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
/epub-hypercard-obsidian
Context preview
The summary Claude sees to decide when to auto-load this skill.
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
SKILL.md
epub-hypercard-obsidian.SKILL.mdname: epub-hypercard-obsidian
description: 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 per card with verified relative links, keyword cards, previous/home/next navigation, and GitHub/shareable zip output.
EPUB HyperCard Obsidian
Create an Obsidian folder from an EPUB card book. Each EPUB正文 card becomes one Markdown file. The output uses the four-table HyperCard format:
1. Luhmann/code + card title 2. Card content 3. Index-card hyperlinks 4. Previous/home/next navigation
Use this skill for EPUBs generated from project notes, Luhmann/Zettelkasten chunks, chapter cards, keyword index cards, or book-check editions that need to become clickable Obsidian Markdown.
Quick Start
Run the generator:
python3 scripts/epub_to_hypercard_obsidian.py INPUT.epub --out OUTPUT_DIR --zip
Recommended portable mode:
python3 scripts/epub_to_hypercard_obsidian.py INPUT.epub --out 3.4-centaur-hypercard-obsidian-portable --zip --portable
The script writes:
- `index.md`: stack home and chapter directory
- `card-*.md`: one正文 card per EPUB article/chapter
- `keyword-index.md`: keyword directory
- `key-*.md`: one keyword index card per keyword
- `OUTPUT_DIR.zip`: shareable zip, when `--zip` is set
Workflow
1. Inspect the EPUB before converting.
- Confirm it has `META-INF/container.xml`, `OEBPS/content.opf`, XHTML text files, and a spine.
- Treat `Text/toc.xhtml` or the first non-article spine item as the directory card.
- Treat `Text/index.xhtml` or the XHTML with `.index-card` sections as the keyword index card.
- Treat XHTML files with `<article>` as正文 HyperCards.
2. Generate Markdown card files.
- Use `p.code` text for the card code, such as `3.4.1|113字`.
- Use `h1` as the visible card title.
- Put body paragraphs into table 2 as one cell, separated with `<br><br>`.
- Link keyword occurrences to `key-*.md`.
- Keep Markdown table links as `[label](file.md)` to avoid Obsidian heading-anchor drift.
3. Generate keyword cards.
- Parse `index.xhtml` sections into `K001`, keyword, weight, and target cards.
- Make one `key-*.md` per keyword.
- Add previous/home/next navigation across keyword cards.
4. Verify all links.
- Every `[label](target.md)` must resolve to a file in the output folder.
- Do not rely on `[[#heading]]` same-file anchors for this workflow.
- Prefer `--portable` for sharing with AI tools, GitHub, macOS Finder, Windows, or zip upload workflows.
5. Deliver the folder and zip.
- Give the user the output folder path and zip path.
- Report card count, keyword count, and link verification result.
Filename Modes
| Mode | Shape | Use | |---|---|---| | `--portable` | `card-3-4-1.md`, `key-k001.md` | Default recommendation for zip/GitHub/AI upload | | no `--portable` | `3.4.1-標題.md`, `K001-關鍵字.md` | More human-readable inside Obsidian, less portable across zip tools |
Four-Table Card Contract
| 魯曼編號 | 卡片標題 |
|---|---|
| `{{code}}` | **{{title}}** |
| 內容 |
|---|
| {{content_with_links}} |
| 索引 | | | |
|---|---|---|---|
| {{keyword_link_1}} | {{keyword_link_2}} | {{keyword_link_3}} | {{keyword_link_4}} |
| ← 上一張 | Card {{n}} / {{total}} | 下一張 → |
|---|---|---|
| {{previous_card}} | [Home](index.md) | {{next_card}} |Link Rules
- Use relative Markdown file links: `[TARS](key-k001.md)`.
- Do not use Obsidian alias wikilinks inside tables, because `[[target|alias]]` contains `|` and can break table columns.
- Do not use same-file heading anchors for card navigation when the user wants a folder or zip.
- Escape Markdown table pipes in extracted text as `\|`.
Validation Output
Before finishing, run or report the script validation:
cards: ...
keywords: ...
missing_links: 0
zip: ...
If `missing_links` is not zero, fix the generated links or parser before delivery.
Read more
name: epub-hypercard-obsidian description: 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 per card with verified relative links, keyword cards, previous/home/next navigation, and GitHub/shareable zip output.
EPUB HyperCard Obsidian
Create an Obsidian folder from an EPUB card book. Each EPUB正文 card becomes one Markdown file. The output uses the four-table HyperCard format:
1. Luhmann/code + card title 2. Card content 3. Index-card hyperlinks 4. Previous/home/next navigation
Use this skill for EPUBs generated from project notes, Luhmann/Zettelkasten chunks, chapter cards, keyword index cards, or book-check editions that need to become clickable Obsidian Markdown.
Quick Start
Run the generator:
python3 scripts/epub_to_hypercard_obsidian.py INPUT.epub --out OUTPUT_DIR --zip
Recommended portable mode:
python3 scripts/epub_to_hypercard_obsidian.py INPUT.epub --out 3.4-centaur-hypercard-obsidian-portable --zip --portable
The script writes:
- `index.md`: stack home and chapter directory
- `card-*.md`: one正文 card per EPUB article/chapter
- `keyword-index.md`: keyword directory
- `key-*.md`: one keyword index card per keyword
- `OUTPUT_DIR.zip`: shareable zip, when `--zip` is set
Workflow
1. Inspect the EPUB before converting.
- Confirm it has `META-INF/container.xml`, `OEBPS/content.opf`, XHTML text files, and a spine.
- Treat `Text/toc.xhtml` or the first non-article spine item as the directory card.
- Treat `Text/index.xhtml` or the XHTML with `.index-card` sections as the keyword index card.
- Treat XHTML files with `<article>` as正文 HyperCards.
2. Generate Markdown card files.
- Use `p.code` text for the card code, such as `3.4.1|113字`.
- Use `h1` as the visible card title.
- Put body paragraphs into table 2 as one cell, separated with `<br><br>`.
- Link keyword occurrences to `key-*.md`.
- Keep Markdown table links as `[label](file.md)` to avoid Obsidian heading-anchor drift.
3. Generate keyword cards.
- Parse `index.xhtml` sections into `K001`, keyword, weight, and target cards.
- Make one `key-*.md` per keyword.
- Add previous/home/next navigation across keyword cards.
4. Verify all links.
- Every `[label](target.md)` must resolve to a file in the output folder.
- Do not rely on `[[#heading]]` same-file anchors for this workflow.
- Prefer `--portable` for sharing with AI tools, GitHub, macOS Finder, Windows, or zip upload workflows.
5. Deliver the folder and zip.
- Give the user the output folder path and zip path.
- Report card count, keyword count, and link verification result.
Filename Modes
| Mode | Shape | Use | |---|---|---| | `--portable` | `card-3-4-1.md`, `key-k001.md` | Default recommendation for zip/GitHub/AI upload | | no `--portable` | `3.4.1-標題.md`, `K001-關鍵字.md` | More human-readable inside Obsidian, less portable across zip tools |
Four-Table Card Contract
| 魯曼編號 | 卡片標題 |
|---|---|
| `{{code}}` | **{{title}}** |
| 內容 |
|---|
| {{content_with_links}} |
| 索引 | | | |
|---|---|---|---|
| {{keyword_link_1}} | {{keyword_link_2}} | {{keyword_link_3}} | {{keyword_link_4}} |
| ← 上一張 | Card {{n}} / {{total}} | 下一張 → |
|---|---|---|
| {{previous_card}} | [Home](index.md) | {{next_card}} |Link Rules
- Use relative Markdown file links: `[TARS](key-k001.md)`.
- Do not use Obsidian alias wikilinks inside tables, because `[[target|alias]]` contains `|` and can break table columns.
- Do not use same-file heading anchors for card navigation when the user wants a folder or zip.
- Escape Markdown table pipes in extracted text as `\|`.
Validation Output
Before finishing, run or report the script validation:
cards: ... keywords: ... missing_links: 0 zip: ...
If `missing_links` is not zero, fix the generated links or parser before delivery.
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 - /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 - /fire-card-to-epub
Convert FIRE analysis cards, Chinese knowledge notes, or project-note JSON into validated EPUB books with directory cards, chapter cards, keyword index cards, backlinks, and GitHub-shareable ebook assets. Use when Codex needs to teach or automate the path from
Open skill

