skills/cafe3310/public-agent-skills/obsidian-knowledge-filter

obsidian-knowledge-filter

SKILL.md

技能: Obsidian 知识筛选器 (Obsidian Knowledge Filter)

描述

此技能旨在从由大量 Markdown 文件组成的知识库(例如 Obsidian Vault)中,通过一个精确且分阶段的工作流,进行知识的检索、筛选和提取。它采用带编号前缀的 YAML 和 Markdown 文件来管理每一步的中间数据,并在每个关键步骤暂停以供用户审阅,确保最终产出的内容高度相关且无重复。

核心理念: 此技能的目标是在用户的指导下,通过一系列独立的脚本和分析步骤,精确地从知识库中提炼与特定主题相关的信息,并通过结构化的方式呈现,最终形成综合分析报告。

何时使用

当用户请求您通过查找、关联和综合分散在个人知识库中的信息来解决复杂问题时,请使用此技能。此工作流特别适用于需要高精度、希望减少冗余信息并全程参与筛选过程的场景。

工作流程

该过程分为四个主要阶段,每个阶段都以用户审阅为节点。

阶段 1: 关键词搜索与分析

步骤 1.1: 运行分析脚本 001_analyze_files.py

此脚本递归地在指定目录中搜索所有 .md 文件,并执行以下操作:

  • 文件排除: 自动跳过任何路径中包含 tmp-, _attachments, 或 .trash 的文件/目录。

  • 关键词分析: 查找包含指定关键词的文件,记录每个关键词的出现频率。

  • 上下文合并: 将包含关键词的行的上下文(默认为前后 10 行)合并成连续的行号区间。

  • 输出: 在一个新建的 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]   # 第二个内容提取区间

步骤 1.2: 用户审阅分析文件

Agent 暂停并请求用户审阅 001_analysis.yaml,用户可手动编辑此文件以增删文件或修改行号区间。

阶段 2: 内容提取与清理

步骤 2.1: 运行提取脚本 002_extract_content.py

用户确认后,此脚本会读取 001_analysis.yaml,并根据其中的 file_pathline_ranges 提取相应的内容。

  • 内容清理: 在提取内容后,脚本会执行以下三项自动清理:

    1. 合并换行: 将连续的多个换行符合并为一个。
    2. 移除加粗: 删除所有的 Markdown 加粗标记 (**)。
    3. 移除图片: 删除所有的 Markdown 图片链接 (![[...]])。
  • 输出: 在同一个临时目录中,生成 002_content.yaml,其结构与 001_analysis.yaml 类似,但每个对象都增加了一个 content 字段。


002_content.yaml 格式详解:

- file_path: '文件夹/2025-12-29-示例文件.md'
  keyword_counts:
    # ... (同上)
  line_ranges:
    # ... (同上)
  content: "这是从文件中提取并清理后的文本内容...\n..."

步骤 2.2: 用户审阅内容文件

Agent 再次暂停,请求用户审阅 002_content.yaml,确保提取和清理后的内容符合预期。

阶段 3: 内容洞察综合

步骤 3.1: Agent 进行分块综合分析

用户确认后,Agent 开始对 002_content.yaml 进行智能分析。为提升效率并保证分析的连贯性,Agent 采用分块「读取-分析-写出」循环模式:

  1. 分块读取: Agent 以 1000 行为单位,逐块读取 002_content.yaml 文件;例如,第一次会读取 1-1000 行。
  2. 综合分析: 针对刚才读取的 整个内容块(其中可能包含多个文件片段),Agent 在内部进行一次性综合分析,提炼出所有与用户任务相关的洞察、观点和联系。
  3. 单次写入: Agent 将 2 产生的分析洞察,一次性地追加写入到 003_content_analysis.md 文件中,清晰地标注每个洞察来源于哪个文件。
  4. 循环执行: 跳到 1 继续下一块,直到处理完所有内容块。

这种方法避免了逐条分析的低效与碎片化,确保了分析过程的流畅性和上下文关联性。

  • 输出: 003_content_analysis.md,其中包含了对所有文件片段的综合洞察。

步骤 3.2: 用户审阅洞察文件

Agent 完成所有内容块的分析后,暂停并请求用户审阅最终生成的 003_content_analysis.md,确认洞察的准确性和深度。

阶段 4: 最终报告合成

步骤 4.1: Agent 生成最终报告

在用户完成最终审阅后,Agent 将以 003_content_analysis.md 为素材,撰写一份逻辑连贯、结构清晰的最终报告。

  • 输出: 004_report.md

步骤 4.2: 提交结果

Agent 向用户提交最终的 04_report.md 报告。

Weekly Installs
7
GitHub Stars
155
First Seen
14 days ago
Installed on
opencode7
gemini-cli7
claude-code7
github-copilot7
amp7
cline7