Android-Media-Importer
May 1, 2026 · View on GitHub
A Claude Code plugin for moving (or copying) media from a connected Android phone into your local filesystem, with user-configured source→destination mappings.
What it does
- Talks to your phone over ADB (USB debugging).
- Routes files by MIME type (not file extension) — HEIC, DNG, WEBP, AVIF, MOV, MKV, 3GP, opus, m4a all sort correctly out of the box.
- Per-mapping options:
- flat dest, or split
image_dest/video_destsubtrees - optional date-stamped folder (
DDMM,DD-MM,YYYY-MM-DD,YYYYMMDD, or none) - optional
portrait//landscape/split for images and videos (orientation-aware via EXIF + ffprobe rotation) - MIME allowlist (
image,video,audio, etc.) - move (delete from phone after byte-size-verified copy) or copy
- flat dest, or split
- Incremental by default — only files newer than the newest already in the destination.
- Auto-creates missing destination dirs.
- Dry-run preview supported.
Skills
- onboard — interactive setup. Probes the phone for common media roots, walks you through defining mappings, writes
<workspace>/config.yaml. - import-media — runs the import.
import-mediawith no argument runs every mapping; pass a label (e.g.import-media camera) to run one.
Requirements
adb(USB debugging enabled and authorised on the phone)file,exiftool,ffprobe
Debian/Ubuntu:
sudo apt install android-tools-adb file libimage-exiftool-perl ffmpeg
Workspace
User config lives at $CLAUDE_USER_DATA/android-media-importer/config.yaml (or $XDG_DATA_HOME/claude-plugins/android-media-importer/, fallback ~/.local/share/claude-plugins/android-media-importer/). Nothing is written under ~/.claude/.
Move semantics
When a mapping is mode: move, a phone-side file is deleted only after the local copy's size matches adb shell stat -c%s on the source. Mismatches are reported and the phone copy is preserved.
License
MIT.