cafe3310/obsidian-knowledge-filter
从知识库目录中检索、筛选和提取特定关键词相关知识
npx skills add https://github.com/cafe3310/public-agent-skills --skill obsidian-knowledge-filter
此技能旨在从由大量 Markdown 文件组成的知识库(例如 Obsidian Vault)中,通过一个精确且分阶段的工作流,进行知识的检索、筛选和提取。它采用带编号前缀的 YAML 和 Markdown 文件来管理每一步的中间数据,并在每个关键步骤暂停以供用户审阅,确保最终产出的内容高度相关且无重复。
核心理念: 此技能的目标是在用户的指导下,通过一系列独立的脚本和分析步骤,精确地从知识库中提炼与特定主题相关的信息,并通过结构化的方式呈现,最终形成综合分析报告。
当用户请求您通过查找、关联和综合分散在个人知识库中的信息来解决复杂问题时,请使用此技能。此工作流特别适用于需要高精度、希望减少冗余信息并全程参与筛选过程的场景。
该过程分为四个主要阶段,每个阶段都以用户审阅为节点。
001_analyze_files.py此脚本递归地在指定目录中搜索所有 .md 文件,并执行以下操作:
tmp-, _attachments, 或 .trash 的文件/目录。tmp-YYYY-MM-DD-HH-MM-SS-analysis/ 临时目录中,生成 001_analysis.yaml。001_analysis.yaml 格式详解:
这是一个 YAML 文件,包含一个文件信息对象的列表。每个对象都具有以下结构:
- file_path: '文件夹/2025-12-29-示例文件.md' # 相对于当前工作目录的路径
keyword_counts:
- word: '关键词1'
count: 5
- word: '关键词2'
count: 2
line_ranges:
- [10, 30] # 第一个内容提取区间
- [45, 65] # 第二个内容提取区间
Agent 暂停并请求用户审阅 001_analysis.yaml,用户可手动编辑此文件以增删文件或修改行号区间。
002_extract_content.py用户确认后,此脚本会读取 001_analysis.yaml,并根据其中的 file_path 和 line_ranges 提取相应的内容。
**)。![[...]])。002_content.yaml,其结构与 001_analysis.yaml 类似,但每个对象都增加了一个 content 字段。002_content.yaml 格式详解:
- file_path: '文件夹/2025-12-29-示例文件.md'
keyword_counts:
# ... (同上)
line_ranges:
# ... (同上)
content: "这是从文件中提取并清理后的文本内容...\n..."
Agent 再次暂停,请求用户审阅 002_content.yaml,确保提取和清理后的内容符合预期。
用户确认后,Agent 开始对 002_content.yaml 进行智能分析。为提升效率并保证分析的连贯性,Agent 采用分块「读取-分析-写出」循环模式:
002_content.yaml 文件;例如,第一次会读取 1-1000 行。003_content_analysis.md 文件中,清晰地标注每个洞察来源于哪个文件。这种方法避免了逐条分析的低效与碎片化,确保了分析过程的流畅性和上下文关联性。
003_content_analysis.md,其中包含了对所有文件片段的综合洞察。Agent 完成所有内容块的分析后,暂停并请求用户审阅最终生成的 003_content_analysis.md,确认洞察的准确性和深度。
在用户完成最终审阅后,Agent 将以 003_content_analysis.md 为素材,撰写一份逻辑连贯、结构清晰的最终报告。
004_report.mdAgent 向用户提交最终的 04_report.md 报告。
Take cafe3310/obsidian-knowledge-filter from the repository into ~/.claude/skills for personal
use, or into .claude/skills inside a project.
The agent identifies a skill by the name field in its header. Two skills with the
same name cannot sit side by side — one of them will be ignored.