{
  "schemaVersion": "1.0",
  "item": {
    "slug": "last-fm",
    "name": "last.fm",
    "source": "tencent",
    "type": "skill",
    "category": "开发工具",
    "sourceUrl": "https://clawhub.ai/keyfrog-21K/last-fm",
    "canonicalUrl": "https://clawhub.ai/keyfrog-21K/last-fm",
    "targetPlatform": "OpenClaw"
  },
  "install": {
    "downloadMode": "redirect",
    "downloadUrl": "/downloads/last-fm",
    "sourceDownloadUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=last-fm",
    "sourcePlatform": "tencent",
    "targetPlatform": "OpenClaw",
    "installMethod": "Manual import",
    "extraction": "Extract archive",
    "prerequisites": [
      "OpenClaw"
    ],
    "packageFormat": "ZIP package",
    "includedAssets": [
      "README.md",
      "SKILL.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. Then review README.md for any prerequisites, environment setup, or post-install checks. 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. Then review README.md for any prerequisites, environment setup, or post-install checks. 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/last-fm"
    },
    "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/last-fm",
    "agentPageUrl": "https://openagent3.xyz/skills/last-fm/agent",
    "manifestUrl": "https://openagent3.xyz/skills/last-fm/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/last-fm/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. Then review README.md for any prerequisites, environment setup, or post-install checks. 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. Then review README.md for any prerequisites, environment setup, or post-install checks. Summarize what changed and any follow-up checks I should run."
      }
    ]
  },
  "documentation": {
    "source": "clawhub",
    "primaryDoc": "SKILL.md",
    "sections": [
      {
        "title": "Album",
        "body": "album.getInfo\n\nGet album metadata (tracks, tags, playcount, cover art, etc.) for a given artist and album.\n\nExample request:\n\nGET https://ws.audioscrobbler.com/2.0/?method=album.getinfo&artist=Radiohead&album=OK+Computer&api_key=YOUR_API_KEY&format=json\n\nalbum.getTopTags\n\nGet the most popular tags applied to a specific album.\n\nExample request:\n\nGET https://ws.audioscrobbler.com/2.0/?method=album.gettoptags&artist=Radiohead&album=OK+Computer&api_key=YOUR_API_KEY&format=json\n\nalbum.search\n\nSearch for albums by name and get possible matches.\n\nExample request:\n\nGET https://ws.audioscrobbler.com/2.0/?method=album.search&album=OK+Computer&api_key=YOUR_API_KEY&format=json"
      },
      {
        "title": "Track",
        "body": "track.getInfo\n\nGet detailed metadata for a track, including album, duration, listeners, playcount, and wiki (if available).\n\nExample request:\n\nGET https://ws.audioscrobbler.com/2.0/?method=track.getinfo&artist=Radiohead&track=Karma+Police&api_key=YOUR_API_KEY&format=json\n\ntrack.getTopTags\n\nGet the most popular tags for a given track.\n\nExample request:\n\nGET https://ws.audioscrobbler.com/2.0/?method=track.gettoptags&artist=Radiohead&track=Karma+Police&api_key=YOUR_API_KEY&format=json\n\ntrack.search\n\nSearch for tracks by name (and optionally by artist) and get a list of matches.\n\nExample request:\n\nGET https://ws.audioscrobbler.com/2.0/?method=track.search&track=Karma+Police&api_key=YOUR_API_KEY&format=json"
      },
      {
        "title": "User",
        "body": "user.getInfo\n\nGet profile information about a user (playcount, country, age (if public), images, etc.).\n\nExample request:\n\nGET https://ws.audioscrobbler.com/2.0/?method=user.getinfo&user=someusername&api_key=YOUR_API_KEY&format=json\n\nuser.getRecentTracks\n\nGet the list of recently scrobbled tracks by a user, including timestamps and “now playing” status.\n\nExample request:\n\nGET https://ws.audioscrobbler.com/2.0/?method=user.getrecenttracks&user=someusername&limit=20&api_key=YOUR_API_KEY&format=json\n\nuser.getTopArtists\n\nGet a user’s top artists over a specific period (overall, 7day, 1month, 3month, 6month, 12month).\n\nExample request:\n\nGET https://ws.audioscrobbler.com/2.0/?method=user.gettopartists&user=someusername&period=1month&limit=20&api_key=YOUR_API_KEY&format=json\n\nuser.getTopTracks\n\nGet a user’s top tracks over a selected period.\n\nExample request:\n\nGET https://ws.audioscrobbler.com/2.0/?method=user.gettoptracks&user=someusername&period=3month&limit=20&api_key=YOUR_API_KEY&format=json"
      },
      {
        "title": "Library",
        "body": "library.getArtists\n\nGet a paginated list of all artists in a user’s library with play counts and tag counts.\n\nExample request:\n\nGET https://ws.audioscrobbler.com/2.0/?method=library.getartists&user=someusername&limit=10&page=1&api_key=YOUR_API_KEY&format=json\n\nlibrary.getAlbums\n\nGet albums from a user’s library, optionally filtered by artist.\n\nExample request:\n\nGET https://ws.audioscrobbler.com/2.0/?method=library.getalbums&user=someusername&limit=10&page=1&api_key=YOUR_API_KEY&format=json\n\nlibrary.getTracks\n\nGet tracks from a user’s library with their play counts.\n\nExample request:\n\nGET https://ws.audioscrobbler.com/2.0/?method=library.gettracks&user=someusername&limit=10&page=1&api_key=YOUR_API_KEY&format=json"
      },
      {
        "title": "Chart",
        "body": "chart.getTopArtists\n\nGet the global top artists chart on Last.fm.\n\nExample request:\n\nGET https://ws.audioscrobbler.com/2.0/?method=chart.gettopartists&api_key=YOUR_API_KEY&format=json\n\nchart.getTopTracks\n\nGet the global top tracks chart.\n\nExample request:\n\nGET https://ws.audioscrobbler.com/2.0/?method=chart.gettoptracks&api_key=YOUR_API_KEY&format=json\n\nchart.getTopTags\n\nGet the global top tags chart.\n\nExample request:\n\nGET https://ws.audioscrobbler.com/2.0/?method=chart.gettoptags&api_key=YOUR_API_KEY&format=json"
      },
      {
        "title": "Tag",
        "body": "tag.getInfo\n\nGet metadata for a tag (description, reach, total uses, etc.).\n\nExample request:\n\nGET https://ws.audioscrobbler.com/2.0/?method=tag.getinfo&tag=k-pop&api_key=YOUR_API_KEY&format=json\n\ntag.getTopArtists\n\nGet top artists associated with a specific tag.\n\nExample request:\n\nGET https://ws.audioscrobbler.com/2.0/?method=tag.gettopartists&tag=k-pop&api_key=YOUR_API_KEY&format=json\n\ntag.getTopTracks\n\nGet top tracks associated with a tag.\n\nExample request:\n\nGET https://ws.audioscrobbler.com/2.0/?method=tag.gettoptracks&tag=k-pop&api_key=YOUR_API_KEY&format=json\n\ntag.getTopAlbums\n\nGet top albums associated with a tag.\n\nExample request:\n\nGET https://ws.audioscrobbler.com/2.0/?method=tag.gettopalbums&tag=k-pop&api_key=YOUR_API_KEY&format=json"
      }
    ],
    "body": "# OpenClaw-Last.fm\nA openclaw Skill with Last.fm API\n\n## Requirements\n- Last.fm API Key ([Get in website](https://www.last.fm/api))\n\n## How to request API\n- Root URL: `https://ws.audioscrobbler.com/2.0/` (GET/POST)\n\n### Required parameters\n- `api_key`: API Key\n- `method`: Method name\n- `format`: XML (default) or JSON\n\n---\n\n## Methods\n\nBelow are commonly used Last.fm methods grouped by resource type.  \nAll requests use the same base URL and append query parameters.\n\n---\n\n### Artist\n\n#### `artist.getInfo`\nGet detailed information about a specific artist (bio, images, stats, tags, similar artists, etc.).\n\n**Example request (JSON):**\n```http\nGET https://ws.audioscrobbler.com/2.0/?method=artist.getinfo&artist=Radiohead&api_key=YOUR_API_KEY&format=json\n\nartist.getTopTracks\n\nGet the top tracks for an artist, ordered by playcount.\n\nExample request:\n\nGET https://ws.audioscrobbler.com/2.0/?method=artist.gettoptracks&artist=Radiohead&api_key=YOUR_API_KEY&format=json\n\nartist.getTopAlbums\n\nGet the top albums for an artist, ordered by playcount.\n\nExample request:\n\nGET https://ws.audioscrobbler.com/2.0/?method=artist.gettopalbums&artist=Radiohead&api_key=YOUR_API_KEY&format=json\n\nartist.search\n\nSearch for artists by name and get a list of matching artists.\n\nExample request:\n\nGET https://ws.audioscrobbler.com/2.0/?method=artist.search&artist=Radiohead&api_key=YOUR_API_KEY&format=json\n\nAlbum\nalbum.getInfo\n\nGet album metadata (tracks, tags, playcount, cover art, etc.) for a given artist and album.\n\nExample request:\n\nGET https://ws.audioscrobbler.com/2.0/?method=album.getinfo&artist=Radiohead&album=OK+Computer&api_key=YOUR_API_KEY&format=json\n\nalbum.getTopTags\n\nGet the most popular tags applied to a specific album.\n\nExample request:\n\nGET https://ws.audioscrobbler.com/2.0/?method=album.gettoptags&artist=Radiohead&album=OK+Computer&api_key=YOUR_API_KEY&format=json\n\nalbum.search\n\nSearch for albums by name and get possible matches.\n\nExample request:\n\nGET https://ws.audioscrobbler.com/2.0/?method=album.search&album=OK+Computer&api_key=YOUR_API_KEY&format=json\n\nTrack\ntrack.getInfo\n\nGet detailed metadata for a track, including album, duration, listeners, playcount, and wiki (if available).\n\nExample request:\n\nGET https://ws.audioscrobbler.com/2.0/?method=track.getinfo&artist=Radiohead&track=Karma+Police&api_key=YOUR_API_KEY&format=json\n\ntrack.getTopTags\n\nGet the most popular tags for a given track.\n\nExample request:\n\nGET https://ws.audioscrobbler.com/2.0/?method=track.gettoptags&artist=Radiohead&track=Karma+Police&api_key=YOUR_API_KEY&format=json\n\ntrack.search\n\nSearch for tracks by name (and optionally by artist) and get a list of matches.\n\nExample request:\n\nGET https://ws.audioscrobbler.com/2.0/?method=track.search&track=Karma+Police&api_key=YOUR_API_KEY&format=json\n\nUser\nuser.getInfo\n\nGet profile information about a user (playcount, country, age (if public), images, etc.).\n\nExample request:\n\nGET https://ws.audioscrobbler.com/2.0/?method=user.getinfo&user=someusername&api_key=YOUR_API_KEY&format=json\n\nuser.getRecentTracks\n\nGet the list of recently scrobbled tracks by a user, including timestamps and “now playing” status.\n\nExample request:\n\nGET https://ws.audioscrobbler.com/2.0/?method=user.getrecenttracks&user=someusername&limit=20&api_key=YOUR_API_KEY&format=json\n\nuser.getTopArtists\n\nGet a user’s top artists over a specific period (overall, 7day, 1month, 3month, 6month, 12month).\n\nExample request:\n\nGET https://ws.audioscrobbler.com/2.0/?method=user.gettopartists&user=someusername&period=1month&limit=20&api_key=YOUR_API_KEY&format=json\n\nuser.getTopTracks\n\nGet a user’s top tracks over a selected period.\n\nExample request:\n\nGET https://ws.audioscrobbler.com/2.0/?method=user.gettoptracks&user=someusername&period=3month&limit=20&api_key=YOUR_API_KEY&format=json\n\nLibrary\nlibrary.getArtists\n\nGet a paginated list of all artists in a user’s library with play counts and tag counts.\n\nExample request:\n\nGET https://ws.audioscrobbler.com/2.0/?method=library.getartists&user=someusername&limit=10&page=1&api_key=YOUR_API_KEY&format=json\n\nlibrary.getAlbums\n\nGet albums from a user’s library, optionally filtered by artist.\n\nExample request:\n\nGET https://ws.audioscrobbler.com/2.0/?method=library.getalbums&user=someusername&limit=10&page=1&api_key=YOUR_API_KEY&format=json\n\nlibrary.getTracks\n\nGet tracks from a user’s library with their play counts.\n\nExample request:\n\nGET https://ws.audioscrobbler.com/2.0/?method=library.gettracks&user=someusername&limit=10&page=1&api_key=YOUR_API_KEY&format=json\n\nChart\nchart.getTopArtists\n\nGet the global top artists chart on Last.fm.\n\nExample request:\n\nGET https://ws.audioscrobbler.com/2.0/?method=chart.gettopartists&api_key=YOUR_API_KEY&format=json\n\nchart.getTopTracks\n\nGet the global top tracks chart.\n\nExample request:\n\nGET https://ws.audioscrobbler.com/2.0/?method=chart.gettoptracks&api_key=YOUR_API_KEY&format=json\n\nchart.getTopTags\n\nGet the global top tags chart.\n\nExample request:\n\nGET https://ws.audioscrobbler.com/2.0/?method=chart.gettoptags&api_key=YOUR_API_KEY&format=json\n\nTag\ntag.getInfo\n\nGet metadata for a tag (description, reach, total uses, etc.).\n\nExample request:\n\nGET https://ws.audioscrobbler.com/2.0/?method=tag.getinfo&tag=k-pop&api_key=YOUR_API_KEY&format=json\n\ntag.getTopArtists\n\nGet top artists associated with a specific tag.\n\nExample request:\n\nGET https://ws.audioscrobbler.com/2.0/?method=tag.gettopartists&tag=k-pop&api_key=YOUR_API_KEY&format=json\n\ntag.getTopTracks\n\nGet top tracks associated with a tag.\n\nExample request:\n\nGET https://ws.audioscrobbler.com/2.0/?method=tag.gettoptracks&tag=k-pop&api_key=YOUR_API_KEY&format=json\n\ntag.getTopAlbums\n\nGet top albums associated with a tag.\n\nExample request:\n\nGET https://ws.audioscrobbler.com/2.0/?method=tag.gettopalbums&tag=k-pop&api_key=YOUR_API_KEY&format=json"
  },
  "trust": {
    "sourceLabel": "tencent",
    "provenanceUrl": "https://clawhub.ai/keyfrog-21K/last-fm",
    "publisherUrl": "https://clawhub.ai/keyfrog-21K/last-fm",
    "owner": "keyfrog-21K",
    "version": "1.0.0",
    "license": null,
    "verificationStatus": "Indexed source record"
  },
  "links": {
    "detailUrl": "https://openagent3.xyz/skills/last-fm",
    "downloadUrl": "https://openagent3.xyz/downloads/last-fm",
    "agentUrl": "https://openagent3.xyz/skills/last-fm/agent",
    "manifestUrl": "https://openagent3.xyz/skills/last-fm/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/last-fm/agent.md"
  }
}