Not in the top 1,000 by GitHub stars
Mran/anki-deck-builder
Claude skill: turn any study material (PDF/Word/PPT/web/video) into beautiful, editable Anki decks · 把任何学习材料变成好看、可随时修改的 Anki 卡包
History
Review weekly changes to SKILL.md before updating. Dates mark the weeks in which we observed each version; checks apply to the recorded commits.
View weekly changes
SKILL.md
Week of Nov 2, 2026 · +0 / −0 lines
Before Network or broad shell → After Network or broad shell
42f16e1cde35 → 42f16e1cde35
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Network or broad shell
First observation → 42f16e1cde35
No earlier version was observed for comparison.
Heat
4.8- Star growth, last 7 daysNot available
- Star growth, last 24 hoursNot available
- Rank movement, last 7 daysNot available
- Commits, last 30 daysNot available
- Accounts asking about it through MCP, last 7 daysNot available
- Hot votes this weekNot available
Heat never changes the order by stars, and sponsorship never touches it. How heat works
Stars over time
30-day change not yet available: not enough history.
Individual skills in this repository
How it works
anki-deck-builder
When your agent uses it
把任何学习材料(PDF、Word/docx、PPT/pptx、txt/markdown、网页链接、YouTube/B站视频、本地音视频、字幕、图片、epub)转化为可直接导入 Anki 的 .apkg 卡包,支持翻转卡、双向卡、填空卡(cloze)、选择题(单选/多选)、判断题、输入答案卡,并带有精心设计、适配夜间模式和手机端的卡片样式。整个设计过程(知识点、卡片、样式、决策日志)保存在一个项目文件夹里,之后可以随时换风格、换卡片类型、增删卡片而不丢失 Anki 复习进度。只要用户提到 Anki、记忆卡、闪卡、flashcard、间隔重复、"把这份资料做成卡片/题目来背",或想修改之前生成的 Anki 卡包的样式/题型,就使用这个 skill——即使用户没有明确说"Anki"。
What it loads into context
Frontmatter
245 tokensAlways available to the agent
SKILL.md
2,690 tokensWhen the skill is activated
Reference documents
10,569 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- 为什么要分层
- 工作流程
- 后续修改
Scripts executed separately
assets/js/mcq.jsassets/js/tf.jsevals/pptx-to-flip-and-mcq/place-files.shevals/restyle-and-add-truefalse/place-files.shevals/txt-to-cloze-truefalse-paper/place-files.shscripts/_common.pyscripts/anki_connect.pyscripts/build.pyscripts/ingest.pyscripts/project.py
Files
.gitattributesasset46 bytes.gitignoreasset39 bytesLICENSEasset1,061 bytesREADME.mddoc9,176 bytesSKILL.mdcore9,059 bytesSKILL.mdcore9,059 bytesSKILL.mdcore9,059 bytesSKILL.mdcore9,059 bytesSKILL.mdcore9,059 bytesSKILL.mdcore9,059 bytesassets/base.cssasset7,665 bytesassets/i18n.jsonasset1,413 bytesassets/js/mcq.jsruns4,046 bytesassets/js/tf.jsruns1,664 bytesassets/note_types/basic/back.htmlasset319 bytesassets/note_types/basic/front.htmlasset115 bytesassets/note_types/basic/model.jsonasset156 bytesassets/note_types/cloze/back.htmlasset256 bytesassets/note_types/cloze/front.htmlasset120 bytesassets/note_types/cloze/model.jsonasset162 bytesassets/note_types/mcq/back.htmlasset643 bytesassets/note_types/mcq/front.htmlasset446 bytesassets/note_types/mcq/model.jsonasset185 bytesassets/note_types/reversed/back.htmlasset325 bytesassets/note_types/reversed/back2.htmlasset325 bytesassets/note_types/reversed/front.htmlasset121 bytesassets/note_types/reversed/front2.htmlasset120 bytesassets/note_types/reversed/model.jsonasset245 bytesassets/note_types/truefalse/back.htmlasset726 bytesassets/note_types/truefalse/front.htmlasset487 bytesassets/note_types/truefalse/model.jsonasset176 bytesassets/note_types/typein/back.htmlasset278 bytesassets/note_types/typein/front.htmlasset176 bytesassets/note_types/typein/model.jsonasset160 bytesassets/themes/minimal.cssasset1,341 bytesassets/themes/nord.cssasset1,264 bytesassets/themes/paper.cssasset1,292 bytesassets/themes/vivid.cssasset1,412 bytesdocs/themes-night.pngasset221,512 bytesdocs/themes.pngasset253,626 bytesdocs/types.pngasset202,112 bytesevals/pptx-to-flip-and-mcq/case.yamlasset355 bytesevals/pptx-to-flip-and-mcq/files/tcp-lecture.pptxasset40,424 bytesevals/pptx-to-flip-and-mcq/graders/01-an-importable--apkg-exists-and.mddoc117 bytesevals/pptx-to-flip-and-mcq/graders/02-the-deck-contains-both-basic.mddoc108 bytesevals/pptx-to-flip-and-mcq/graders/03-multiple-choice-notes-outnumber-basic-fl.mddoc91 bytesevals/pptx-to-flip-and-mcq/graders/04-cards-cover-at-least-4.mddoc153 bytesevals/pptx-to-flip-and-mcq/graders/05-at-least-one-card-uses.mddoc171 bytesevals/pptx-to-flip-and-mcq/graders/06-every-multiple-choice-note-has-a.mddoc97 bytesevals/pptx-to-flip-and-mcq/graders/07-card-css-defines-night-mode-styling.mddoc105 bytesevals/pptx-to-flip-and-mcq/graders/08-single-answer-mcq-correct-answers-are.mddoc136 bytesevals/pptx-to-flip-and-mcq/graders/09-multiple-choice-cards-are-interactive--o.mddoc155 bytesevals/pptx-to-flip-and-mcq/graders/10-output-keeps-the-design-process.mddoc145 bytesevals/pptx-to-flip-and-mcq/place-files.shruns62 bytesevals/pptx-to-flip-and-mcq/prompt.mddoc334 bytesevals/restyle-and-add-truefalse/case.yamlasset415 bytesevals/restyle-and-add-truefalse/files/cell-biology/DESIGN_LOG.mddoc123 bytesevals/restyle-and-add-truefalse/files/cell-biology/build/history.jsonlasset269 bytesevals/restyle-and-add-truefalse/files/cell-biology/cards.yamlasset1,829 bytesevals/restyle-and-add-truefalse/files/cell-biology/knowledge.yamlasset833 bytesevals/restyle-and-add-truefalse/files/cell-biology/project.yamlasset380 bytesevals/restyle-and-add-truefalse/files/cell-biology/sources/cell-2.mddoc147 bytesevals/restyle-and-add-truefalse/files/cell-biology/sources/cell.mddoc192 bytesevals/restyle-and-add-truefalse/files/cell-biology/sources/sub.mddoc105 bytesevals/restyle-and-add-truefalse/files/cell-biology/style/brief.mddoc103 bytesevals/restyle-and-add-truefalse/files/cell-biology/style/theme.cssasset1,341 bytesevals/restyle-and-add-truefalse/graders/01-an-importable--apkg-exists-and.mddoc117 bytesevals/restyle-and-add-truefalse/graders/02-project-yaml-uid-is-unchanged.mddoc72 bytesevals/restyle-and-add-truefalse/graders/03-all-7-original-notes-keep.mddoc150 bytesevals/restyle-and-add-truefalse/graders/04-existing-note-type-ids-are.mddoc137 bytesevals/restyle-and-add-truefalse/graders/05-at-least-one-new-true-false.mddoc176 bytesevals/restyle-and-add-truefalse/graders/06-the-default-non-night--card-background.mddoc109 bytesevals/restyle-and-add-truefalse/graders/07-card-css-contains-both-a.mddoc109 bytesevals/restyle-and-add-truefalse/graders/08-design-log-md-has-a-new-entry.mddoc95 bytesevals/restyle-and-add-truefalse/graders/09-the-previous-style-is-kept.mddoc126 bytesevals/restyle-and-add-truefalse/place-files.shruns62 bytesevals/restyle-and-add-truefalse/prompt.mddoc441 bytesevals/txt-to-cloze-truefalse-paper/case.yamlasset335 bytesevals/txt-to-cloze-truefalse-paper/files/tang-notes.txtdoc1,106 bytesevals/txt-to-cloze-truefalse-paper/graders/01-an-importable--apkg-exists-and.mddoc117 bytesevals/txt-to-cloze-truefalse-paper/graders/02-the-deck-contains-both-cloze.mddoc98 bytesevals/txt-to-cloze-truefalse-paper/graders/03-at-least-2-false-statements.mddoc155 bytesevals/txt-to-cloze-truefalse-paper/graders/04-true-and-false-statements-are.mddoc123 bytesevals/txt-to-cloze-truefalse-paper/graders/05-every-cloze-deletion-is-a.mddoc103 bytesevals/txt-to-cloze-truefalse-paper/graders/06-card-css-uses-a-serif.mddoc90 bytesevals/txt-to-cloze-truefalse-paper/graders/07-card-css-defines-night-mode-styling.mddoc105 bytesevals/txt-to-cloze-truefalse-paper/graders/08-true-false-cards-are-interactive--true-f.mddoc153 bytesevals/txt-to-cloze-truefalse-paper/graders/09-output-keeps-the-design-process.mddoc145 bytesevals/txt-to-cloze-truefalse-paper/place-files.shruns62 bytesevals/txt-to-cloze-truefalse-paper/prompt.mddoc308 bytesexamples/cell-biology/DESIGN_LOG.mddoc123 bytesexamples/cell-biology/cards.yamlasset1,829 bytesexamples/cell-biology/knowledge.yamlasset833 bytesexamples/cell-biology/project.yamlasset380 bytesexamples/cell-biology/sources/cell-2.mddoc147 bytesexamples/cell-biology/sources/cell.mddoc192 bytesexamples/cell-biology/sources/sub.mddoc105 bytesexamples/cell-biology/style/brief.mddoc103 bytesexamples/cell-biology/style/theme.cssasset1,341 bytesreferences/card-types.mddoc6,122 bytesreferences/ingestion.mddoc3,074 bytesreferences/project-format.mddoc2,876 bytesreferences/styling.mddoc7,439 bytesrequirements.txtdoc136 bytesscripts/_common.pyruns6,994 bytesscripts/anki_connect.pyruns2,682 bytesscripts/build.pyruns15,554 bytesscripts/ingest.pyruns15,796 bytesscripts/project.pyruns4,573 bytes
Read SKILL.md
# Anki Deck Builder
把材料 → 知识点 → 卡片 → 样式 → `.apkg`,并且每一层都落盘,方便以后只改其中一层。
## 为什么要分层
用户以后最常见的诉求是"换个风格"或"把这些翻转卡改成选择题"。如果卡片是一次性从材料直接生成的,任何修改都要从头再来,还会产生新的 note,导致 Anki 里的复习记录丢失。所以本 skill 把产物拆成四层,每层独立可改:
| 层 | 文件 | 改它意味着 |
|---|---|---|
| 来源 | `sources/*.md`, `media/` | 加新材料 |
| 知识点(与题型无关) | `knowledge.yaml` | 改"学什么" |
| 卡片(题型 + 字段) | `cards.yaml` | 改"怎么考" |
| 样式 | `style/theme.css`, `style/overrides.css`, `style/brief.md`, 可选 `style/templates/` | 改"长什么样" |View the complete source on GitHubSkills included
- anki-deck-builder
Repository facts
- License
- MIT
- Created
- Oct 28, 2026
- Last pushed
- Oct 28, 2026
- Forks
- 0
- Open issues
- 0
- Project activity
- Active
Before you install
Network or broad shellAutomated signals, not a guarantee
Checked Nov 4, 2026
Not fully analyzed: some files were too long, unreadable or missing. This never lowers the level.
Show 5 notes
SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedSKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedSKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedSKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedSKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzed
- No broad tool permissions
- No dangerous shell commands
- 13 network referencesin 4 files: README.md:36 scripts/anki_connect.py:18 scripts/ingest.py:216 and 1 more
- 1 obfuscation signalin 1 file: scripts/ingest.py:238
- No instruction overrides
- 10 executable scriptsin 10 files: assets/js/mcq.js:1 assets/js/tf.js:1 evals/pptx-to-flip-and-mcq/place-files.sh:1 and 7 more
- No access to secrets
- No requests to vote in Hot
Show all 24 signals by file
README.md
- Network accessline 36
git clone https://github.com/Mran/anki-deck-builder.git ~/.claude/skills/anki-deck-builder - Network accessline 78
https://www.youtube.com/watch?v=xxxx 这个视频讲的内容帮我做成 anki 卡片 - Network accessline 172
# 导入材料 python scripts/ingest.py 讲义.pdf 课件.pptx https://example.com/article --project 我的卡包 - Network accessline 173
python scripts/ingest.py 讲义.pdf 课件.pptx https://example.com/article --project 我的卡包
assets/js/mcq.js
- Executable scriptline 1
Executable file
assets/js/tf.js
- Executable scriptline 1
Executable file
evals/pptx-to-flip-and-mcq/place-files.sh
- Executable scriptline 1
#!/usr/bin/env bash
evals/restyle-and-add-truefalse/place-files.sh
- Executable scriptline 1
#!/usr/bin/env bash
evals/txt-to-cloze-truefalse-paper/place-files.sh
- Executable scriptline 1
#!/usr/bin/env bash
references/ingestion.md
scripts/_common.py
- Executable scriptline 1
Executable file
scripts/anki_connect.py
- Executable scriptline 1
#!/usr/bin/env python3 - Network accessline 18
URL = "http://127.0.0.1:8765" - Network accessline 22
body = json.dumps({"action": action, "version": 6, "params": params}).encode("utf-8") try: with urllib.request.urlopen(urllib.request.Request(URL, body), timeout=10) as r: - Network accessline 23
try: with urllib.request.urlopen(urllib.request.Request(URL, body), timeout=10) as r: res = json.loads(r.read()) - Network accessline 24
with urllib.request.urlopen(urllib.request.Request(URL, body), timeout=10) as r:
scripts/build.py
- Executable scriptline 1
#!/usr/bin/env python3
scripts/ingest.py
- Executable scriptline 1
#!/usr/bin/env python3 - Network accessline 216
def h_url(url, ctx, stem): req = urllib.request.Request(url, headers={"User-Agent": "Mozilla/5.0 (ankiskill ingest)"}) - Network accessline 217
req = urllib.request.Request(url, headers={"User-Agent": "Mozilla/5.0 (ankiskill ingest)"}) - Network accessline 218
with urllib.request.urlopen(req, timeout=30) as r: - Possible obfuscationline 238
text = text.lstrip("<U+FEFF>")
scripts/project.py
- Executable scriptline 1
#!/usr/bin/env python3
How the signals fit together
Facts from a static read of the files at the pinned commit. They describe what the code does, not why.
Signal confidence: 24 facts
- Network access in code of documentationREADME.md:36Low confidence
- Network access in code of documentationREADME.md:78Low confidence
- Network access in code of documentationREADME.md:172Low confidence
- Network access in code of documentationREADME.md:173Low confidence
- Executable script in code of a file that runsassets/js/mcq.js:1High confidence
- Executable script in code of a file that runsassets/js/tf.js:1High confidence
- Executable script in code of a file that runsevals/pptx-to-flip-and-mcq/place-files.sh:1High confidence
- Executable script in code of a file that runsevals/restyle-and-add-truefalse/place-files.sh:1High confidence
- Executable script in code of a file that runsevals/txt-to-cloze-truefalse-paper/place-files.sh:1High confidence
- Network access in code of documentationreferences/ingestion.md:21Low confidence
- Network access in code of documentationreferences/ingestion.md:22Low confidence
- Executable script in prose of a file that runsscripts/_common.py:1Low confidence
- Executable script in code of a file that runsscripts/anki_connect.py:1High confidence
- Network access in code of a file that runsscripts/anki_connect.py:18High confidence
- Network access in code of a file that runsscripts/anki_connect.py:22High confidence
- Network access in code of a file that runsscripts/anki_connect.py:23High confidence
- Network access in code of a file that runsscripts/anki_connect.py:24High confidence
- Executable script in code of a file that runsscripts/build.py:1High confidence
- Executable script in code of a file that runsscripts/ingest.py:1High confidence
- Network access in code of a file that runsscripts/ingest.py:216High confidence
- Network access in code of a file that runsscripts/ingest.py:217High confidence
- Network access in code of a file that runsscripts/ingest.py:218High confidence
- Possible obfuscation in code of a file that runsscripts/ingest.py:238High confidence
- Executable script in code of a file that runsscripts/project.py:1High confidence
Works with
| Agent | Status | Evidence | Install to |
|---|---|---|---|
| Claude Code | Compatible | Standard SKILL.md SKILL.md | .claude/skills/<skill-name>/ |
| Codex | Compatible | Standard SKILL.md SKILL.md | .agents/skills/<skill-name>/ |
| Cursor | Compatible | Standard SKILL.md SKILL.md | .cursor/skills/<skill-name>/ |
| Gemini CLI | Compatible | Standard SKILL.md SKILL.md | .gemini/skills/<skill-name>/ |
| GitHub Copilot | Compatible | Standard SKILL.md SKILL.md | .github/skills/<skill-name>/ |
| OpenCode | Compatible | Standard SKILL.md SKILL.md | .opencode/skills/<skill-name>/ |
- Native The repository ships a manifest, folder or frontmatter field for this agent.
- Compatible A standard SKILL.md that this agent can read.
- Unknown No evidence either way.
Derived automatically from paths, manifests and frontmatter. Not tested on each agent.