Bidirectional sync between Obsidian PKM (human-friendly notes) and structured ontology (machine-queryable graph). Automatically extracts entities and relatio...
数据来源:ClawHub。 在 ClawSkills 查看
选择你使用的 Agent
方法一:命令行安装(推荐)
推荐(无需提前安装 clawhub)
npx clawhub@latest --dir ~/.claude/skills install obsidian-ontology-sync或使用 clawhub CLI(需提前安装)
clawhub --dir ~/.claude/skills install obsidian-ontology-sync⚠️ 需要 Node.js 18+,没有 Node?请使用下方方法二直接下载 ZIP。 安装 Node.js →
方法二:手动下载安装(无需 Node)
下载 ZIP,解压后将文件夹放到以下路径,重启 Agent 即可:
安装路径
~/.claude/skills/obsidian-ontology-sync/💡解压后将文件夹放到上方路径,重启 Agent 即可生效
--- name: obsidian-ontology-sync description: Bidirectional sync between Obsidian PKM (human-friendly notes) and structured ontology (machine-queryable graph). Automatically extracts entities and relationships from markdown, maintains ontology graph, and provides feedback to improve note structure. Run sync every few hours via cron. metadata: { "tags": ["obsidian", "ontology", "knowledge-graph", "pkm", "automation"], "openclaw": { "requires": { "skills": ["obsidian", "ontology"] } } } ---
Philosophy: Obsidian is PRIMARY (human writes natural notes) → Ontology is DERIVED (machine extracts structure) → Feedback loop improves both
Obsidian Notes (Markdown)
↓ Extract (every 3 hours)
Ontology Graph (Structured)
↓ Query & Analyze
Insights & Suggestions
↓ Feedback
Improved Note Templates
| Situation | Action | |-----------|--------| | After creating/updating contacts | Run sync to extract entities | | Before business queries | Sync then query ontology | | Weekly review | Sync + analyze + get suggestions | | New project setup | Extract entities + suggest structure | | Team status tracking | Sync daily-status → ontology → analytics |
references/contacts/*.md)Extracts:
Person entity (name, email, phone)works_at → Organizationmet_at → Eventassigned_to → Project (if mentioned)status → (prospect, warm_lead, client, etc.)Example:
# Alice Johnson
**Email:** [email protected]
**Company:** Acme Corp
**Met At:** Tech Conference 2026
**Projects:** Project Alpha
## Notes
Great developer, responsive communication.
Becomes:
{
"entity": {
"id": "person_alice_johnson",
"type": "Person",
"properties": {
"name": "Alice Johnson",
"email": "[email protected]",
"notes": "Great developer, responsive communication"
}
},
"relations": [
{"from": "person_alice_johnson", "rel": "works_at", "to": "org_acme"},
{"from": "person_alice_johnson", "rel": "met_at", "to": "event_tech_conference_2026"},
{"from": "person_alice_johnson", "rel": "assigned_to", "to": "project_alpha"}
]
}
references/clients/*.md)Extracts:
Organization entityhas_contract_value → numberprojects → Project entitiesprimary_contact → Personreferences/team/*.md)Extracts:
Person entityworks_for → Organizationassigned_to → Project[]reports_to → Personresponse_pattern → (proactive, reactive, non-responsive)daily-status/YYYY-MM-DD/*.md)Extracts:
response_time property on Personstatus_update → Eventblockers → Issue entitiesbehavioral_pattern trackingprojects/*.md)Extracts:
Project entityfor_client → Organizationteam → Person[]status, value, deadline# Run extraction
python3 skills/obsidian-ontology-sync/scripts/sync.py extract
# What it does:
# 1. Scan configured Obsidian directories
# 2. Parse markdown frontmatter + content
# 3. Extract entities (Person, Project, Organization, etc.)
# 4. Extract relationships (works_at, assigned_to, etc.)
# 5. Write to ontology using append-only operations
Detection Rules:
# Contact files
if file.startswith("references/contacts/"):
entity_type = "Person"
extract_email_from_content()
extract_company_from_property("Company:")
extract_projects_from_links([[Project]])
# Client files
if file.startswith("references/clients/"):
entity_type = "Organization"
extract_contract_value()
extract_projects()
# Team files
if file.startswith("references/team/"):
entity_type = "Person"
role = "team_member"
extract_assignments()
extract_response_patterns()
# Run analytics
python3 skills/obsidian-ontology-sync/scripts/sync.py analyze
# Generates insights like:
# - "3 team members have no assigned projects"
# - "Contact 'John Doe' missing email address"
# - "Project 'X' has 5 people but no client linked"
# - "10 contacts from AI Summit not linked to follow-up tasks"
# Get suggestions
python3 skills/obsidian-ontology-sync/scripts/sync.py feedback
# Creates:
# - Missing property suggestions
# - Broken link reports
# - Relationship suggestions
# - Template improvements
Example Feedback:
# Sync Feedback - 2026-02-27
## Missing Information (10 items)
- [ ] `Alice Johnson` missing phone number
- [ ] `Bob` missing email in team file
- [ ] Project `Project Alpha` missing deadline
## Suggested Links (5 items)
- [ ] Link `Jane Doe` (TechHub) to organization `TechHub`
- [ ] Link `Eve` to project (found in daily-status but not in team file)
## Relationship Insights
- `Project Alpha` team: Alice, Carol, David (extracted from daily-status)
- Suggest updating project file with team assignments
## Template Suggestions
- Add `Projects: [[]]` field to contact template
- Add `Response Pattern:` field to team template
# /root/life/pkm/ontology-sync/config.yaml
obsidian:
vault_path: /root/life/pkm
# What to sync
sources:
contacts:
path: references/contacts
entity_type: Person
extract:
- email_from_content
- company_from_property
- projects_from_links
clients:
path: references/clients
entity_type: Organization
extract:
- contract_value
- projects
- contacts
team:
path: references/team
entity_type: Person
role: team_member
extract:
- assignments
- response_patterns
- reports_to
daily_status:
path: daily-status
extract:
- response_times
- behavioral_patterns
- blockers
ontology:
storage_path: /root/life/pkm/memory/ontology
format: jsonl # or sqlite for scale
# Entity types to track
entities:
- Person
- Organization
- Project
- Event
- Task
# Relationships to extract
relationships:
- works_at
- assigned_to
- met_at
- for_client
- reports_to
- has_task
- blocks
feedback:
output_path: /root/life/pkm/ontology-sync/feedback
generate_reports: true
suggest_templates: true
highlight_missing: true
schedule:
# Run via cron every 3 hours
sync_interval: "0 */3 * * *"
analyze_daily: "0 9 * * *" # 9 AM daily
feedback_weekly: "0 10 * * MON" # Monday 10 AM
# Add to OpenClaw cron
python3 skills/obsidian-ontology-sync/scripts/setup-cron.py
# Or manually via cron tool
cron add \
--schedule "0 */3 * * *" \
--task "python3 skills/obsidian-ontology-sync/scripts/sync.py extract" \
--label "Obsidian → Ontology Sync"
Cron Jobs Created:
Once synced, you can query:
# All team members on high-value projects
python3 skills/ontology/scripts/ontology.py query \
--type Person \
--where '{"role":"team_member"}' \
--related assigned_to \
--filter '{"type":"Project","value__gt":400000}'
# Contacts from specific event not yet followed up
python3 skills/ontology/scripts/ontology.py query \
--type Person \
--where '{"met_at":"event_tech_conference_2026"}' \
--missing has_task
...安装 Obsidian Ontology Sync 后,可以对 AI 说这些话来触发它
Help me get started with Obsidian Ontology Sync
Explains what Obsidian Ontology Sync does, walks through the setup, and runs a quick demo based on your current project
Use Obsidian Ontology Sync to bidirectional sync between Obsidian PKM (human-friendly notes) and ...
Invokes Obsidian Ontology Sync with the right parameters and returns the result directly in the conversation
What can I do with Obsidian Ontology Sync in my documents & notes workflow?
Lists the top use cases for Obsidian Ontology Sync, with example commands for each scenario
将技能文件夹放到 ~/.claude/skills/obsidian-ontology-sync/ 目录(个人级,所有项目可用),或 .claude/skills/obsidian-ontology-sync/(项目级)。重启 AI 客户端后,用 /obsidian-ontology-sync 主动调用,或让 AI 根据上下文自动发现并使用。
Obsidian Ontology Sync 支持 Claude、Cursor、OpenClaw,可与这些 AI 平台无缝集成,扩展其能力。
Obsidian Ontology Sync 可免费安装使用。请查阅仓库了解许可证信息。
Bidirectional sync between Obsidian PKM (human-friendly notes) and structured ontology (machine-queryable graph). Automatically extracts entities and relatio...
Obsidian Ontology Sync 属于「Documents & Notes」分类,该分类的技能帮助 AI 智能体在此领域执行专业任务。
Automate my documents & notes tasks using Obsidian Ontology Sync
Identifies repetitive steps in your workflow and sets up Obsidian Ontology Sync to handle them automatically