Claude
Skills
Sign in
Back

curate

Included with Lifetime
$97 forever

Orchestrate end-to-end media curation from analysis through acquisition, tagging, and verification

General

What this skill does


# Curate Media Collection

Main orchestration entry point for end-to-end media curation. Analyzes artist discography, discovers high-quality sources, acquires media, tags metadata, verifies integrity, checks completeness, and optionally exports to platform-specific formats.

## Purpose

Media curation is a multi-phase workflow requiring coordination across analysis, discovery, acquisition, metadata tagging, verification, and export. This command orchestrates the full pipeline, managing dependencies between phases and ensuring quality at each step.

## Parameters

### Required

**`<artist>`** - Artist name to curate. Quoted if contains spaces.

Example: `"Pink Floyd"`

### Optional

**`--scope <complete|era:NAME|style:NAME>`** - Curation scope.

- `complete`: Full discography (all albums, all eras)
- `era:NAME`: Specific era only (e.g., `era:Classic Rock Era (1968-1979)`)
- `style:NAME`: Specific style only (e.g., `style:Progressive Rock`)

Default: `complete`

**`--output <dir>`** - Output directory for curated collection.

Default: `~/Music/Curated/<artist>`

**`--quality <threshold>`** - Minimum quality score (0.0-1.0).

- 0.9-1.0: Audiophile (lossless, verified sources, complete metadata)
- 0.7-0.89: High quality (lossless or high-bitrate lossy, good metadata)
- 0.5-0.69: Standard quality (acceptable lossy formats, basic metadata)
- Below 0.5: Low quality (rejected unless explicitly allowed)

Default: `0.7`

**`--export <profile>`** - Export to platform-specific format after curation.

Options: `plex`, `jellyfin`, `mpd`, `mobile`, `archival`

Default: None (no export)

**`--dry-run`** - Simulate workflow without downloading or modifying files.

**`--resume`** - Resume previous incomplete curation session.

## Orchestration Flow

```
/curate "Pink Floyd" --scope complete --quality 0.8 --export plex

Phase 1: Analysis
├── /analyze-artist "Pink Floyd"
├── Output: Era breakdown, style classification, album list
└── Status: 16 studio albums, 3 eras identified

Phase 2: Discovery
├── /find-sources "Pink Floyd" --scope complete --quality 0.8
├── Searches: MusicBrainz, Archive.org, Discogs, Bandcamp, label sites
├── Output: Ranked source list per album
└── Status: 127 sources found across 16 albums

Phase 3: Acquisition
├── /acquire "Pink Floyd" --quality 0.8
├── Downloads: Top-ranked sources meeting quality threshold
├── Validates: Format, bitrate, checksums
├── Output: Downloaded files in output directory
└── Status: 14/16 albums acquired (2 unavailable at threshold)

Phase 4: Curation
├── /tag-collection ~/Music/Curated/Pink\ Floyd
├── Metadata: Artist, album, track, year, genre, artwork
├── Artwork: Embedded + folder.jpg per album
├── Output: Fully tagged collection
└── /verify-archive ~/Music/Curated/Pink\ Floyd
    ├── Checksums: SHA-256 per file
    ├── Provenance: PROVENANCE.jsonld per album
    ├── Output: SHA256SUMS, PROVENANCE.jsonld
    └── Status: All files verified, provenance recorded

Phase 5: Completeness Analysis
├── /check-completeness ~/Music/Curated/Pink\ Floyd
├── Compares: Collection against canonical discography
├── Output: Gap report (missing albums, tracks, formats)
└── Status: 87.5% complete (2 albums missing)

Phase 6: Export (Optional)
├── /export --profile plex ~/Music/Curated/Pink\ Floyd /media/plex/Music
├── Transcodes: As needed per profile
├── Structure: Artist/Album (Year)/Track - Title.ext
├── Metadata: Embedded + folder.jpg
└── Status: 14 albums exported to Plex
```

## Phase Details

### Phase 1: Analysis

**Command:** `/analyze-artist "<artist>"`

**Purpose:** Understand artist's discography structure, eras, styles, and canonical album list.

**Inputs:**
- Artist name

**Outputs:**
- `.aiwg/media/analysis/<artist>.md`: Era breakdown, style classification
- `.aiwg/media/discography/<artist>.json`: Canonical album list with MusicBrainz IDs

**Success Criteria:**
- All studio albums identified
- Eras defined with year ranges
- Styles classified per album

**Example Output:**
```
Pink Floyd Analysis Complete
- Studio Albums: 16
- Eras: 3 (Psychedelic, Classic Progressive, Post-Waters)
- Styles: Progressive Rock, Psychedelic Rock, Art Rock
- Canonical Discography: .aiwg/media/discography/Pink Floyd.json
```

### Phase 2: Discovery

**Command:** `/find-sources "<artist>" --scope <scope> --quality <threshold>`

**Purpose:** Search multiple sources, rank by quality, filter by threshold.

**Inputs:**
- Artist name
- Scope (complete/era/style)
- Quality threshold

**Outputs:**
- `.aiwg/media/sources/<artist>-sources.json`: Ranked source list per album

**Search Sources:**
1. MusicBrainz (authoritative metadata)
2. Archive.org (public domain, live recordings)
3. Bandcamp (artist-direct, high quality)
4. Discogs (marketplace, quality varies)
5. Label websites (official, often highest quality)

**Ranking Criteria:**
- Format (FLAC > WAV > ALAC > Opus > MP3)
- Bitrate (higher is better for lossy)
- Source reputation (artist-direct > label > verified uploader > unknown)
- Metadata completeness (full tags > partial > missing)
- Artwork availability (embedded + high-res > embedded only > missing)

**Success Criteria:**
- At least one source per album meeting quality threshold
- Sources ranked by quality score

**Example Output:**
```
Discovery Complete: Pink Floyd
- Albums Found: 16/16
- Total Sources: 127
- Sources Meeting Threshold (0.8): 89
- Top Sources: .aiwg/media/sources/Pink Floyd-sources.json
```

### Phase 3: Acquisition

**Command:** `/acquire "<artist>" --quality <threshold>`

**Purpose:** Download top-ranked sources, validate quality, organize files.

**Inputs:**
- Artist name
- Quality threshold
- Source rankings from Phase 2

**Outputs:**
- Downloaded files in `<output_dir>/<artist>/<album>/`
- `.aiwg/media/downloads/<artist>-acquisition.log`: Download log

**Download Strategy:**
1. Select top-ranked source per album
2. Download to temporary location
3. Validate format, bitrate, checksums
4. Move to output directory if valid
5. Retry with next-ranked source on failure

**Validation:**
- Format check: `ffprobe` confirms declared format
- Bitrate check: Meets minimum for quality threshold
- Checksum: If provided by source, verify SHA-256
- File integrity: No corruption, complete download

**Success Criteria:**
- Files downloaded and validated
- Organized in `<artist>/<album>/` structure
- Acquisition log records sources and timestamps

**Example Output:**
```
Acquisition Complete: Pink Floyd
- Albums Acquired: 14/16
- Total Files: 187 tracks, 14 cover images
- Total Size: 4.2 GB
- Failed: 2 albums (no sources meeting threshold 0.8)
- Download Log: .aiwg/media/downloads/Pink Floyd-acquisition.log
```

### Phase 4: Curation

**Subphase 4a: Tagging**

**Command:** `/tag-collection <collection_path>`

**Purpose:** Embed complete metadata and artwork into all files.

**Inputs:**
- Collection directory path
- Canonical discography from Phase 1

**Outputs:**
- Tagged audio files (metadata embedded)
- `folder.jpg` per album directory
- `.aiwg/media/tagging/<artist>-tagging.log`: Tagging log

**Metadata Sources:**
1. MusicBrainz (authoritative)
2. Discogs (supplementary)
3. Embedded tags (if already present)

**Tags Applied:**
- Artist, Album Artist, Album, Track Title, Track Number
- Year, Date, Genre, Style
- MusicBrainz IDs (release, recording, artist)
- Label, Catalog Number

**Artwork Handling:**
- Extract embedded artwork if present
- Search for high-resolution artwork if missing
- Resize to 1500x1500 maximum
- Embed into audio files
- Save as `folder.jpg` in album directory

**Success Criteria:**
- All files have complete metadata
- All albums have artwork (embedded + folder.jpg)

**Example Output:**
```
Tagging Complete: Pink Floyd
- Files Tagged: 187/187
- Metadata Sources: MusicBrainz (primary), Discogs (supplementary)
- Artwork: 14 albums (all with embedded + folder.jpg)
- Tagging Log: .aiwg/media/tagging/Pink Floyd-tagging.log
```

**Subphase 4b: Verification**

**Command:** `/verify-archive <collection_path>`

**P

Related in General