{
  "schemaVersion": "1.0",
  "item": {
    "slug": "discogs-sync",
    "name": "Discogs Sync",
    "source": "tencent",
    "type": "skill",
    "category": "开发工具",
    "sourceUrl": "https://clawhub.ai/khaney64/discogs-sync",
    "canonicalUrl": "https://clawhub.ai/khaney64/discogs-sync",
    "targetPlatform": "OpenClaw"
  },
  "install": {
    "downloadMode": "redirect",
    "downloadUrl": "/downloads/discogs-sync",
    "sourceDownloadUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=discogs-sync",
    "sourcePlatform": "tencent",
    "targetPlatform": "OpenClaw",
    "installMethod": "Manual import",
    "extraction": "Extract archive",
    "prerequisites": [
      "OpenClaw"
    ],
    "packageFormat": "ZIP package",
    "includedAssets": [
      "SKILL.md",
      "discogs-sync.py",
      "requirements.txt",
      "src/discogs_sync/__init__.py",
      "src/discogs_sync/auth.py",
      "src/discogs_sync/cache.py"
    ],
    "primaryDoc": "SKILL.md",
    "quickSetup": [
      "Download the package from Yavira.",
      "Extract the archive and review SKILL.md first.",
      "Import or place the package into your OpenClaw setup."
    ],
    "agentAssist": {
      "summary": "Hand the extracted package to your coding agent with a concrete install brief instead of figuring it out manually.",
      "steps": [
        "Download the package from Yavira.",
        "Extract it into a folder your agent can access.",
        "Paste one of the prompts below and point your agent at the extracted folder."
      ],
      "prompts": [
        {
          "label": "New install",
          "body": "I downloaded a skill package from Yavira. Read SKILL.md from the extracted folder and install it by following the included instructions. Tell me what you changed and call out any manual steps you could not complete."
        },
        {
          "label": "Upgrade existing",
          "body": "I downloaded an updated skill package from Yavira. Read SKILL.md from the extracted folder, compare it with my current installation, and upgrade it while preserving any custom configuration unless the package docs explicitly say otherwise. Summarize what changed and any follow-up checks I should run."
        }
      ]
    },
    "sourceHealth": {
      "source": "tencent",
      "slug": "discogs-sync",
      "status": "healthy",
      "reason": "direct_download_ok",
      "recommendedAction": "download",
      "checkedAt": "2026-05-02T14:14:38.919Z",
      "expiresAt": "2026-05-09T14:14:38.919Z",
      "httpStatus": 200,
      "finalUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=discogs-sync",
      "contentType": "application/zip",
      "probeMethod": "head",
      "details": {
        "probeUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=discogs-sync",
        "contentDisposition": "attachment; filename=\"discogs-sync-0.1.10.zip\"",
        "redirectLocation": null,
        "bodySnippet": null,
        "slug": "discogs-sync"
      },
      "scope": "item",
      "summary": "Item download looks usable.",
      "detail": "Yavira can redirect you to the upstream package for this item.",
      "primaryActionLabel": "Download for OpenClaw",
      "primaryActionHref": "/downloads/discogs-sync"
    },
    "validation": {
      "installChecklist": [
        "Use the Yavira download entry.",
        "Review SKILL.md after the package is downloaded.",
        "Confirm the extracted package contains the expected setup assets."
      ],
      "postInstallChecks": [
        "Confirm the extracted package includes the expected docs or setup files.",
        "Validate the skill or prompts are available in your target agent workspace.",
        "Capture any manual follow-up steps the agent could not complete."
      ]
    },
    "downloadPageUrl": "https://openagent3.xyz/downloads/discogs-sync",
    "agentPageUrl": "https://openagent3.xyz/skills/discogs-sync/agent",
    "manifestUrl": "https://openagent3.xyz/skills/discogs-sync/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/discogs-sync/agent.md"
  },
  "agentAssist": {
    "summary": "Hand the extracted package to your coding agent with a concrete install brief instead of figuring it out manually.",
    "steps": [
      "Download the package from Yavira.",
      "Extract it into a folder your agent can access.",
      "Paste one of the prompts below and point your agent at the extracted folder."
    ],
    "prompts": [
      {
        "label": "New install",
        "body": "I downloaded a skill package from Yavira. Read SKILL.md from the extracted folder and install it by following the included instructions. Tell me what you changed and call out any manual steps you could not complete."
      },
      {
        "label": "Upgrade existing",
        "body": "I downloaded an updated skill package from Yavira. Read SKILL.md from the extracted folder, compare it with my current installation, and upgrade it while preserving any custom configuration unless the package docs explicitly say otherwise. Summarize what changed and any follow-up checks I should run."
      }
    ]
  },
  "documentation": {
    "source": "clawhub",
    "primaryDoc": "SKILL.md",
    "sections": [
      {
        "title": "Discogs Sync — Wantlist, Collection & Marketplace CLI",
        "body": "Add and remove albums from your Discogs wantlist or collection, search marketplace pricing, and list what you have. Identify albums by artist/album name, Discogs master ID, or release ID. For bulk operations, pass a CSV or JSON file."
      },
      {
        "title": "Runtime & Dependencies",
        "body": "Runtime: Python 3.10+\n\nPython packages (installed automatically on first run):\n\npython3-discogs-client>=2.8 — Discogs API client\nclick>=8.1 — CLI framework\nrich>=13.0 — Terminal output formatting\n\nInstallation: No manual pip install needed. On first run, discogs-sync.py creates a local .deps/ virtual environment inside the skill directory and installs dependencies from requirements.txt. Subsequent runs reuse the existing venv. This works on macOS (including Homebrew Python), Linux, and Windows without requiring system-level package installation.\n\nTo force a clean reinstall of dependencies, delete the .deps/ directory and run any command again."
      },
      {
        "title": "Quick Start",
        "body": "# Authenticate (one-time setup — also installs dependencies on first run)\npython3 discogs-sync.py auth\n\n# Add an album to your wantlist by name\npython discogs-sync.py wantlist add --artist \"Radiohead\" --album \"OK Computer\"\n\n# Add to your collection by release ID\npython discogs-sync.py collection add --release-id 7890\n\n# Check marketplace prices for a vinyl pressing\npython discogs-sync.py marketplace search --artist \"Miles Davis\" --album \"Kind of Blue\" --format Vinyl\n\n# List your wantlist\npython discogs-sync.py wantlist list\n\n# Remove from collection\npython discogs-sync.py collection remove --artist \"Nirvana\" --album \"Nevermind\""
      },
      {
        "title": "Authentication",
        "body": "Run once to authenticate. Two modes are available:\n\nPersonal access token (default) — simplest option. Generate a token at https://www.discogs.com/settings/developers.\n\npython discogs-sync.py auth\npython discogs-sync.py auth --mode token\n\nOAuth 1.0a — full OAuth flow with consumer key/secret, for apps that need delegated access.\n\npython discogs-sync.py auth --mode oauth\n\nCredentials are stored in ~/.discogs-sync/config.json.\n\n# Verify authentication\npython discogs-sync.py whoami\npython discogs-sync.py whoami --output-format json"
      },
      {
        "title": "Wantlist — Add, Remove, List",
        "body": "# Add by artist/album name\npython discogs-sync.py wantlist add --artist \"Radiohead\" --album \"OK Computer\" [--format Vinyl]\n\n# Add by Discogs master ID (resolves to main release, or filters by --format)\npython discogs-sync.py wantlist add --master-id 3425\n\n# Add by specific release ID\npython discogs-sync.py wantlist add --release-id 7890\n\n# Remove by artist/album name\npython discogs-sync.py wantlist remove --artist \"Radiohead\" --album \"OK Computer\"\n\n# Remove by release ID\npython discogs-sync.py wantlist remove --release-id 7890\n\n# List current wantlist\npython discogs-sync.py wantlist list [--search \"QUERY\"] [--format Vinyl] [--year 1997] [--no-cache] [--output-format json]\n\nDuplicate check: skips if the release is already in the wantlist (by release_id, master_id, or fuzzy artist+title match)."
      },
      {
        "title": "Collection — Add, Remove, List",
        "body": "# Add by artist/album name\npython discogs-sync.py collection add --artist \"Miles Davis\" --album \"Kind of Blue\" [--format Vinyl]\n\n# Add by master ID or release ID\npython discogs-sync.py collection add --master-id 3425 [--folder-id 1]\npython discogs-sync.py collection add --release-id 7890 [--folder-id 1]\n\n# Add a second copy of something already owned\npython discogs-sync.py collection add --release-id 7890 --allow-duplicate\n\n# Remove by artist/album name\npython discogs-sync.py collection remove --artist \"Miles Davis\" --album \"Kind of Blue\"\n\n# Remove by release ID\npython discogs-sync.py collection remove --release-id 7890\n\n# List collection (all folders)\npython discogs-sync.py collection list [--search \"QUERY\"] [--format CD] [--year 1959] [--folder-id 0] [--no-cache] [--output-format json]\n\nDuplicate check: by default, add skips if the release is already in the collection (by release_id, master_id, or fuzzy artist+title match). Use --allow-duplicate to add another copy."
      },
      {
        "title": "Marketplace — Search Pricing",
        "body": "# Search by artist/album name\npython discogs-sync.py marketplace search --artist \"Radiohead\" --album \"OK Computer\" [--format Vinyl] [--country US] [--output-format json]\n\n# Search by master ID\npython discogs-sync.py marketplace search --master-id 3425 [--format Vinyl] [--country US]\n\n# Search by specific release ID (skips master version scan)\npython discogs-sync.py marketplace search --release-id 7890\n\n# Filter by price range and country\npython discogs-sync.py marketplace search --artist \"Pink Floyd\" --album \"The Dark Side of the Moon\" --format Vinyl --country US --min-price 10 --max-price 50 --currency USD\n\n# Show detailed progress and condition grade price suggestions\npython discogs-sync.py marketplace search --artist \"Radiohead\" --album \"OK Computer\" --verbose --details\n\nReturns release versions sorted by lowest price, with number of copies for sale. Single-item results are cached for 1 hour by lookup parameters. With --details, a separate details cache entry is used; if only the base cache is warm the tool fetches just the condition-grade price suggestions rather than re-running the full search. Pass --no-cache to force a live fetch (result is still written to cache)."
      },
      {
        "title": "Bulk Operations via File",
        "body": "For batch operations, pass a CSV or JSON file instead of individual --artist/--album flags.\n\n# Sync wantlist from file (preview first with --dry-run)\npython discogs-sync.py wantlist sync albums.csv --dry-run\npython discogs-sync.py wantlist sync albums.csv [--remove-extras] [--threshold 0.7] [--output-format json]\n\n# Sync collection from file\npython discogs-sync.py collection sync albums.csv [--folder-id 1] [--remove-extras] [--dry-run]\n\n# Batch marketplace search from file\npython discogs-sync.py marketplace search albums.csv [--format Vinyl] [--country US] [--max-price 50] [--max-versions 25] [--output-format json]\n\nCSV format (header row required, artist and album required):\n\nartist,album,format,year,notes\nRadiohead,OK Computer,Vinyl,,Must have\nMiles Davis,Kind of Blue,,1959,Original pressing\nNirvana,Nevermind,CD,1991,\n\nJSON format (array of objects with the same fields):\n\n[\n    {\"artist\": \"Radiohead\", \"album\": \"OK Computer\", \"format\": \"Vinyl\"},\n    {\"artist\": \"Miles Davis\", \"album\": \"Kind of Blue\", \"year\": 1959}\n]\n\nFormat synonyms are normalized automatically: LP/record/12\" → Vinyl, compact disc → CD, tape/mc → Cassette."
      },
      {
        "title": "Options",
        "body": "OptionApplies ToDescription--output-formatAlltable (default) or json for machine-readable output--thresholdadd, remove, search, syncMatch score threshold 0.0–1.0 (default: 0.7)--formatadd, list, marketplace searchFilter by format: Vinyl, CD, Cassette (synonyms like LP, record are normalized)--yearlistFilter by release year (exact match)--folder-idcollectionTarget folder (default: 1 for adds, 0 for reads)--allow-duplicatecollection addAllow adding another copy of an album already in collection--countrymarketplace searchFilter by country of pressing (exact match: US, UK, Germany, etc.)--release-idmarketplace searchFetch stats for a specific release (bypasses master version scan)--min-pricemarketplaceMinimum price filter--max-pricemarketplaceMaximum price filter--currencymarketplaceCurrency code (default: USD)--max-versionsmarketplaceMax release versions to check per master (default: 25)--detailsmarketplace searchInclude suggested prices by condition grade--no-cachelist, marketplace searchBypass local cache; fresh results are still written back to cache--verbosesync, marketplace searchShow detailed progress and API call logging--searchlistFilter results by artist or title (case-insensitive substring match)--dry-runsyncPreview changes without modifying Discogs--remove-extrassyncRemove wantlist/collection items not in the input file"
      },
      {
        "title": "Text (Default)",
        "body": "wantlist list / collection list:\n\nWantlist\n┌────────────┬───────────┬─────────────┬─────────────┬────────┬──────┐\n│ Release ID │ Master ID │ Artist      │ Title       │ Format │ Year │\n├────────────┼───────────┼─────────────┼─────────────┼────────┼──────┤\n│ 7890       │ 3425      │ Radiohead   │ OK Computer │ Vinyl  │ 1997 │\n│ 1234       │ 1000      │ Miles Davis │ Kind of Blue│ Vinyl  │ 1959 │\n└────────────┴───────────┴─────────────┴─────────────┴────────┴──────┘\n\nTotal: 2\n\nmarketplace search:\n\nMarketplace Results\n┌───────────┬────────────┬───────────┬─────────────┬────────┬──────────┬──────────────┐\n│ Master ID │ Release ID │ Artist    │ Title       │ Format │ For Sale │ Lowest Price │\n├───────────┼────────────┼───────────┼─────────────┼────────┼──────────┼──────────────┤\n│ 3425      │ 7890       │ Radiohead │ OK Computer │ Vinyl  │ 42       │ 25.99 USD    │\n│ 3425      │ 15432      │ Radiohead │ OK Computer │ Vinyl  │ 18       │ 32.50 USD    │\n└───────────┴────────────┴───────────┴─────────────┴────────┴──────────┴──────────────┘\n\nadd / remove result:\n\nSync Report\n  Total input: 1\n  Added:   1\n  Removed: 0\n  Skipped: 0\n  Errors:  0"
      },
      {
        "title": "JSON (--output-format json)",
        "body": "wantlist list / collection list:\n\n{\n  \"items\": [\n    {\n      \"release_id\": 7890,\n      \"master_id\": 3425,\n      \"title\": \"OK Computer\",\n      \"artist\": \"Radiohead\",\n      \"format\": \"Vinyl\",\n      \"year\": 1997\n    }\n  ],\n  \"total\": 1\n}\n\nmarketplace search:\n\n{\n  \"results\": [\n    {\n      \"master_id\": 3425,\n      \"release_id\": 7890,\n      \"title\": \"OK Computer\",\n      \"artist\": \"Radiohead\",\n      \"format\": \"Vinyl\",\n      \"country\": \"US\",\n      \"year\": 1997,\n      \"num_for_sale\": 42,\n      \"lowest_price\": 25.99,\n      \"currency\": \"USD\"\n    }\n  ],\n  \"total\": 1\n}\n\nadd / remove / sync report:\n\n{\n  \"summary\": {\n    \"total_input\": 1,\n    \"added\": 1,\n    \"removed\": 0,\n    \"skipped\": 0,\n    \"errors\": 0\n  },\n  \"actions\": [\n    {\n      \"action\": \"add\",\n      \"artist\": \"Radiohead\",\n      \"title\": \"OK Computer\",\n      \"release_id\": 7890,\n      \"master_id\": 3425,\n      \"reason\": null,\n      \"error\": null\n    }\n  ]\n}"
      },
      {
        "title": "Output Fields",
        "body": "release_id — Unique Discogs release identifier\nmaster_id — Discogs master release identifier (groups all versions of an album)\ntitle — Album title\nartist — Artist name\nformat — Physical format (Vinyl, CD, Cassette, etc.)\nyear — Release year\ncountry — Country of release\nnum_for_sale — Number of copies currently for sale on the marketplace\nlowest_price — Lowest listed price for the release\ncurrency — Price currency code\ninstance_id — Collection-specific instance identifier (for duplicate copies)\nfolder_id — Collection folder identifier\naction — Sync action taken: add, remove, skip, or error"
      },
      {
        "title": "Release Matching",
        "body": "When using --artist and --album, the tool runs a multi-pass search to find the best Discogs match:\n\nStructured search — artist, album, format, and year\nRelaxed search — drops format and year constraints\nFree text search — searches \"artist album\" as plain text\n\nEach result is scored 0.0–1.0: 40% artist similarity + 40% title similarity + 10% year match + 10% format match. Results below --threshold (default 0.7) are rejected. Lower the threshold for fuzzy matches.\n\nWhen using --master-id or --release-id, no search is needed — the ID is used directly."
      },
      {
        "title": "Exit Codes",
        "body": "0 — Success (all items processed)\n1 — Partial failure (some items failed)\n2 — Complete failure (no items processed, or auth/config error)"
      },
      {
        "title": "Notes",
        "body": "Authentication supports personal access tokens (default) and OAuth 1.0a. Run python discogs-sync.py auth once.\nThe Discogs API is rate-limited to 60 requests/minute for authenticated users. The tool throttles automatically — no manual pacing needed.\nBatch operations are resilient: individual item failures are collected and reported without aborting the entire batch.\nUse --dry-run before any sync to preview what would change. This makes no API writes.\nThe --remove-extras flag on sync commands will remove items from your wantlist/collection that are not in the input file. Use with caution.\nCollection allows multiple instances of the same release (e.g., two copies of the same LP). By default, collection add skips duplicates with a message. Use --allow-duplicate to add another copy.\nCache files are stored in ~/.discogs-sync/ alongside config.json: wantlist_cache.json, collection_cache.json, and marketplace_<type>_<hash>.json (plus …_details.json variants). Delete any of these files to manually clear a stale cache entry.\nCredentials in ~/.discogs-sync/config.json contain your Discogs tokens. On Linux/macOS, restrict permissions: chmod 600 ~/.discogs-sync/config.json. Revoke tokens at https://www.discogs.com/settings/developers if compromised."
      }
    ],
    "body": "Discogs Sync — Wantlist, Collection & Marketplace CLI\n\nAdd and remove albums from your Discogs wantlist or collection, search marketplace pricing, and list what you have. Identify albums by artist/album name, Discogs master ID, or release ID. For bulk operations, pass a CSV or JSON file.\n\nRuntime & Dependencies\n\nRuntime: Python 3.10+\n\nPython packages (installed automatically on first run):\n\npython3-discogs-client>=2.8 — Discogs API client\nclick>=8.1 — CLI framework\nrich>=13.0 — Terminal output formatting\n\nInstallation: No manual pip install needed. On first run, discogs-sync.py creates a local .deps/ virtual environment inside the skill directory and installs dependencies from requirements.txt. Subsequent runs reuse the existing venv. This works on macOS (including Homebrew Python), Linux, and Windows without requiring system-level package installation.\n\nTo force a clean reinstall of dependencies, delete the .deps/ directory and run any command again.\n\nQuick Start\n# Authenticate (one-time setup — also installs dependencies on first run)\npython3 discogs-sync.py auth\n\n# Add an album to your wantlist by name\npython discogs-sync.py wantlist add --artist \"Radiohead\" --album \"OK Computer\"\n\n# Add to your collection by release ID\npython discogs-sync.py collection add --release-id 7890\n\n# Check marketplace prices for a vinyl pressing\npython discogs-sync.py marketplace search --artist \"Miles Davis\" --album \"Kind of Blue\" --format Vinyl\n\n# List your wantlist\npython discogs-sync.py wantlist list\n\n# Remove from collection\npython discogs-sync.py collection remove --artist \"Nirvana\" --album \"Nevermind\"\n\nAuthentication\n\nRun once to authenticate. Two modes are available:\n\nPersonal access token (default) — simplest option. Generate a token at https://www.discogs.com/settings/developers.\n\npython discogs-sync.py auth\npython discogs-sync.py auth --mode token\n\n\nOAuth 1.0a — full OAuth flow with consumer key/secret, for apps that need delegated access.\n\npython discogs-sync.py auth --mode oauth\n\n\nCredentials are stored in ~/.discogs-sync/config.json.\n\n# Verify authentication\npython discogs-sync.py whoami\npython discogs-sync.py whoami --output-format json\n\nUsage\nWantlist — Add, Remove, List\n# Add by artist/album name\npython discogs-sync.py wantlist add --artist \"Radiohead\" --album \"OK Computer\" [--format Vinyl]\n\n# Add by Discogs master ID (resolves to main release, or filters by --format)\npython discogs-sync.py wantlist add --master-id 3425\n\n# Add by specific release ID\npython discogs-sync.py wantlist add --release-id 7890\n\n# Remove by artist/album name\npython discogs-sync.py wantlist remove --artist \"Radiohead\" --album \"OK Computer\"\n\n# Remove by release ID\npython discogs-sync.py wantlist remove --release-id 7890\n\n# List current wantlist\npython discogs-sync.py wantlist list [--search \"QUERY\"] [--format Vinyl] [--year 1997] [--no-cache] [--output-format json]\n\n\nDuplicate check: skips if the release is already in the wantlist (by release_id, master_id, or fuzzy artist+title match).\n\nCollection — Add, Remove, List\n# Add by artist/album name\npython discogs-sync.py collection add --artist \"Miles Davis\" --album \"Kind of Blue\" [--format Vinyl]\n\n# Add by master ID or release ID\npython discogs-sync.py collection add --master-id 3425 [--folder-id 1]\npython discogs-sync.py collection add --release-id 7890 [--folder-id 1]\n\n# Add a second copy of something already owned\npython discogs-sync.py collection add --release-id 7890 --allow-duplicate\n\n# Remove by artist/album name\npython discogs-sync.py collection remove --artist \"Miles Davis\" --album \"Kind of Blue\"\n\n# Remove by release ID\npython discogs-sync.py collection remove --release-id 7890\n\n# List collection (all folders)\npython discogs-sync.py collection list [--search \"QUERY\"] [--format CD] [--year 1959] [--folder-id 0] [--no-cache] [--output-format json]\n\n\nDuplicate check: by default, add skips if the release is already in the collection (by release_id, master_id, or fuzzy artist+title match). Use --allow-duplicate to add another copy.\n\nMarketplace — Search Pricing\n# Search by artist/album name\npython discogs-sync.py marketplace search --artist \"Radiohead\" --album \"OK Computer\" [--format Vinyl] [--country US] [--output-format json]\n\n# Search by master ID\npython discogs-sync.py marketplace search --master-id 3425 [--format Vinyl] [--country US]\n\n# Search by specific release ID (skips master version scan)\npython discogs-sync.py marketplace search --release-id 7890\n\n# Filter by price range and country\npython discogs-sync.py marketplace search --artist \"Pink Floyd\" --album \"The Dark Side of the Moon\" --format Vinyl --country US --min-price 10 --max-price 50 --currency USD\n\n# Show detailed progress and condition grade price suggestions\npython discogs-sync.py marketplace search --artist \"Radiohead\" --album \"OK Computer\" --verbose --details\n\n\nReturns release versions sorted by lowest price, with number of copies for sale. Single-item results are cached for 1 hour by lookup parameters. With --details, a separate details cache entry is used; if only the base cache is warm the tool fetches just the condition-grade price suggestions rather than re-running the full search. Pass --no-cache to force a live fetch (result is still written to cache).\n\nBulk Operations via File\n\nFor batch operations, pass a CSV or JSON file instead of individual --artist/--album flags.\n\n# Sync wantlist from file (preview first with --dry-run)\npython discogs-sync.py wantlist sync albums.csv --dry-run\npython discogs-sync.py wantlist sync albums.csv [--remove-extras] [--threshold 0.7] [--output-format json]\n\n# Sync collection from file\npython discogs-sync.py collection sync albums.csv [--folder-id 1] [--remove-extras] [--dry-run]\n\n# Batch marketplace search from file\npython discogs-sync.py marketplace search albums.csv [--format Vinyl] [--country US] [--max-price 50] [--max-versions 25] [--output-format json]\n\n\nCSV format (header row required, artist and album required):\n\nartist,album,format,year,notes\nRadiohead,OK Computer,Vinyl,,Must have\nMiles Davis,Kind of Blue,,1959,Original pressing\nNirvana,Nevermind,CD,1991,\n\n\nJSON format (array of objects with the same fields):\n\n[\n    {\"artist\": \"Radiohead\", \"album\": \"OK Computer\", \"format\": \"Vinyl\"},\n    {\"artist\": \"Miles Davis\", \"album\": \"Kind of Blue\", \"year\": 1959}\n]\n\n\nFormat synonyms are normalized automatically: LP/record/12\" → Vinyl, compact disc → CD, tape/mc → Cassette.\n\nOptions\nOption\tApplies To\tDescription\n--output-format\tAll\ttable (default) or json for machine-readable output\n--threshold\tadd, remove, search, sync\tMatch score threshold 0.0–1.0 (default: 0.7)\n--format\tadd, list, marketplace search\tFilter by format: Vinyl, CD, Cassette (synonyms like LP, record are normalized)\n--year\tlist\tFilter by release year (exact match)\n--folder-id\tcollection\tTarget folder (default: 1 for adds, 0 for reads)\n--allow-duplicate\tcollection add\tAllow adding another copy of an album already in collection\n--country\tmarketplace search\tFilter by country of pressing (exact match: US, UK, Germany, etc.)\n--release-id\tmarketplace search\tFetch stats for a specific release (bypasses master version scan)\n--min-price\tmarketplace\tMinimum price filter\n--max-price\tmarketplace\tMaximum price filter\n--currency\tmarketplace\tCurrency code (default: USD)\n--max-versions\tmarketplace\tMax release versions to check per master (default: 25)\n--details\tmarketplace search\tInclude suggested prices by condition grade\n--no-cache\tlist, marketplace search\tBypass local cache; fresh results are still written back to cache\n--verbose\tsync, marketplace search\tShow detailed progress and API call logging\n--search\tlist\tFilter results by artist or title (case-insensitive substring match)\n--dry-run\tsync\tPreview changes without modifying Discogs\n--remove-extras\tsync\tRemove wantlist/collection items not in the input file\nOutput Format\nText (Default)\n\nwantlist list / collection list:\n\n                           Wantlist\n┌────────────┬───────────┬─────────────┬─────────────┬────────┬──────┐\n│ Release ID │ Master ID │ Artist      │ Title       │ Format │ Year │\n├────────────┼───────────┼─────────────┼─────────────┼────────┼──────┤\n│ 7890       │ 3425      │ Radiohead   │ OK Computer │ Vinyl  │ 1997 │\n│ 1234       │ 1000      │ Miles Davis │ Kind of Blue│ Vinyl  │ 1959 │\n└────────────┴───────────┴─────────────┴─────────────┴────────┴──────┘\n\nTotal: 2\n\n\nmarketplace search:\n\n                               Marketplace Results\n┌───────────┬────────────┬───────────┬─────────────┬────────┬──────────┬──────────────┐\n│ Master ID │ Release ID │ Artist    │ Title       │ Format │ For Sale │ Lowest Price │\n├───────────┼────────────┼───────────┼─────────────┼────────┼──────────┼──────────────┤\n│ 3425      │ 7890       │ Radiohead │ OK Computer │ Vinyl  │ 42       │ 25.99 USD    │\n│ 3425      │ 15432      │ Radiohead │ OK Computer │ Vinyl  │ 18       │ 32.50 USD    │\n└───────────┴────────────┴───────────┴─────────────┴────────┴──────────┴──────────────┘\n\n\nadd / remove result:\n\nSync Report\n  Total input: 1\n  Added:   1\n  Removed: 0\n  Skipped: 0\n  Errors:  0\n\nJSON (--output-format json)\n\nwantlist list / collection list:\n\n{\n  \"items\": [\n    {\n      \"release_id\": 7890,\n      \"master_id\": 3425,\n      \"title\": \"OK Computer\",\n      \"artist\": \"Radiohead\",\n      \"format\": \"Vinyl\",\n      \"year\": 1997\n    }\n  ],\n  \"total\": 1\n}\n\n\nmarketplace search:\n\n{\n  \"results\": [\n    {\n      \"master_id\": 3425,\n      \"release_id\": 7890,\n      \"title\": \"OK Computer\",\n      \"artist\": \"Radiohead\",\n      \"format\": \"Vinyl\",\n      \"country\": \"US\",\n      \"year\": 1997,\n      \"num_for_sale\": 42,\n      \"lowest_price\": 25.99,\n      \"currency\": \"USD\"\n    }\n  ],\n  \"total\": 1\n}\n\n\nadd / remove / sync report:\n\n{\n  \"summary\": {\n    \"total_input\": 1,\n    \"added\": 1,\n    \"removed\": 0,\n    \"skipped\": 0,\n    \"errors\": 0\n  },\n  \"actions\": [\n    {\n      \"action\": \"add\",\n      \"artist\": \"Radiohead\",\n      \"title\": \"OK Computer\",\n      \"release_id\": 7890,\n      \"master_id\": 3425,\n      \"reason\": null,\n      \"error\": null\n    }\n  ]\n}\n\nOutput Fields\nrelease_id — Unique Discogs release identifier\nmaster_id — Discogs master release identifier (groups all versions of an album)\ntitle — Album title\nartist — Artist name\nformat — Physical format (Vinyl, CD, Cassette, etc.)\nyear — Release year\ncountry — Country of release\nnum_for_sale — Number of copies currently for sale on the marketplace\nlowest_price — Lowest listed price for the release\ncurrency — Price currency code\ninstance_id — Collection-specific instance identifier (for duplicate copies)\nfolder_id — Collection folder identifier\naction — Sync action taken: add, remove, skip, or error\nRelease Matching\n\nWhen using --artist and --album, the tool runs a multi-pass search to find the best Discogs match:\n\nStructured search — artist, album, format, and year\nRelaxed search — drops format and year constraints\nFree text search — searches \"artist album\" as plain text\n\nEach result is scored 0.0–1.0: 40% artist similarity + 40% title similarity + 10% year match + 10% format match. Results below --threshold (default 0.7) are rejected. Lower the threshold for fuzzy matches.\n\nWhen using --master-id or --release-id, no search is needed — the ID is used directly.\n\nExit Codes\n0 — Success (all items processed)\n1 — Partial failure (some items failed)\n2 — Complete failure (no items processed, or auth/config error)\nNotes\nAuthentication supports personal access tokens (default) and OAuth 1.0a. Run python discogs-sync.py auth once.\nThe Discogs API is rate-limited to 60 requests/minute for authenticated users. The tool throttles automatically — no manual pacing needed.\nBatch operations are resilient: individual item failures are collected and reported without aborting the entire batch.\nUse --dry-run before any sync to preview what would change. This makes no API writes.\nThe --remove-extras flag on sync commands will remove items from your wantlist/collection that are not in the input file. Use with caution.\nCollection allows multiple instances of the same release (e.g., two copies of the same LP). By default, collection add skips duplicates with a message. Use --allow-duplicate to add another copy.\nCache files are stored in ~/.discogs-sync/ alongside config.json: wantlist_cache.json, collection_cache.json, and marketplace_<type>_<hash>.json (plus …_details.json variants). Delete any of these files to manually clear a stale cache entry.\nCredentials in ~/.discogs-sync/config.json contain your Discogs tokens. On Linux/macOS, restrict permissions: chmod 600 ~/.discogs-sync/config.json. Revoke tokens at https://www.discogs.com/settings/developers if compromised."
  },
  "trust": {
    "sourceLabel": "tencent",
    "provenanceUrl": "https://clawhub.ai/khaney64/discogs-sync",
    "publisherUrl": "https://clawhub.ai/khaney64/discogs-sync",
    "owner": "khaney64",
    "version": "0.1.9",
    "license": null,
    "verificationStatus": "Indexed source record"
  },
  "links": {
    "detailUrl": "https://openagent3.xyz/skills/discogs-sync",
    "downloadUrl": "https://openagent3.xyz/downloads/discogs-sync",
    "agentUrl": "https://openagent3.xyz/skills/discogs-sync/agent",
    "manifestUrl": "https://openagent3.xyz/skills/discogs-sync/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/discogs-sync/agent.md"
  }
}