关于 smart-folder-organizer
Smart Folder Organizer 是用于安全整理目录及其子目录文件的技能。它会识别并保留项目类文件夹,通过 SHA-256 查找重复文件,并按类别整理文档,将不确定的项目留待检查。
主要功能
- 01识别项目文件夹和应用包
- 02使用 SHA-256 查找重复文件
- 03按类型归类文件
- 04分类并重命名 PDF
- 05将不确定文件留待检查
- 06仅在目标目录树内操作
适用场景
- 01整理混杂的下载目录
- 02归类文档并提取 PDF 信息
- 03在不删除文件的情况下分离重复项和空文件夹
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ yuan-93/ smart-folder-organizer-skill --skill smart-folder-organizer安装后在 Claude Code 中输入/smart-folder-organizer确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
references/classification.mdscripts/detect_smart_folders.pyextract_pdf_metadata.pyfind_duplicates.py详细介绍
智能文件夹整理器
此技能提供了一套结构化工作流,用于整理杂乱的目录,同时确保数据安全。
核心要求
- 安全第一:绝不删除任何文件。将打算删除的文件移至
to_remove/下的指定子文件夹(例如to_remove/duplicates/或to_remove/empty_folders/)。 - 严格限定范围:仅在当前目录及其子目录中操作。绝不移动或访问父目录(
..)中的文件。 - 保留原则:如果无法明确判断某个文件的类别,请将其移至
Needs_Review/文件夹,而不是贸然归类。 - 大文件:对于任何大于 20MB 的文件,请跳过深度内容分析(例如读取 PDF 文本),以避免内存问题。将这些未经分析的大文件移至专用目录
Needs_Review/LargeFiles/。 - 文件夹处理:递归处理当前目录及其子目录中的所有文件。移动文件时,将它们放入目标目录根目录下按类别划分的文件夹中(不要在每个子目录内重复创建类别结构)。发现或遗留下来的空子目录都必须移至
to_remove/empty_folders/。
工作流
1. 智能文件夹检测
在处理单个文件之前,运行 scripts/detect_smart_folders.py <target_dir>,识别已经整理完善的子目录(例如 git 仓库、软件项目、macOS 应用包)。
- 操作:将检测到的每个文件夹整体移至
Others/— 不要进入或重新整理其中的内容。 - 原理:该脚本会检查项目标记(
.git/、package.json、Cargo.toml、Makefile等)和应用包(.app),并返回包含匹配项及其原因的 JSON 列表。 - 跳过:后续所有步骤都应忽略
Others/目录。
2. 重复文件检测
运行 find_duplicates.py 脚本,识别内容相同的文件。
- 操作:将识别出的重复文件移至
to_remove/duplicates/。 - 原理:通过
scripts/find_duplicates.py脚本使用文件哈希(SHA256),确保结果具有确定性。
3. 常规分类
按扩展名和常见模式整理文件:
- 照片:移至
Photos/。(屏幕截图移至Photos/Screenshots/) - 视频:移至
Videos/。 - 安装程序:移至
Installers/(.dmg、.pkg、.exe、.msi)。 - 归档文件:移至
Archives/(.zip、.rar等)。
4. PDF 深度分析
对于 PDF 文件,读取前几页以确定文档类型并提取元数据,以便重命名。
- 重要:不要生成动态 Python 脚本来读取 PDF。请改为执行此技能提供的
scripts/extract_pdf_metadata.py脚本,以提取文本并以确定性的方式分析文档。该脚本使用pypdf和抽样策略(前 3 页及最后一页),以快速高效地完成分类。 - 重要:使用通用语义推理对文档进行分类。现代 AI 模型可以理解数十种语言(英语、中文、西班牙语等);分类时应优先考虑文档的_意图_(例如“请求付款”),而不是“Invoice”之类的特定英语关键词。语义指南请参阅
references/classification.md。 - 多语言命名:对于非英语文档,请使用其原始文字提取命名信息(例如 [Vendor] 或 [Provider])。标准日期格式
yyyy-mm-dd保持不变。 - 发票:重命名为
yyyy-mm-dd-[Vendor]-[Inv#-][Amount].pdf,并移至Documents/Invoices/。 - 账单:重命名为
yyyy-mm-dd-[Provider]-[Service]-[Account#].pdf,并移至Documents/Bills/。 - 收据:重命名为
yyyy-mm-dd-[Store]-[TotalAmount].pdf,并移至Documents/Receipts/。 - 旅行:重命名为
yyyy-mm-dd-[Transport/Hotel]-[Confirmation#].pdf,并移至Documents/Travel/。
5. 最终清理
- 将写作文档(
.docx、.doc、.pages、.odt)归入Documents/Writing/。 - 将电子表格文件(
.xlsx、.xls、.numbers、.ods、.csv)归入Documents/Spreadsheets/。 - 将演示文稿文件(
.ppt、.pptx、.key、.odp)归入Documents/Presentations/。 - 将音频文件(
.mp3、.wav、.flac、.m4a)归入Audio/。 - 按子类型(如适用),将其余文档归入
Needs_Review/Documents/。 - 如果已分析 PDF 文档但无法确定其类别,请将其移至
Needs_Review/Unknown/。 - 将其他所有未处理的文件移至
Needs_Review/。
资源
scripts/find_duplicates.py
一个可确定性查找相同文件的 Python 脚本。它使用 SHA-256 哈希比较文件内容,而不是依赖文件名或大小,并以 JSON 列表的形式返回重复文件。
scripts/extract_pdf_metadata.py
一个使用 pypdf 库从 PDF 提取文本的 Python 辅助脚本。请使用此脚本,不要自行编写脚本。它采用抽样策略(前 3 页和最后 1 页),高效提取用于文档分类的文本,并以 JSON 封装格式返回文本。
scripts/detect_smart_folders.py
一个扫描目标文件夹的直接子目录、查找项目标记(.git/、package.json、Cargo.toml、Makefile 等)和应用程序包(.app)的 Python 脚本。该脚本以 JSON 列表的形式返回检测到的“智能”文件夹,这些文件夹应移至 Others/,且不应拆分。
references/classification.md
包含 PDF 和其他文档类型的详细关键词列表与命名规范。