organize-temp-notes

star 0

把本 Obsidian Vault 中 temp/ 下的新增临时笔记归档到 知识库/ 对应目录。 支持按主题拆分成多个文件、自动迁移附件、智能合并到已有笔记、可配置分类与干运行模式。 仅适用于本 Vault(含 知识库/ 与 temp/)。 触发:用户用中文要求「整理 temp 笔记」「把 temp 整理到知识库」「temp 归档」「temp 归位」等。

qfuzj By qfuzj schedule Updated 6/12/2026

name: organize-temp-notes description: > 把本 Obsidian Vault 中 temp/ 下的新增临时笔记归档到 知识库/ 对应目录。 支持按主题拆分成多个文件、自动迁移附件、智能合并到已有笔记、可配置分类与干运行模式。 仅适用于本 Vault(含 知识库/ 与 temp/)。 触发:用户用中文要求「整理 temp 笔记」「把 temp 整理到知识库」「temp 归档」「temp 归位」等。

Organize Temp Notes

temp/ 下的临时笔记安全、智能地归档到 知识库/ 对应目录。全程中文交互。

核心流程

1. 扫描待整理文件

  • 列出 temp/ 下所有 .md 文件,忽略 .DS_Store 与子目录(仅处理一级文件)。
  • 若 temp 为空,回复「暂无临时笔记需要整理」并结束。

2. 解析内容并生成操作计划(干运行)

对每一篇 temp/<文件名>.md 执行以下步骤,先不移动文件,仅生成《整理操作清单》。

2.1 拆分判定(可选特性)

  • 扫描全文,检测是否存在明确主题分隔符:
    • 一级标题 # (多个)
    • 分隔线 ---***
    • 自定义标记 ## 话题: 开头的二级标题
  • 如果存在 ≥2 个分隔单元,且不同单元匹配到不同目标目录,则将原文件拆分为多个独立笔记
    • 每个单元生成独立文件,文件名按目标目录的命名风格生成(例如 Redis缓存穿透解决方案.md)。
    • 在原 temp 文件中追加一条「拆分索引」区块,列出所有拆分后的笔记链接。
    • 若所有单元指向同一目录,或拆分后仍只有 1 个文件,则按整篇移动处理。
  • 当无法自动判定是否拆分时,使用 AskUserQuestion 向用户展示拆分方案并确认。

2.2 目标目录匹配

  • 优先使用用户自定义配置:检查 Vault 根目录下是否存在 .organize-config.json,内容格式如:

    {
      "rules": [
        { "keywords": ["Redis", "缓存"], "target": "知识库/02_后端/Redis" },
        { "keywords": ["Vue3", "前端"], "target": "知识库/03_前端" }
      ]
    }
    

    若存在,则按规则顺序匹配(命中任一关键词即采纳对应目标目录)。

  • 回退到内置归类表(见下方「归类参考」)。提取笔记主要关键词(标题、标签、高频技术词),与目录映射匹配。

  • 若无法唯一确定,用 AskUserQuestion 让用户手动选择目标目录。

2.3 附件(图片)处理

  • 搜索笔记中的内嵌资源引用:
    • ![[文件名]] 格式(Obsidian 内部链接)
    • ![](相对路径) 格式
  • 对所有引用的文件进行定位:
    • 如果源文件位于 temp/ 下(如 temp/attachments/xx.png),将其移动到 知识库/99_附件/ 统一附件目录(可配置,通过 .organize-config.json 中的 attachmentRoot 字段指定,默认为 知识库/99_附件)。
    • 将笔记中的引用链接更新为新路径。
  • 若引用的是 Vault 中已存在的外部附件(不在 temp 下),检查移动后链接是否依然有效,必要时修正相对路径,但绝不移动原附件。
  • 对于 Obsidian 特有 ![[xxx]] 链接,移动后确保内部链接能精确指向新位置(需验证文件存在)。

2.4 已有文件处理策略

  • ls 检查目标目录下是否已存在同名或高度相似的文件。
  • 若目标位置有且仅为占位骨架(内容几乎为空,仅含类似 > 状态:待补充 或空标题):
    • 将 temp 内容与骨架进行智能合并(见 2.5),最终保留合并后的完整笔记,删除原 temp 文件。
  • 若已有内容丰富的正式笔记
    • 默认不覆盖,使用 AskUserQuestion 向用户展示 diff,询问「替换 / 合并 / 跳过」。
    • 合并时采用智能合并策略。
  • 若目标位置无文件,直接计划移动。

2.5 智能合并策略(当需要合并时)

  • 解析两个文件的标题结构(# ~ ######)。
  • 同名标题下的内容:进行段落级去重比较(简单策略:比较纯文本内容相似度,忽略空白,若相似度 > 80% 则视为重复,仅保留一份)。
  • Temp 独有的标题及内容:按原层级插入到合适位置(尽可能保持原有结构)。
  • 若 temp 中提供了现有标题下缺失的细节要点(列表项、代码块等),追加到该标题末尾,并加上 <!-- migrated from [[temp/原文件名]] --> 注释。
  • 合并后生成预览(新增/修改部分),用 AskUserQuestion 请用户确认。

3. 用户确认与执行

  • 将完整的《整理操作清单》以表格形式展示给用户:
原文件 (temp/) 操作 目标路径 (知识库/) 备注
学习笔记.md 拆分为3篇 02_后端/Redis/...、03_前端/...、01_基础/算法/... 需要迁移2张图片
零碎记录.md 移动 07-琐碎知识/零碎记录.md 附件无需移动
项目总结.md 合并到已有文件 04_项目/旅行推荐/项目总结.md 将补充3个新段落
  • 用户确认后,逐条执行:
    1. 确保目标父目录存在(mkdir -p)。
    2. 执行文件移动(mvgit mv)。移动语义,不复制
    3. 如需合并,先写出合并后的完整内容到目标文件,再删除 temp 原文件。
    4. 执行附件移动及链接重写。
    5. 若原 temp 文件被拆分,在所有拆分出的新文件中写入头部元信息(可选):原临时笔记:[[temp/原文件名]](已拆分)

4. 关联笔记(可选)

严格验证以下三条后,才在笔记末尾添加 ## 关联笔记 区块:

  • 候选笔记真实存在于知识库中(用 ls / Read 验证完整路径)。
  • 候选笔记不是空骨架(内容 > 200 字符,且不含 > 状态:待补充)。
  • 与当前笔记强相关(主题重叠度高,或有明确引用关系)。

新策略

  • 不仅利用 temp 内容中出现的 [[链接]],还可以根据关键词自动检索知识库中匹配的笔记作为关联候补。
  • 如果目标目录下有 README.md索引.md,优先将其作为关联链接,而非散列多个碎片笔记。
  • 若 temp 中已有手写 ## 关联笔记优先使用并保留其中已验证的链接,仅补充自动发现的、且不重复的链接。
  • 有效关联不足 2 条时,直接不写该区块。

5. 完成报告

用中文简短汇报:

  • 每个文件的处理结果(temp/xxx.md知识库/...,拆分为几篇,是否合并,是否迁移附件)。
  • 关联笔记添加情况(例如「为 2 篇笔记添加了关联区块」)。
  • 执行 git status(若可用)展示变更摘要。
  • 若存在因占位骨架未处理的文件,单独列出「可清理的占位笔记」清单,供用户手动决策。

归类参考(内置默认)

当无自定义配置时,按以下规则匹配(关键词不区分大小写):

主题关键词 目标目录
网络, 操作系统, 算法, 数据结构, 设计模式 知识库/01_基础/ 对应子目录
Java, JVM, Spring, 数据库, 中间件, 运维, 测试 知识库/02_后端/ 对应子目录
Vue3, 前端工程化 知识库/03_前端/
旅行推荐项目 知识库/04_项目/旅行推荐/
面试回顾 知识库/05_日常/面试回顾/
Claude Code, AI Agent, AI 系统架构 知识库/06-AI/
Redis/Spring 等碎片问题 知识库/07-琐碎知识/
创业, 社群, 商业观察 知识库/08-其他知识/

若多个关键词指向不同目录,取优先级最高的目录(按表格从上到下顺序),或交由用户选择。

全局约束

  • 语言:所有输出(提示、确认、报告)均为中文。
  • 文件操作:只移动不复制;temp 原文件在确认迁移成功后删除。绝不动知识库/ 下的已有笔记(除非主动合并)。
  • 版本控制:不主动执行 git commit(由 obsidian-git 自动备份)。可使用 git mv 以保留历史。
  • 引用规范:所有提及笔记时,必须使用完整 vault 相对路径的 wiki 链接,如 [[知识库/02_后端/Redis/缓存穿透.md|缓存穿透]]
  • 不强制添加 Frontmatter:除非笔记本身已包含或用户明确要求。
  • 附件路径:迁移后确保附件在 Obsidian 内可解析(通过 ![[知识库/99_附件/xxx.png]] 或相对路径)。

严禁事项

  • ❌ 不新建只含「> 状态:待补充」及空标题的占位骨架笔记。
  • ❌ 不照搬 wiki/domains/*.md 等过时索引中的双链作为关联(必须经过实时 ls 验证)。
  • ❌ 未经用户确认,不删除任何知识库内已有文件。
  • ❌ 不在合并时简单全文追加导致大量重复。
  • ❌ 不忽略图片/附件迁移,导致笔记打开后图片无法显示。

配置文件的详细说明(可选实现)

用户可在 Vault 根目录放置 .organize-config.json,内容示例:

{
  "attachmentRoot": "知识库/99_附件",
  "rules": [
    { "keywords": ["Redis"], "target": "知识库/02_后端/Redis" },
    { "keywords": ["算法", "数据结构"], "target": "知识库/01_基础/算法" }
  ],
  "defaultTarget": "知识库/07-琐碎知识"
}

Skill 启动时应检查该文件,优先于内置表。

Install via CLI
npx skills add https://github.com/qfuzj/Learning-documents --skill organize-temp-notes
Repository Details
star Stars 0
call_split Forks 0
navigation Branch main
article Path SKILL.md
More from Creator