{
  "schemaVersion": "1.0",
  "item": {
    "slug": "statsfm",
    "name": "statsfm",
    "source": "tencent",
    "type": "skill",
    "category": "开发工具",
    "sourceUrl": "https://clawhub.ai/space0mel/statsfm",
    "canonicalUrl": "https://clawhub.ai/space0mel/statsfm",
    "targetPlatform": "OpenClaw"
  },
  "install": {
    "downloadMode": "redirect",
    "downloadUrl": "/downloads/statsfm",
    "sourceDownloadUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=statsfm",
    "sourcePlatform": "tencent",
    "targetPlatform": "OpenClaw",
    "installMethod": "Manual import",
    "extraction": "Extract archive",
    "prerequisites": [
      "OpenClaw"
    ],
    "packageFormat": "ZIP package",
    "includedAssets": [
      "SKILL.md",
      "scripts/statsfm.py",
      "references/api.md"
    ],
    "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",
      "status": "healthy",
      "reason": "direct_download_ok",
      "recommendedAction": "download",
      "checkedAt": "2026-05-07T17:22:31.273Z",
      "expiresAt": "2026-05-14T17:22:31.273Z",
      "httpStatus": 200,
      "finalUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=afrexai-annual-report",
      "contentType": "application/zip",
      "probeMethod": "head",
      "details": {
        "probeUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=afrexai-annual-report",
        "contentDisposition": "attachment; filename=\"afrexai-annual-report-1.0.0.zip\"",
        "redirectLocation": null,
        "bodySnippet": null
      },
      "scope": "source",
      "summary": "Source download looks usable.",
      "detail": "Yavira can redirect you to the upstream package for this source.",
      "primaryActionLabel": "Download for OpenClaw",
      "primaryActionHref": "/downloads/statsfm"
    },
    "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/statsfm",
    "agentPageUrl": "https://openagent3.xyz/skills/statsfm/agent",
    "manifestUrl": "https://openagent3.xyz/skills/statsfm/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/statsfm/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": "stats.fm CLI",
        "body": "Comprehensive Python CLI for querying stats.fm API (Spotify listening analytics).\n\nRequirements: Python 3.6+ (stdlib only, no pip installs needed)\n\nScript location: scripts/statsfm.py in this skill's directory. Examples use ./statsfm.py assuming you're in the scripts folder."
      },
      {
        "title": "Prerequisites",
        "body": "Stats.fm account (optional)\n\nA stats.fm account is only needed for personal listening data (history, top tracks, now playing, etc.)\nWithout an account, you can still use public features: album tracklists, artist discographies, search, and global charts\nDon't have one? Visit stats.fm and sign up with Spotify or Apple Music (AM untested, Plus status unknown)\nAlready have one? Copy your username from your profile"
      },
      {
        "title": "Setup",
        "body": "No account needed for public commands: search, album, artist-albums, charts-top-tracks, charts-top-artists, charts-top-albums.\n\nFor personal stats (profile, top-artists, top-tracks, recent, np, etc.), pass your username with --user USERNAME / -u USERNAME. These commands exit with code 1 if no user is provided."
      },
      {
        "title": "Quick Start",
        "body": "# View your profile\n./statsfm.py profile\n\n# Top tracks this month\n./statsfm.py top-tracks --limit 10\n\n# Track stats for 2025\n./statsfm.py track-stats 188745898 --start 2025 --end 2026"
      },
      {
        "title": "User Profile",
        "body": "profile - Show username, pronouns, bio, Plus status, timezone, Spotify sync info"
      },
      {
        "title": "Top Lists",
        "body": "top-tracks - Your most played tracks\ntop-artists - Your most played artists\ntop-albums - Your most played albums\ntop-genres - Your top music genres"
      },
      {
        "title": "Current Activity",
        "body": "now-playing (aliases: now, np) - Currently playing track\nrecent - Recently played tracks"
      },
      {
        "title": "Detailed Stats",
        "body": "artist-stats <artist_id> - Your play count, listening time, and monthly breakdown for this artist\ntrack-stats <track_id> - Your play count, listening time, and monthly breakdown for this track (shows track name + album)\nalbum-stats <album_id> - Your play count, listening time, and monthly breakdown for this album\nstream-stats - Your overall streaming summary (total streams, total time, avg track length, shortest/longest, unique counts for tracks/artists/albums)"
      },
      {
        "title": "Lookups",
        "body": "artist <artist_id> - Artist info and discography. Shows genres, followers, popularity score (100 = very popular, 50 = underground, 0 = no data).\n\n--type album|single|all (default: all)\n--limit N - Items per section (default: 15)\n\n\nalbum <album_id> - Album info and full tracklist (release date, label, genres, tracks with duration and [E] tags)\nartist-albums <artist_id> - All albums/singles by artist, grouped by type (Albums, Singles & EPs, Compilations), newest first. Deduped by ID, 15 per section by default, shows \"(N more)\" overflow.\n\n--type album|single|all (default: all)\n--limit N - Items per section"
      },
      {
        "title": "Drill-Down",
        "body": "top-tracks-from-artist <artist_id> - Your most played tracks from this artist\ntop-tracks-from-album <album_id> - Your most played tracks from this album\ntop-albums-from-artist <artist_id> - Your most played albums from this artist"
      },
      {
        "title": "Global Charts",
        "body": "charts-top-tracks - Global top tracks chart\ncharts-top-artists - Global top artists chart\ncharts-top-albums - Global top albums chart"
      },
      {
        "title": "Search",
        "body": "search <query> - Search for artists, tracks, or albums. Use --type artist|track|album to filter results to one category"
      },
      {
        "title": "Date Ranges",
        "body": "All stats commands support both predefined ranges and custom dates:\n\nPredefined ranges:\n\n--range today or --range 1d - Today only\n--range 4w - Last 4 weeks (default)\n--range 6m - Last 6 months\n--range all - All time (lifetime)\n\nDuration ranges (resolved to custom timestamps):\n\n--range 7d - Last 7 days\n--range 14d - Last 14 days\n--range 30d - Last 30 days\n--range 90d - Last 90 days\n\nCustom date ranges:\n\n--start YYYY - Start year (e.g., --start 2025)\n--start YYYY-MM - Start month (e.g., --start 2025-07)\n--start YYYY-MM-DD - Start date (e.g., --start 2025-07-15)\n--end YYYY[-MM[-DD]] - End date (same formats)\n\nExamples:\n\n# All of 2025\n./statsfm.py top-artists --start 2025 --end 2026\n\n# Just July 2025\n./statsfm.py top-tracks --start 2025-07 --end 2025-08\n\n# Q1 2025\n./statsfm.py artist-stats 39118 --start 2025-01-01 --end 2025-03-31"
      },
      {
        "title": "Granularity",
        "body": "--granularity monthly - Monthly breakdown (default)\n--granularity weekly - Weekly breakdown (shows week number + start date)\n--granularity daily - Daily breakdown (shows date + day name)\nWorks with artist-stats, track-stats, album-stats"
      },
      {
        "title": "Other Flags",
        "body": "--limit N / -l N - Limit results (default: 15)\n--user USERNAME / -u USERNAME - Specify the stats.fm username to query\n--no-album - Hide album names in track listings (albums show by default)"
      },
      {
        "title": "Usage Examples",
        "body": "# Search for an artist, then drill down\n./statsfm.py search \"madison beer\" --type artist\n./statsfm.py artist-stats 39118 --start 2025\n./statsfm.py top-tracks-from-artist 39118 --limit 20\n\n# Weekly breakdown of a track\n./statsfm.py track-stats 188745898 --start 2025 --end 2026 --granularity weekly\n\n# Custom date range\n./statsfm.py top-artists --start 2025-06 --end 2025-09\n\n# Album tracklist and discography\n./statsfm.py album 1365235\n./statsfm.py artist-albums 39118 --type album\n\n# Global charts\n./statsfm.py charts-top-tracks --limit 20"
      },
      {
        "title": "Automatic Monthly Breakdowns",
        "body": "Stats commands (artist-stats, track-stats, album-stats) automatically show:\n\nTotal plays and listening time\nMonthly breakdown with plays and time per month\nWorks for both predefined ranges and custom date ranges\n\nExample output:\n\nTotal: 505 plays  (29h 53m)\n\nMonthly breakdown:\n  2025-02:   67 plays  (3h 52m)\n  2025-03:  106 plays  (6h 21m)\n  2025-04:   40 plays  (2h 24m)\n  ..."
      },
      {
        "title": "Display Information",
        "body": "Track listings: Show position, track name, artist, album (by default), play count, time\nAlbum listings: Show position, album name, artist, play count, time\nArtist listings: Show position, artist name, play count, time, genres\nCharts: Show global rankings with stream counts\nRecent streams: Show timestamp, track, artist, album (by default)"
      },
      {
        "title": "Plus vs Free Users",
        "body": "Stats.fm Plus required for:\n\nStream counts in top lists\nListening time (play duration)\nDetailed statistics\n\nFree users get:\n\nRankings/positions\nTrack/artist/album names\nCurrently playing\nSearch functionality\nMonthly breakdowns (via per-day stats endpoint)\n\nThe script handles both gracefully, showing [Plus required] for missing data."
      },
      {
        "title": "API Information",
        "body": "Base URL: https://api.stats.fm/api/v1\n\nAuthentication: None needed for public profiles\n\nResponse format: JSON with item (single) or items (list) wrapper\n\nRate limiting: Be reasonable with requests. Avoid more than ~10 calls in rapid succession during deep dives."
      },
      {
        "title": "Error Handling",
        "body": "All errors print to stderr and exit with code 1.\n\nScenariostderr outputWhat to doNo user setError: No user specified.Pass --user USERNAME flagAPI error (4xx/5xx)API Error (code): messageCheck if user exists, profile is public, or ID is validConnection failureConnection Error: reasonRetry after a moment, check networkEmpty resultsNo error, just no outputUser may be private, or no data for that period — try --range allPlus-only dataShows [Plus required] inlineAcknowledge gracefully, show what's available"
      },
      {
        "title": "Finding IDs",
        "body": "Use search to find artist/track/album IDs:\n\n# Find artist\n./statsfm.py search \"sabrina carpenter\" --type artist\n# Returns: [22369] Sabrina Carpenter [pop]\n\n# Find track\n./statsfm.py search \"espresso\" --type track\n# Returns: [188745898] Espresso by Sabrina Carpenter\n\n# Find album\n./statsfm.py search \"short n sweet\" --type album\n# Returns: [56735245] Short n' Sweet by Sabrina Carpenter\n\nThen use the ID numbers in other commands."
      },
      {
        "title": "Tips",
        "body": "Use custom dates for analysis: --start 2025 --end 2026 to see full year stats\nChain discoveries: Search → Get ID → Detailed stats → Drill down\nCompare periods: Run same command with different date ranges\nExport data: Pipe output to file for records: ./statsfm.py top-tracks --start 2025 > 2025_top_tracks.txt\nAlbums show by default: Match the stats.fm UI behavior (album art is prominent)\nMonthly breakdowns: All stats commands show month-by-month progression automatically"
      },
      {
        "title": "For AI Agents",
        "body": "Setup: Check memory for a stats.fm username. If missing, ask. All personal data commands need --user USERNAME.\n\nMultiple time ranges: Always compare multiple ranges (--range today, 7d, 30d, 90d, all) to show how taste shifts over time. Lifetime stats alone miss current trends."
      },
      {
        "title": "Time Translations",
        "body": "\"This year\" → --start 2025 --end 2026\n\"Last summer\" → --start 2025-06 --end 2025-09\n\"When did I discover X\" → artist-stats <id> --range all (first month in breakdown)"
      },
      {
        "title": "Command Reference",
        "body": "IntentCommandKey flagsYour plays of a tracktrack-stats <id>--start/--end, --granularityYour plays of an artistartist-stats <id>--start/--end, --granularityYour plays of an albumalbum-stats <id>--start/--end, --granularityYour overall statsstream-stats--range, --start/--endYour rankingstop-tracks, top-artists, top-albums, top-genres--range, --start/--end, --limitCurrently playingnow-playingRecent tracksrecent--limitArtist overviewartist <id>--limitArtist's discographyartist-albums <id>--limitAlbum tracklistalbum <id>Your top tracks by artisttop-tracks-from-artist <id>--range, --limitYour top tracks on albumtop-tracks-from-album <id>--range, --limitYour top albums by artisttop-albums-from-artist <id>--range, --limitGlobal chartscharts-top-tracks, charts-top-artists, charts-top-albums--range, --limitFind IDssearch <query>--type artist|track|album"
      },
      {
        "title": "Edge Cases",
        "body": "Free users: Play counts are not available for top tracks — rankings and breakdowns still work, lead with those\nEmpty results: Try --range all as fallback. Could also be a private profile.\nSearch duplicates: Use the first result\nApple Music: Untested, may have gaps"
      },
      {
        "title": "References",
        "body": "Github Repo: statsfm/statsfm-cli\nAPI Endpoints: references/api.md\nOfficial JS Client: statsfm/statsfm.js"
      }
    ],
    "body": "stats.fm CLI\n\nComprehensive Python CLI for querying stats.fm API (Spotify listening analytics).\n\nRequirements: Python 3.6+ (stdlib only, no pip installs needed)\n\nScript location: scripts/statsfm.py in this skill's directory. Examples use ./statsfm.py assuming you're in the scripts folder.\n\nPrerequisites\n\nStats.fm account (optional)\n\nA stats.fm account is only needed for personal listening data (history, top tracks, now playing, etc.)\nWithout an account, you can still use public features: album tracklists, artist discographies, search, and global charts\nDon't have one? Visit stats.fm and sign up with Spotify or Apple Music (AM untested, Plus status unknown)\nAlready have one? Copy your username from your profile\nSetup\n\nNo account needed for public commands: search, album, artist-albums, charts-top-tracks, charts-top-artists, charts-top-albums.\n\nFor personal stats (profile, top-artists, top-tracks, recent, np, etc.), pass your username with --user USERNAME / -u USERNAME. These commands exit with code 1 if no user is provided.\n\nQuick Start\n# View your profile\n./statsfm.py profile\n\n# Top tracks this month\n./statsfm.py top-tracks --limit 10\n\n# Track stats for 2025\n./statsfm.py track-stats 188745898 --start 2025 --end 2026\n\nAll Commands\nUser Profile\nprofile - Show username, pronouns, bio, Plus status, timezone, Spotify sync info\nTop Lists\ntop-tracks - Your most played tracks\ntop-artists - Your most played artists\ntop-albums - Your most played albums\ntop-genres - Your top music genres\nCurrent Activity\nnow-playing (aliases: now, np) - Currently playing track\nrecent - Recently played tracks\nDetailed Stats\nartist-stats <artist_id> - Your play count, listening time, and monthly breakdown for this artist\ntrack-stats <track_id> - Your play count, listening time, and monthly breakdown for this track (shows track name + album)\nalbum-stats <album_id> - Your play count, listening time, and monthly breakdown for this album\nstream-stats - Your overall streaming summary (total streams, total time, avg track length, shortest/longest, unique counts for tracks/artists/albums)\nLookups\nartist <artist_id> - Artist info and discography. Shows genres, followers, popularity score (100 = very popular, 50 = underground, 0 = no data).\n--type album|single|all (default: all)\n--limit N - Items per section (default: 15)\nalbum <album_id> - Album info and full tracklist (release date, label, genres, tracks with duration and [E] tags)\nartist-albums <artist_id> - All albums/singles by artist, grouped by type (Albums, Singles & EPs, Compilations), newest first. Deduped by ID, 15 per section by default, shows \"(N more)\" overflow.\n--type album|single|all (default: all)\n--limit N - Items per section\nDrill-Down\ntop-tracks-from-artist <artist_id> - Your most played tracks from this artist\ntop-tracks-from-album <album_id> - Your most played tracks from this album\ntop-albums-from-artist <artist_id> - Your most played albums from this artist\nGlobal Charts\ncharts-top-tracks - Global top tracks chart\ncharts-top-artists - Global top artists chart\ncharts-top-albums - Global top albums chart\nSearch\nsearch <query> - Search for artists, tracks, or albums. Use --type artist|track|album to filter results to one category\nCommon Flags\nDate Ranges\n\nAll stats commands support both predefined ranges and custom dates:\n\nPredefined ranges:\n\n--range today or --range 1d - Today only\n--range 4w - Last 4 weeks (default)\n--range 6m - Last 6 months\n--range all - All time (lifetime)\n\nDuration ranges (resolved to custom timestamps):\n\n--range 7d - Last 7 days\n--range 14d - Last 14 days\n--range 30d - Last 30 days\n--range 90d - Last 90 days\n\nCustom date ranges:\n\n--start YYYY - Start year (e.g., --start 2025)\n--start YYYY-MM - Start month (e.g., --start 2025-07)\n--start YYYY-MM-DD - Start date (e.g., --start 2025-07-15)\n--end YYYY[-MM[-DD]] - End date (same formats)\n\nExamples:\n\n# All of 2025\n./statsfm.py top-artists --start 2025 --end 2026\n\n# Just July 2025\n./statsfm.py top-tracks --start 2025-07 --end 2025-08\n\n# Q1 2025\n./statsfm.py artist-stats 39118 --start 2025-01-01 --end 2025-03-31\n\nGranularity\n--granularity monthly - Monthly breakdown (default)\n--granularity weekly - Weekly breakdown (shows week number + start date)\n--granularity daily - Daily breakdown (shows date + day name)\nWorks with artist-stats, track-stats, album-stats\nOther Flags\n--limit N / -l N - Limit results (default: 15)\n--user USERNAME / -u USERNAME - Specify the stats.fm username to query\n--no-album - Hide album names in track listings (albums show by default)\nUsage Examples\n# Search for an artist, then drill down\n./statsfm.py search \"madison beer\" --type artist\n./statsfm.py artist-stats 39118 --start 2025\n./statsfm.py top-tracks-from-artist 39118 --limit 20\n\n# Weekly breakdown of a track\n./statsfm.py track-stats 188745898 --start 2025 --end 2026 --granularity weekly\n\n# Custom date range\n./statsfm.py top-artists --start 2025-06 --end 2025-09\n\n# Album tracklist and discography\n./statsfm.py album 1365235\n./statsfm.py artist-albums 39118 --type album\n\n# Global charts\n./statsfm.py charts-top-tracks --limit 20\n\nOutput Features\nAutomatic Monthly Breakdowns\n\nStats commands (artist-stats, track-stats, album-stats) automatically show:\n\nTotal plays and listening time\nMonthly breakdown with plays and time per month\nWorks for both predefined ranges and custom date ranges\n\nExample output:\n\nTotal: 505 plays  (29h 53m)\n\nMonthly breakdown:\n  2025-02:   67 plays  (3h 52m)\n  2025-03:  106 plays  (6h 21m)\n  2025-04:   40 plays  (2h 24m)\n  ...\n\nDisplay Information\nTrack listings: Show position, track name, artist, album (by default), play count, time\nAlbum listings: Show position, album name, artist, play count, time\nArtist listings: Show position, artist name, play count, time, genres\nCharts: Show global rankings with stream counts\nRecent streams: Show timestamp, track, artist, album (by default)\nPlus vs Free Users\n\nStats.fm Plus required for:\n\nStream counts in top lists\nListening time (play duration)\nDetailed statistics\n\nFree users get:\n\nRankings/positions\nTrack/artist/album names\nCurrently playing\nSearch functionality\nMonthly breakdowns (via per-day stats endpoint)\n\nThe script handles both gracefully, showing [Plus required] for missing data.\n\nAPI Information\n\nBase URL: https://api.stats.fm/api/v1\n\nAuthentication: None needed for public profiles\n\nResponse format: JSON with item (single) or items (list) wrapper\n\nRate limiting: Be reasonable with requests. Avoid more than ~10 calls in rapid succession during deep dives.\n\nError Handling\n\nAll errors print to stderr and exit with code 1.\n\nScenario\tstderr output\tWhat to do\nNo user set\tError: No user specified.\tPass --user USERNAME flag\nAPI error (4xx/5xx)\tAPI Error (code): message\tCheck if user exists, profile is public, or ID is valid\nConnection failure\tConnection Error: reason\tRetry after a moment, check network\nEmpty results\tNo error, just no output\tUser may be private, or no data for that period — try --range all\nPlus-only data\tShows [Plus required] inline\tAcknowledge gracefully, show what's available\nFinding IDs\n\nUse search to find artist/track/album IDs:\n\n# Find artist\n./statsfm.py search \"sabrina carpenter\" --type artist\n# Returns: [22369] Sabrina Carpenter [pop]\n\n# Find track\n./statsfm.py search \"espresso\" --type track\n# Returns: [188745898] Espresso by Sabrina Carpenter\n\n# Find album\n./statsfm.py search \"short n sweet\" --type album\n# Returns: [56735245] Short n' Sweet by Sabrina Carpenter\n\n\nThen use the ID numbers in other commands.\n\nTips\nUse custom dates for analysis: --start 2025 --end 2026 to see full year stats\nChain discoveries: Search → Get ID → Detailed stats → Drill down\nCompare periods: Run same command with different date ranges\nExport data: Pipe output to file for records: ./statsfm.py top-tracks --start 2025 > 2025_top_tracks.txt\nAlbums show by default: Match the stats.fm UI behavior (album art is prominent)\nMonthly breakdowns: All stats commands show month-by-month progression automatically\nFor AI Agents\n\nSetup: Check memory for a stats.fm username. If missing, ask. All personal data commands need --user USERNAME.\n\nMultiple time ranges: Always compare multiple ranges (--range today, 7d, 30d, 90d, all) to show how taste shifts over time. Lifetime stats alone miss current trends.\n\nTime Translations\n\"This year\" → --start 2025 --end 2026\n\"Last summer\" → --start 2025-06 --end 2025-09\n\"When did I discover X\" → artist-stats <id> --range all (first month in breakdown)\nCommand Reference\nIntent\tCommand\tKey flags\nYour plays of a track\ttrack-stats <id>\t--start/--end, --granularity\nYour plays of an artist\tartist-stats <id>\t--start/--end, --granularity\nYour plays of an album\talbum-stats <id>\t--start/--end, --granularity\nYour overall stats\tstream-stats\t--range, --start/--end\nYour rankings\ttop-tracks, top-artists, top-albums, top-genres\t--range, --start/--end, --limit\nCurrently playing\tnow-playing\t\nRecent tracks\trecent\t--limit\nArtist overview\tartist <id>\t--limit\nArtist's discography\tartist-albums <id>\t--limit\nAlbum tracklist\talbum <id>\t\nYour top tracks by artist\ttop-tracks-from-artist <id>\t--range, --limit\nYour top tracks on album\ttop-tracks-from-album <id>\t--range, --limit\nYour top albums by artist\ttop-albums-from-artist <id>\t--range, --limit\nGlobal charts\tcharts-top-tracks, charts-top-artists, charts-top-albums\t--range, --limit\nFind IDs\tsearch <query>\t--type artist|track|album\nEdge Cases\nFree users: Play counts are not available for top tracks — rankings and breakdowns still work, lead with those\nEmpty results: Try --range all as fallback. Could also be a private profile.\nSearch duplicates: Use the first result\nApple Music: Untested, may have gaps\nReferences\nGithub Repo: statsfm/statsfm-cli\nAPI Endpoints: references/api.md\nOfficial JS Client: statsfm/statsfm.js"
  },
  "trust": {
    "sourceLabel": "tencent",
    "provenanceUrl": "https://clawhub.ai/space0mel/statsfm",
    "publisherUrl": "https://clawhub.ai/space0mel/statsfm",
    "owner": "space0mel",
    "version": "2.5.2",
    "license": null,
    "verificationStatus": "Indexed source record"
  },
  "links": {
    "detailUrl": "https://openagent3.xyz/skills/statsfm",
    "downloadUrl": "https://openagent3.xyz/downloads/statsfm",
    "agentUrl": "https://openagent3.xyz/skills/statsfm/agent",
    "manifestUrl": "https://openagent3.xyz/skills/statsfm/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/statsfm/agent.md"
  }
}