3.4 KiB
Zotero Obsidian Literature Skill
Codex skill for managing a Zotero-to-Obsidian literature workflow.
It helps generate Zotero child-note AI reading notes, audit missing generated notes, maintain Obsidian literature notes, and build Dataview dashboards without committing private API keys.
What It Does
- Generates AI literature notes as Zotero child notes.
- Uses Obsidian templates and prompt files from the target vault.
- Supports one item, selected item keys, or approved whole-library batches.
- Audits Zotero items that are missing generated AI notes.
- Keeps real Zotero and DeepSeek/AwesomeGPT credentials in a local ignored config file.
- Provides Obsidian integration guidance for Dataview and Markdown maintenance.
Repository Layout
.
|-- SKILL.md
|-- agents/
| `-- openai.yaml
|-- config/
| `-- config.template.json
|-- references/
| |-- obsidian-integration.md
| |-- obsidian-literature-maintenance.md
| |-- upgrade-plan.md
| `-- upstream-obsidian-skills.md
`-- scripts/
|-- audit_zotero_ai_notes.py
|-- generate_zotero_ai_note.py
`-- init_private_config.py
Requirements
- Zotero Desktop is open.
- Zotero Local API is enabled at
http://127.0.0.1:23119. - Python launcher
pyis available on Windows. - The default Obsidian vault is
C:\Users\qyh15\Documents\Obsidian Vault. - The vault contains the expected templates under
00 Templater. - A Zotero Web API key is available for note writes.
- DeepSeek or another OpenAI-compatible endpoint is configured through AwesomeGPT settings, environment variables, or the local private config.
Private Config
Do not commit real API keys.
The committed file is only a template:
config/config.template.json
Create the local ignored config with:
py "$env:USERPROFILE\.codex\skills\zotero-obsidian-literature\scripts\init_private_config.py"
This writes:
config/config.local.json
config/config.local.json is ignored by Git. Do not paste its contents into chat, logs, README files, or committed examples.
Common Commands
Generate a note for one Zotero item:
py "$env:USERPROFILE\.codex\skills\zotero-obsidian-literature\scripts\generate_zotero_ai_note.py" --vault "C:\Users\qyh15\Documents\Obsidian Vault" --item-key SXAIQUJT --skip-existing
Generate notes for selected items:
py "$env:USERPROFILE\.codex\skills\zotero-obsidian-literature\scripts\generate_zotero_ai_note.py" --vault "C:\Users\qyh15\Documents\Obsidian Vault" --item-keys "SXAIQUJT X7GJZ627 ZCZXGRAM" --limit 0 --skip-existing --fulltext-chars 4000
Audit missing generated notes:
py "$env:USERPROFILE\.codex\skills\zotero-obsidian-literature\scripts\audit_zotero_ai_notes.py" --vault "C:\Users\qyh15\Documents\Obsidian Vault" --keys-only
Rebuild the audit cache:
py "$env:USERPROFILE\.codex\skills\zotero-obsidian-literature\scripts\audit_zotero_ai_notes.py" --vault "C:\Users\qyh15\Documents\Obsidian Vault" --rebuild
Batch Safety
Whole-library generation writes many Zotero child notes. Use it only after explicitly confirming the target library and write scope.
For long runs, prefer batches of 20-30 items and keep --skip-existing enabled so interrupted runs can resume without duplicating notes.
Git
Current remote:
git@git.qyhhh.top:Skills/MYwirte-skill.git
Recommended push command in this environment:
& "$env:USERPROFILE\.codex\tools\mingit\cmd\git.exe" push