Marketplace for zkfy plugin - Transform unstructured content into structured Zettelkasten literature notes
npx claudepluginhub jasonsie/zkfytransform unstructured text into structured Zettelkasten notes with metadata and links
Share bugs, ideas, or general feedback.
A Claude Code plugin that transforms unstructured content (URLs, videos, raw text) into structured Zettelkasten literature notes for Obsidian vaults.
zkfy automates the process of converting web content, YouTube videos, and raw text into well-structured Zettelkasten literature notes:
INPUT → [VIDEO TRANSCRIPTION] → MARKDOWN GENERATION → ZETTELKASTEN INTEGRATION → OUTPUT
Your Obsidian vault must contain these folders:
your-vault/
├── cs/ # Computer Science notes
├── web/ # Web development notes
├── ai/ # AI/ML notes
├── principle/ # Principle notes
├── devops/ # DevOps notes
├── math/ # Math notes
├── 000.Index/ # Maps of Content (MOCs)
└── zz.original-source/ # Source staging area
# Clone the repository
git clone https://github.com/jasonsie/zkfy.git
cd zkfy
# Link to Claude Code plugins directory
ln -s "$PWD" ~/.claude/plugins/zkfy
# Create required prompt files
mkdir -p ~/.claude/prompts
touch ~/.claude/prompts/crawler.prompt.md
touch ~/.claude/prompts/obsidian-note.prompt.md
Create these prompt files with your formatting rules:
~/.claude/prompts/crawler.prompt.md - Markdown formatting rules for content extraction
~/.claude/prompts/obsidian-note.prompt.md - Zettelkasten literature note structure rules
# Navigate to your Obsidian vault
cd /path/to/your/vault
# Run zkfy with a source
/source-to-zk <url-or-text-or-file>
# From a YouTube video
/source-to-zk https://www.youtube.com/watch?v=dQw4w9WgXcQ
# From a web article
/source-to-zk https://example.com/article
# From raw text
/source-to-zk "Your content here..."
# From a file
/source-to-zk /path/to/source.txt
The plugin generates:
zz.original-source/ with original contentweb/, ai/)Generated notes follow this format:
---
Date: 2026-02-10
Type: literature
Categories: [Web, React]
Sub-Categories: [Hooks, State Management]
Aliases: [React Hooks, useState]
Before: '[[Web-Previous-Note]]'
Next: '[[Web-Next-Note]]'
Link: 'https://source-url.com'
Src: '[[zz.original-source/20260210-source]]'
---
# Note Title
## Abstract
- Key point 1
- Key point 2
- Key point 3
## Section 1: Main Concept
Content with code examples...
## Section 2: Related Concept
More content...
## Links
- [[Related-Note]] - Explanation of relationship
All notes use Train-Case naming:
Domain-Concept-Name-In-Train-Case.md
Examples:
Web-React-Server-Components.mdCS-Binary-Search-Tree.mdAI-Transformer-Architecture.mdzkfy/
├── plugin.json # Plugin manifest
├── commands/
│ └── source-to-zk.md # Main orchestration command
├── agents/
│ ├── video-agent.md
│ ├── markdown-file-agent.md
│ ├── diagram-agent.md
│ ├── ascii-diagram-agent.md
│ └── zettelkasten-agent.md
├── skills/
│ └── terminal-colors/ # Reusable output formatting
└── hooks/
├── hooks.json # Event-based automation
└── validate-zk-structure.sh