소스 정보
- 저장소
- andrem-sec/psc-comet
- 최근 소스 활동
- 2026년 4월 22일 14:31
- 감지된 SKILL.md 언어
- 영어
- 스타
- 4
- 포크
- 0
설치 방법
기본적으로 소스를 먼저 확인하는 Prompt가 선택됩니다. 직접 명령으로 전환하거나 로컬 사본을 다운로드할 수도 있습니다.
소스 파일 검토
설치 여부를 결정하기 전에 SKILL.md와 SkillsMP에 표시된 보조 파일을 읽어 보세요.
메뉴
기본적으로 소스를 먼저 확인하는 Prompt가 선택됩니다. 직접 명령으로 전환하거나 로컬 사본을 다운로드할 수도 있습니다.
설치 여부를 결정하기 전에 SKILL.md와 SkillsMP에 표시된 보조 파일을 읽어 보세요.
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
직접 명령은 검토 Prompt를 거치지 않습니다. 실행하기 전에 소스를 확인하세요.
npx skills add https://github.com/andrem-sec/psc-comet --skill library-pipeline명령은 한 줄로 유지됩니다. 복사하기 전에 가로로 스크롤해 전체 내용을 확인하세요.
로컬 사본을 원하시나요? SkillsMP에서 현재 제공할 수 있는 파일을 다운로드하세요.
SOC 직업 분류 기준
SKILL.md 표시 중
| name | library-pipeline |
| description | Convert PDF/EPUB library to Markdown and generate Obsidian MOC notes |
| version | 0.2.0 |
| level | 2 |
| triggers | ["library pipeline","convert books","convert pdfs","book moc","/library-pipeline"] |
| context_files | ["context/user.md"] |
| steps | [{"name":"Gate Check","description":"Confirm user has a PDF/EPUB library and Obsidian vault is configured"},{"name":"Collect Paths","description":"Ask user for library-root and vault-root; derive output-root"},{"name":"Dependency Check","description":"Verify pymupdf4llm and pandoc; auto-install pandoc if missing"},{"name":"Run Pipeline","description":"Execute convert-to-md.py then generate-book-moc.py with collected paths"},{"name":"Verify MOC","description":"Confirm Library MOC.md was written to vault"}] |
Converts a local PDF/EPUB book and paper library to Markdown, then generates
lightweight MOC notes in Obsidian. Callable standalone or from /obsidian-setup
as an optional post-setup step.
Step 1 -- Conversion (scripts/convert-to-md.py)
Scans immediate subdirectories of --library-root as categories. Files at the
root itself go to a "General" category. Converts to Markdown and writes to
--output-root. EPUB is preferred over PDF when both exist. Resumable: skips
files already converted.
Step 2 -- MOC generation (scripts/generate-book-moc.py)
For each source file: extracts TOC and embedded metadata (no AI, no tokens).
Writes a structured Obsidian note to <vault-root>/02. AI-Vault/Library/Books/
or .../Papers/. The note stores a library-relative path so Claude can read
the full content on demand. Full book content never goes into Obsidian.
Automatically calls generate-library-moc.py when new notes are created.
Step 3 -- Library index (scripts/generate-library-moc.py, called automatically)
Scans all MOC notes and regenerates <vault-root>/02. AI-Vault/Library/Library MOC.md
with counts, categories, and wiki-link entries. Only runs when at least one new
note was created. To force a refresh: run python scripts/generate-library-moc.py --vault-root <path>.
| Argument | Description | Example |
|---|---|---|
--library-root | Root of your book/paper directory | /run/media/user/USB/Books |
--vault-root | Obsidian vault root | /home/user/Documents/Obsidian |
--output-root | Where to write converted Markdown | Defaults to <library-root>/../Markdown |
No paths are hardcoded. Every run requires these arguments.
| Dependency | Required For | Install |
|---|---|---|
pymupdf4llm | PDF conversion and TOC extraction | pip install pymupdf4llm |
pandoc | EPUB conversion | Auto-installed (see below) |
tqdm | Progress bar (optional) | pip install tqdm |
watchdog | Watch mode only | pip install watchdog |
The script attempts to install pandoc automatically:
winget install JohnMacFarlane.Pandocbrew install pandocsudo apt-get install -y pandoc and exits -- run the command, then re-run the scriptOn Linux, pandoc installation requires elevated access. Claude will print the command; do not assume sudo is available without a password.
1. Gate Check
Ask: "Do you have a PDF/EPUB book or paper library you want to index?"
If no, skip. If Obsidian vault is not set up, suggest running /obsidian-setup first.
2. Collect Paths Ask the user:
Validate both required paths exist before proceeding. If either does not exist, report the error and stop.
3. Dependency Check
python -c "import pymupdf4llm; print('pymupdf4llm OK')"
pandoc --version
If pymupdf4llm is missing: abort -- PDF conversion is impossible without it.
If pandoc is missing: the script will attempt auto-install. On Linux it will
print an install command and exit; run it, then re-run the pipeline.
4. Run Pipeline
python scripts/convert-to-md.py \
--library-root "<library-root>" \
--output-root "<output-root>"
python scripts/generate-book-moc.py \
--library-root "<library-root>" \
--vault-root "<vault-root>" \
--output-root "<output-root>"
Report convert-to-md.py output as "Conversion:" and generate-book-moc.py
output as "MOC generation:" separately so partial failures are visible.
5. Verify MOC
Check <vault-root>/02. AI-Vault/Library/Library MOC.md was created or updated.
If Obsidian MCP is active, read it to confirm entry count matches expectations.
For direct use without Claude:
# Linux/macOS
bash scripts/run-library-pipeline.sh /path/to/library /path/to/vault
# Windows
scripts\run-library-pipeline.bat "C:\Books" "C:\Vault"
Wrappers prompt interactively if paths are not passed as arguments.
Output-root defaults to a Markdown folder next to library-root.
python scripts/convert-to-md.py --library-root ... --output-root ... --dry-run
python scripts/convert-to-md.py --library-root ... --output-root ... --category Cybersec
python scripts/convert-to-md.py --library-root ... --output-root ... --watch
python scripts/generate-book-moc.py --library-root ... --vault-root ... --file path/to/book.pdf
python scripts/generate-library-moc.py --vault-root /path/to/vault
| Missing | Behavior |
|---|---|
pymupdf4llm | Cannot convert PDFs or extract TOC. Script exits 1 immediately. |
pandoc | Auto-install attempted. If it fails on Linux, script exits 1 with install command. |
tqdm | No progress bar. Continues normally. |
watchdog | Watch mode unavailable. Batch mode still works. |
--output-root not provided | Shell wrappers default to <library-root>/../Markdown. Scripts require it explicitly. |
| Obsidian not running | MOC notes written directly to vault filesystem. MCP tools unavailable but not required. |
| Library root empty | Script reports "No PDF or EPUB files found" and exits cleanly. |
Generated notes follow a consistent wiki schema defined in scripts/wiki-schema.md.
Key additions to generated notes:
cross_refs: [] -- empty on creation; filled by Claude when summarizingsummary_status: "pending" -- updated to "done" after Claude fills in the Summary sectionlog.md -- pipeline appends a creation entry to <vault-root>/02. AI-Vault/Library/log.md after each new noteUpdate-vs-create rule:
summary_status: "done" without explicit user instructionCross-references: Added by Claude via obsidian_patch, not by the pipeline. The pipeline
only creates the empty cross_refs: [] slot.
See scripts/wiki-schema.md for the full field reference and update logic.
When called from /obsidian-setup, ask the gate question inline:
"Do you have a PDF/EPUB library you want to import into Obsidian?"
If yes, run this skill in full starting from Step 2. If no, skip silently.