About organize-files
A MoviePilot skill for organizing media files through recognition, duplicate checks, controlled transfers, and optional scraping. It is intended for users managing MoviePilot storage while preserving verified media identities and transfer state.
Key features
- 01Inspect scoped storage paths
- 02Classify media and recognize titles
- 03Check duplicates and transfer history
- 04Transfer verified media units
- 05Optionally scrape tags, covers, and lyrics
Use cases
- 01Sort a selected movie or TV folder
- 02Transfer a verified music album
- 03Check transfer state before reorganizing media
MCP support
Uses MoviePilot API operations to inspect storage, recognize media, check the library, transfer files, and optionally scrape metadata.
Install
Copy the command and run it in a terminal.
npx skills add https:/ / github.com/ jxxghp/ moviepilot --skill organize-filesAfter installing, type/organize-filesin Claude Code to confirm it loaded.
Details
From the project READMEOrganize Files
Use moviepilot_api for every MoviePilot business operation. Retired file,
recognition, transfer, and history tools are not available.
Workflow
- Establish scope. If the user provides a path, use it. If they identify a
downloader task, use
downloader-operationand its fixedscripts/mp-downloader.pyhelper to discover the instance and calltasks.list. If they only name a configured root, callstorage.settings. Usestorage.listto inspect the selected directory. Do not process a broad shared root without an explicit, bounded scope. - Classify files into movie, TV, one music recording, one complete album, subtitle/sidecar, or unrelated content. Do not group unrelated media merely because they share a directory.
- Call
media.recognizewith the representative title or path. If uncertain, callmedia.search; if several exact candidates remain, useask_user_choice. Never invent or translate an ID. - Preserve the exact
media_source+media_id. For TV, verify season detail withmedia.detailwhen numbering is ambiguous. For music, a recording is one track, an album is one multi-track directory, and an artist is browse-only. - When duplicate risk matters, call
library.exists. If an existing transfer record affects reorganization, inspecttransfer.history. - Before a state-changing transfer, summarize the source, target identity, media type, season/music entity, storage, and mode. Continue only when the user's request already authorizes that exact action or after confirmation.
- Call
transfer.fileonce per verified unit. For an album, transfer the album directory once only after its supported audio-file count is consistent with the selected album detail. - If requested, call
media.scrapeafter a successful transfer. Report actual tag, cover, and lyrics counts; never assume all lyrics were found.
Structured Calls
- Directory listing:
storage.listwith storage/path/paging/sort inbody. - Recognition:
media.recognizewith title/path inquery. - Search:
media.searchwith title/type/source constraints inquery. - Detail:
media.detailwithpath_params.media_idand identity/type inquery. - Library check:
library.existswith the exact identity inquery. - Transfer:
transfer.filewith the manual-transfer request inbody. - Actual transfer responses include
data.itemseven when the batch reports failure. Inspect every item'sstate:acceptedandretry_waitmean that background work remains; onlycompletedconfirms execution and settlement.manual_reviewrequires resolving the task in the transfer queue first;failedandskippeddo not mean imported. Do not resubmit an entire batch that already contains accepted or completed items. Preview responses remain planning data and do not contain execution states. - Scrape:
media.scrapewithpath_params.storage, file item inbody, and exact identity/type fields inquery.
Stop and report instead of transferring when the source is missing, directory configuration is absent, identity remains ambiguous, an album appears mixed or incomplete, or the requested target would overwrite unrelated media.
整理恢复与历史上下文
保留 storage.list 返回的完整文件项,包括可选的 modify_time_ns 和
change_time_ns;不要自行生成本地版本凭据。恢复发现源或目标版本变化时,
应报告人工复核状态并保留现场,不通过重新提交整个批次绕过核验。
复用历史整理电视剧时保留 episode_group;不同剧集组分批处理。
目录整理的 overwrite_skipped 同样表示未导入,不能报告为成功。