Install
$ agentstack add skill-windzh03-zotero-obsidian-skill-zotero-obsidian-skill ✓ scanned · ✓ verified — works with Claude Code, Cursor, and more.
Security review
✓ PassedNo issues found. Passed automated security review. · v0.1.0 How review works →
- ✓ Prompt-injection patterns
- ✓ Secret / credential exfiltration
- ✓ Dangerous shell & filesystem operations
- ✓ Untrusted network calls
- ✓ Known-malicious package signatures
What it can access
- ✓ Network access No
- ✓ Filesystem access No
- ✓ Shell / process execution No
- ✓ Environment & secrets No
- ✓ Dynamic code execution No
From automated source analysis of v0.1.0. “Used” means the capability is present in the source — more access means more to trust, not that it’s unsafe.
About
Paper Folder Obsidian
Use this skill when the user wants an end-to-end paper reading workflow from a local paper folder into Obsidian.
Required user input
Ask for or confirm exactly these paths before doing any work:
paper_root: /absolute/path/to/A
output_root: /absolute/path/to/obsidian/subfolder
Interpret the input strictly:
paper_rootis the root folderA.- Each first-level subfolder directly under
Ais one category. - The number of first-level subfolders equals the number of output markdown files.
- Scan PDFs recursively inside each first-level subfolder.
- Ignore non-PDF files.
- If PDFs are placed directly under
A, group them into a fallback category namedroot.
Important environment rule
Only claim that files were written when the runtime truly has filesystem access to those local paths.
- If the environment can access the local paths, write the markdown files and extracted images directly.
- If the environment cannot access the user's local filesystem, do not pretend the write succeeded. Instead, explain the limitation clearly and either:
- ask the user to upload the folder contents, or
- generate the markdown content as a deliverable they can save themselves.
Workflow
Follow this sequence.
- Validate both absolute paths.
- Run
scripts/scan_paper_root.pyto inventory PDFs and group them by first-level subfolder. - For each PDF in each category:
- read the PDF;
- extract bibliographic details from the first page and metadata when possible;
- create a concise, faithful paper summary using the sections below;
- run
scripts/extract_pdf_assets.pyto generate image assets: title_author_image: crop from the first page containing the paper title and author block;framework_image: search the early and mid paper pages for the figure that is most likely to describe the proposed method, pipeline, architecture, workflow, or overall framework. Do not default to the first-page figure. Score candidate figures using nearby captions/text such asFigure,pipeline,framework,architecture,overview,workflow, orproposed method, and prefer pages around the method section. If no figure passes the quality bar, omit it.
- Write exactly one markdown file per category into
output_root. - Store extracted images under a predictable sibling folder, for example:
/assets/cat_01/cat_01_paper_001__title.png/assets/cat_01/cat_01_paper_001__framework.png
- In the markdown, embed images with relative paths so Obsidian can render them.
Safe naming rule for markdown image links
Do not use the paper title, original PDF filename, or any user-provided Unicode text when naming extracted PNG files.
- Some PDFs have Chinese filenames, spaces, punctuation, or other characters that can break markdown rendering in some environments.
- Always use the safe, manifest-driven naming scheme from
scan_paper_root.py: - category asset directory:
cat_ - per-paper base name:
cat__paper_ - Example:
assets/cat_02/cat_02_paper_003__title.pngassets/cat_02/cat_02_paper_003__framework.png- Keep the original paper title only inside the markdown content, never in the asset filename.
- When building markdown links, always use the generated relative path from this safe naming scheme.
Required paper fields
For every paper section, include:
- 标题
- 作者
- 年份
- 发表的期刊/会议
- github链接(如果有的话)
- 摘要式总结
- 核心贡献
- 方法
- 实验结论
- 局限性
- 你自己的启发
- Zotero 链接 / PDF 链接
Use 未找到 when a field is genuinely unavailable. For Zotero 链接, use 未提供 unless the user supplied a Zotero mapping. For PDF 链接, prefer the local absolute path or a vault-relative path if that is more useful.
Image rules
- Always include the title-authors image if extraction succeeded.
- Include the method/framework image only if extraction succeeded and looks plausibly relevant to the paper's method.
- Do not fabricate or hallucinate an image.
- If a framework image is missing, simply omit that image block.
- Prefer one framework image per paper.
- When uncertain, prefer omitting the framework image over using a likely wrong teaser, result chart, or first-page illustration.
Markdown format
Use the template in references/markdown_template.md. Add YAML frontmatter with category, sourceroot, and papercount. Use clear section headings so the note is readable in Obsidian.
Quality bar for summaries
- Base claims on the paper itself.
- Distinguish clearly between what the paper says and your own insight.
- Keep summaries concise but specific.
- Mention uncertainty when metadata or figure extraction is ambiguous.
Script usage
Inventory the paper tree:
python scripts/scan_paper_root.py "/path/to/A" --output-root "/path/to/output" --manifest /tmp/paper_manifest.json
Extract images for one PDF using a safe ASCII base name from the manifest:
python scripts/extract_pdf_assets.py "/path/to/paper.pdf" "/path/to/output/assets/cat_01" --base-name "cat_01_paper_001"
Example request
请读取下面这个论文目录,并把每个一级子文件夹汇总成一个 Obsidian markdown 文件,写入指定目录。
paper_root: /Users/qiqi/Documents/A
output_root: /Users/qiqi/Obsidian/MyVault/Paper Summaries
Source & license
This open-source skill is cataloged on AgentStack and links to its original source — we do not rehost the code.
- Author: WindZh03
- Source: WindZh03/zotero-obsidian-skill
- License: MIT
Install and usage instructions live in the source repository linked above.
Reviews
No reviews yet — be the first.
Write a review
Versions
- v0.1.0 Imported from the upstream source.