关于 organize-files
用于通过 MoviePilot 整理媒体文件的技能,涵盖识别、重复检查、受控转移和可选刮削。适合管理 MoviePilot 存储并需要保留已核实媒体身份与转移状态的用户。
主要功能
- 01检查限定范围的存储路径
- 02分类媒体并识别标题
- 03检查重复项和转移历史
- 04转移已核实的媒体单元
- 05可选刮削标签、封面和歌词
适用场景
- 01整理指定的电影或电视剧目录
- 02转移已核实的音乐专辑
- 03整理媒体前检查转移状态
MCP 相关
通过 MoviePilot API 操作检查存储、识别媒体、查询媒体库、转移文件,并可选刮削元数据。
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ jxxghp/ moviepilot --skill organize-files安装后在 Claude Code 中输入/organize-files确认已加载。
详细介绍
整理文件
所有 MoviePilot 业务操作都使用 moviepilot_api。已弃用的文件、识别、转移和历史工具不可用。
工作流
- 确定范围。如果用户提供了路径,就使用该路径。如果用户指出了下载器任务,就使用
downloader-operation及其固定的scripts/mp-downloader.py辅助脚本来发现实例并调用tasks.list。如果用户只指定了一个已配置的根目录,就调用storage.settings。使用storage.list检查选定目录。没有明确且范围有限的指定时,不要处理宽泛的共享根目录。 - 将文件分类为电影、剧集、单首音乐、一张完整专辑、字幕/附属文件或无关内容。不要仅仅因为无关媒体位于同一目录,就将它们归为一组。
- 使用代表性标题或路径调用
media.recognize。如果不确定,就调用media.search;如果仍有多个完全匹配的候选项,就使用ask_user_choice。绝不臆造或翻译 ID。 - 保留准确的
media_source+media_id。对于剧集,如果编号有歧义,就使用media.detail核实季详情。对于音乐,单首录音是一首曲目,专辑是一个包含多首曲目的目录,艺人仅用于浏览。 - 如果存在重复风险,就调用
library.exists。如果已有的转移记录会影响重新整理,就检查transfer.history。 - 在执行会改变状态的转移之前,总结来源、目标身份、媒体类型、季/音乐实体、存储位置和模式。只有当用户的请求已明确授权该具体操作,或用户确认后,才能继续。
- 对每个已核实的单元调用一次
transfer.file。对于专辑,仅当其支持的音频文件数量与所选专辑详情一致时,才转移一次整个专辑目录。 - 如果用户有此要求,就在转移成功后调用
media.scrape。报告实际的标签、封面和歌词数量;绝不要假定已找到所有歌词。
结构化调用
- 目录列表:在
body中通过存储位置/路径/分页/排序调用storage.list。 - 识别:在
query中通过标题/路径调用media.recognize。 - 搜索:在
query中通过标题/类型/来源约束调用media.search。 - 详情:通过
path_params.media_id以及query中的身份/类型调用media.detail。 - 媒体库检查:在
query中通过准确的身份调用library.exists。 - 转移:在
body中附带手动转移请求,调用transfer.file。 - 即使批次报告失败,实际转移响应也会包含
data.items。检查每项的state:accepted和retry_wait表示后台仍有任务;只有completed才确认执行并完成结算。manual_review要求先在转移队列中处理该任务;failed和skipped不代表已导入。不要重新提交已包含accepted或completed项的整个批次。预览响应仅包含规划数据,不包含执行状态。 - 抓取:在
body中附带文件项,在query中附带准确的身份/类型字段,并通过path_params.storage调用media.scrape。
如果源文件缺失、目录配置不存在、身份仍有歧义、专辑看起来混杂或不完整,或请求的目标会覆盖无关媒体,请停止并报告,不要转移。
整理恢复与历史上下文
保留 storage.list 返回的完整文件项,包括可选的 modify_time_ns 和
change_time_ns;不要自行生成本地版本凭据。恢复发现源或目标版本变化时,
应报告人工复核状态并保留现场,不通过重新提交整个批次绕过核验。
复用历史整理电视剧时保留 episode_group;不同剧集组分批处理。
目录整理的 overwrite_skipped 同样表示未导入,不能报告为成功。
评论
支持 Markdown