[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6PXSSG61BJAFWC537QV8GC5":3,"skill-same:01M6PXSSG61BJAFWC537QV8GC5":89},{"skillNo":4,"name":5,"nameZh":6,"description":7,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":15,"categories":16,"keywords":17,"publishedAt":38,"linkOnly":39,"markdownContent":40,"markdownBody":41,"frontMatter":42,"refName":43,"commitSha":44,"skillDirectory":45,"forksCount":46,"repositoryHtmlUrl":47,"repositoryHomepageUrl":6,"ownerHtmlUrl":48,"ownerBlogUrl":6,"ownerDescription":49,"updatedAt":50,"install":51,"resources":64},"01M6PXSSG61BJAFWC537QV8GC5","spotify-history",null,"Access Spotify listening history, top artists\u002Ftracks, and get personalized recommendations via the Spotify Web API. Use when fetching a user's recent plays, analyzing music taste, or generating recommendations. Requires one-time OAuth setup.","Kernel8901\u002Fai-agent-skills-classification","Kernel8901","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F72647553?v=4","01M6KV388J2H5PNC8D8P940BJD","01M6KV38CS5B3AY63RKZB410YM",7,"MIT","https:\u002F\u002Fgithub.com\u002FKernel8901\u002Fai-agent-skills-classification\u002Fblob\u002Fmain\u002F媒体与流媒体\u002Fspotify-history\u002FSKILL.md",[],[18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37],"history","spotify","spotify history","top","web","tracks","spotify web api","web api","via","taste","recommendations","get","time","use","music","access","api","OAuth","analyzing","setup","2026-11-10 10:12:30",false,"---\nname: spotify-history\ndescription: Access Spotify listening history, top artists\u002Ftracks, and get personalized recommendations via the Spotify Web API. Use when fetching a user's recent plays, analyzing music taste, or generating recommendations. Requires one-time OAuth setup.\n---\n\n# Spotify History & Recommendations\n\nAccess Spotify listening history and get personalized recommendations.\n\n## Setup (One-Time)\n\n### Quick Setup (Recommended)\n\nRun the setup wizard:\n```bash\nbash skills\u002Fspotify-history\u002Fscripts\u002Fsetup.sh\n```\n\nThis guides you through:\n1. Creating a Spotify Developer App\n2. Saving credentials securely\n3. Authorizing access\n\n### Manual Setup\n\n1. **Create Spotify Developer App**\n   - Go to [developer.spotify.com\u002Fdashboard](https:\u002F\u002Fdeveloper.spotify.com\u002Fdashboard)\n   - Click **Create App**\n   - Fill in:\n     - **App name:** `Clawd` (or any name)\n     - **App description:** `Personal assistant integration`\n     - **Redirect URI:** `http:\u002F\u002F127.0.0.1:8888\u002Fcallback` ⚠️ Use exact URL!\n   - Save and copy **Client ID** and **Client Secret**\n\n2. **Store Credentials**\n\n   **Option A: Credentials file (recommended)**\n   ```bash\n   mkdir -p credentials\n   cat > credentials\u002Fspotify.json \u003C\u003CEOF\n   {\n     \"client_id\": \"your_client_id\",\n     \"client_secret\": \"your_client_secret\"\n   }\n   EOF\n   chmod 600 credentials\u002Fspotify.json\n   ```\n\n   **Option B: Environment variables**\n   ```bash\n   # Add to ~\u002F.zshrc or ~\u002F.bashrc\n   export SPOTIFY_CLIENT_ID=\"your_client_id\"\n   export SPOTIFY_CLIENT_SECRET=\"your_client_secret\"\n   ```\n\n3. **Authenticate**\n\n   **With browser (local machine):**\n   ```bash\n   python3 scripts\u002Fspotify-auth.py\n   ```\n\n   **Headless (no browser):**\n   ```bash\n   python3 scripts\u002Fspotify-auth.py --headless\n   ```\n   Follow the prompts to authorize via URL and paste the callback.\n\nTokens are saved to `~\u002F.config\u002Fspotify-clawd\u002Ftoken.json` and auto-refresh when expired.\n\n## Usage\n\n### Command Line\n\n```bash\n# Recent listening history\npython3 scripts\u002Fspotify-api.py recent\n\n# Top artists (time_range: short_term, medium_term, long_term)\npython3 scripts\u002Fspotify-api.py top-artists medium_term\n\n# Top tracks\npython3 scripts\u002Fspotify-api.py top-tracks medium_term\n\n# Get recommendations based on your top artists\npython3 scripts\u002Fspotify-api.py recommend\n\n# Raw API call (any endpoint)\npython3 scripts\u002Fspotify-api.py json \u002Fme\npython3 scripts\u002Fspotify-api.py json \u002Fme\u002Fplayer\u002Frecently-played\n```\n\n### Time Ranges\n\n- `short_term` — approximately last 4 weeks\n- `medium_term` — approximately last 6 months (default)\n- `long_term` — all time\n\n### Example Output\n\n```\nTop Artists (medium_term):\n  1. Hans Zimmer [soundtrack, score]\n  2. John Williams [soundtrack, score]\n  3. Michael Giacchino [soundtrack, score]\n  4. Max Richter [ambient, modern classical]\n  5. Ludovico Einaudi [italian contemporary classical]\n```\n\n## Agent Usage\n\nWhen user asks about music:\n- \"What have I been listening to?\" → `spotify-api.py recent`\n- \"Who are my top artists?\" → `spotify-api.py top-artists`\n- \"Recommend new music\" → `spotify-api.py recommend` + add your own knowledge\n\nFor recommendations, combine API data with music knowledge to suggest similar artists not in their library.\n\n## Troubleshooting\n\n### \"Spotify credentials not found!\"\n- Make sure `credentials\u002Fspotify.json` exists **or** environment variables are set\n- Credential file is checked first, then env vars\n- Run `bash skills\u002Fspotify-history\u002Fscripts\u002Fsetup.sh` to create credentials\n\n### \"Not authenticated. Run spotify-auth.py first.\"\n- Tokens don't exist or are invalid\n- Run: `python3 scripts\u002Fspotify-auth.py` (or with `--headless` if no browser)\n\n### \"HTTP Error 400: Bad Request\" during token refresh\n- Credentials changed or are invalid\n- Re-run setup: `bash skills\u002Fspotify-history\u002Fscripts\u002Fsetup.sh`\n- Or update `credentials\u002Fspotify.json` with correct Client ID\u002FSecret\n\n### \"HTTP Error 401: Unauthorized\"\n- Token expired and auto-refresh failed\n- Delete token and re-authenticate:\n  ```bash\n  rm ~\u002F.config\u002Fspotify-clawd\u002Ftoken.json\n  python3 scripts\u002Fspotify-auth.py\n  ```\n\n### Headless \u002F No Browser\n- Use `--headless` flag: `python3 scripts\u002Fspotify-auth.py --headless`\n- Manually open the auth URL on any device\n- Copy the callback URL (starts with `http:\u002F\u002F127.0.0.1:8888\u002Fcallback?code=...`)\n- Paste it back when prompted\n\n## Security Notes\n\n- Tokens stored with 0600 permissions (user-only read\u002Fwrite)\n- Client secret should be kept private\n- Redirect URI uses `127.0.0.1` (local only) for security\n\n## Required Scopes\n\n- `user-read-recently-played` — recent listening history\n- `user-top-read` — top artists and tracks\n- `user-read-playback-state` — current playback\n- `user-read-currently-playing` — currently playing track\n","# Spotify History & Recommendations\n\nAccess Spotify listening history and get personalized recommendations.\n\n## Setup (One-Time)\n\n### Quick Setup (Recommended)\n\nRun the setup wizard:\n```bash\nbash skills\u002Fspotify-history\u002Fscripts\u002Fsetup.sh\n```\n\nThis guides you through:\n1. Creating a Spotify Developer App\n2. Saving credentials securely\n3. Authorizing access\n\n### Manual Setup\n\n1. **Create Spotify Developer App**\n   - Go to [developer.spotify.com\u002Fdashboard](https:\u002F\u002Fdeveloper.spotify.com\u002Fdashboard)\n   - Click **Create App**\n   - Fill in:\n     - **App name:** `Clawd` (or any name)\n     - **App description:** `Personal assistant integration`\n     - **Redirect URI:** `http:\u002F\u002F127.0.0.1:8888\u002Fcallback` ⚠️ Use exact URL!\n   - Save and copy **Client ID** and **Client Secret**\n\n2. **Store Credentials**\n\n   **Option A: Credentials file (recommended)**\n   ```bash\n   mkdir -p credentials\n   cat > credentials\u002Fspotify.json \u003C\u003CEOF\n   {\n     \"client_id\": \"your_client_id\",\n     \"client_secret\": \"your_client_secret\"\n   }\n   EOF\n   chmod 600 credentials\u002Fspotify.json\n   ```\n\n   **Option B: Environment variables**\n   ```bash\n   # Add to ~\u002F.zshrc or ~\u002F.bashrc\n   export SPOTIFY_CLIENT_ID=\"your_client_id\"\n   export SPOTIFY_CLIENT_SECRET=\"your_client_secret\"\n   ```\n\n3. **Authenticate**\n\n   **With browser (local machine):**\n   ```bash\n   python3 scripts\u002Fspotify-auth.py\n   ```\n\n   **Headless (no browser):**\n   ```bash\n   python3 scripts\u002Fspotify-auth.py --headless\n   ```\n   Follow the prompts to authorize via URL and paste the callback.\n\nTokens are saved to `~\u002F.config\u002Fspotify-clawd\u002Ftoken.json` and auto-refresh when expired.\n\n## Usage\n\n### Command Line\n\n```bash\n# Recent listening history\npython3 scripts\u002Fspotify-api.py recent\n\n# Top artists (time_range: short_term, medium_term, long_term)\npython3 scripts\u002Fspotify-api.py top-artists medium_term\n\n# Top tracks\npython3 scripts\u002Fspotify-api.py top-tracks medium_term\n\n# Get recommendations based on your top artists\npython3 scripts\u002Fspotify-api.py recommend\n\n# Raw API call (any endpoint)\npython3 scripts\u002Fspotify-api.py json \u002Fme\npython3 scripts\u002Fspotify-api.py json \u002Fme\u002Fplayer\u002Frecently-played\n```\n\n### Time Ranges\n\n- `short_term` — approximately last 4 weeks\n- `medium_term` — approximately last 6 months (default)\n- `long_term` — all time\n\n### Example Output\n\n```\nTop Artists (medium_term):\n  1. Hans Zimmer [soundtrack, score]\n  2. John Williams [soundtrack, score]\n  3. Michael Giacchino [soundtrack, score]\n  4. Max Richter [ambient, modern classical]\n  5. Ludovico Einaudi [italian contemporary classical]\n```\n\n## Agent Usage\n\nWhen user asks about music:\n- \"What have I been listening to?\" → `spotify-api.py recent`\n- \"Who are my top artists?\" → `spotify-api.py top-artists`\n- \"Recommend new music\" → `spotify-api.py recommend` + add your own knowledge\n\nFor recommendations, combine API data with music knowledge to suggest similar artists not in their library.\n\n## Troubleshooting\n\n### \"Spotify credentials not found!\"\n- Make sure `credentials\u002Fspotify.json` exists **or** environment variables are set\n- Credential file is checked first, then env vars\n- Run `bash skills\u002Fspotify-history\u002Fscripts\u002Fsetup.sh` to create credentials\n\n### \"Not authenticated. Run spotify-auth.py first.\"\n- Tokens don't exist or are invalid\n- Run: `python3 scripts\u002Fspotify-auth.py` (or with `--headless` if no browser)\n\n### \"HTTP Error 400: Bad Request\" during token refresh\n- Credentials changed or are invalid\n- Re-run setup: `bash skills\u002Fspotify-history\u002Fscripts\u002Fsetup.sh`\n- Or update `credentials\u002Fspotify.json` with correct Client ID\u002FSecret\n\n### \"HTTP Error 401: Unauthorized\"\n- Token expired and auto-refresh failed\n- Delete token and re-authenticate:\n  ```bash\n  rm ~\u002F.config\u002Fspotify-clawd\u002Ftoken.json\n  python3 scripts\u002Fspotify-auth.py\n  ```\n\n### Headless \u002F No Browser\n- Use `--headless` flag: `python3 scripts\u002Fspotify-auth.py --headless`\n- Manually open the auth URL on any device\n- Copy the callback URL (starts with `http:\u002F\u002F127.0.0.1:8888\u002Fcallback?code=...`)\n- Paste it back when prompted\n\n## Security Notes\n\n- Tokens stored with 0600 permissions (user-only read\u002Fwrite)\n- Client secret should be kept private\n- Redirect URI uses `127.0.0.1` (local only) for security\n\n## Required Scopes\n\n- `user-read-recently-played` — recent listening history\n- `user-top-read` — top artists and tracks\n- `user-read-playback-state` — current playback\n- `user-read-currently-playing` — currently playing track\n",{"name":5,"description":7},"main","f4cb2d49f7667e79ef7804f50396d5aaffdf1f56","媒体与流媒体\u002Fspotify-history",1,"https:\u002F\u002Fgithub.com\u002FKernel8901\u002Fai-agent-skills-classification","https:\u002F\u002Fgithub.com\u002FKernel8901","a little little little dobe in life but science geek","2026-04-05 16:43:56",{"source":8,"skillName":5,"commands":52,"prompt":62,"zipAvailable":63},[53,56,59],{"tool":54,"command":55},"npx","npx skills add Kernel8901\u002Fai-agent-skills-classification --skill spotify-history",{"tool":57,"command":58},"bunx","bunx skills add Kernel8901\u002Fai-agent-skills-classification --skill spotify-history",{"tool":60,"command":61},"pnpm","pnpm dlx skills add Kernel8901\u002Fai-agent-skills-classification --skill spotify-history","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002FKernel8901\u002Fai-agent-skills-classification\u002Fblob\u002Fmain\u002F媒体与流媒体\u002Fspotify-history\u002FSKILL.md",true,[65,71,75,81,85],{"path":66,"resourceType":67,"resourceTypeDesc":68,"sizeBytes":69,"sourceHtmlUrl":70},"_meta.json","REFERENCE","参考文档",466,"https:\u002F\u002Fgithub.com\u002FKernel8901\u002Fai-agent-skills-classification\u002Fblob\u002Fmain\u002F媒体与流媒体\u002Fspotify-history\u002F_meta.json",{"path":72,"resourceType":67,"resourceTypeDesc":68,"sizeBytes":73,"sourceHtmlUrl":74},"README.md",1263,"https:\u002F\u002Fgithub.com\u002FKernel8901\u002Fai-agent-skills-classification\u002Fblob\u002Fmain\u002F媒体与流媒体\u002Fspotify-history\u002FREADME.md",{"path":76,"resourceType":77,"resourceTypeDesc":78,"sizeBytes":79,"sourceHtmlUrl":80},"scripts\u002Fsetup.sh","SCRIPT","脚本",2067,"https:\u002F\u002Fgithub.com\u002FKernel8901\u002Fai-agent-skills-classification\u002Fblob\u002Fmain\u002F媒体与流媒体\u002Fspotify-history\u002Fscripts\u002Fsetup.sh",{"path":82,"resourceType":77,"resourceTypeDesc":78,"sizeBytes":83,"sourceHtmlUrl":84},"scripts\u002Fspotify-api.py",5469,"https:\u002F\u002Fgithub.com\u002FKernel8901\u002Fai-agent-skills-classification\u002Fblob\u002Fmain\u002F媒体与流媒体\u002Fspotify-history\u002Fscripts\u002Fspotify-api.py",{"path":86,"resourceType":77,"resourceTypeDesc":78,"sizeBytes":87,"sourceHtmlUrl":88},"scripts\u002Fspotify-auth.py",3499,"https:\u002F\u002Fgithub.com\u002FKernel8901\u002Fai-agent-skills-classification\u002Fblob\u002Fmain\u002F媒体与流媒体\u002Fspotify-history\u002Fscripts\u002Fspotify-auth.py",[90,113,148,159,169,198],{"skillNo":91,"name":92,"nameZh":6,"description":93,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":94,"categories":95,"keywords":96,"publishedAt":38},"01M6Q5R6WZ06RRB9RQTW54B34B","zyfai","Earn yield on any Ethereum wallet on Base, Arbitrum, and Plasma. Use when a user wants passive DeFi yield on their funds. Deploys a non-custodial subaccount (Safe) linked to their EOA, enables automated yield optimization, and lets them deposit\u002Fwithdraw anytime.","https:\u002F\u002Fgithub.com\u002FKernel8901\u002Fai-agent-skills-classification\u002Fblob\u002Fmain\u002F金融\u002Fzyfai-sdk\u002FSKILL.md",[],[92,97,98,99,100,101,31,102,103,104,105,106,107,108,109,110,111,112],"safe","ethereum","defi","Optimization","user","Wallet","base","deposit","withdraw","yield","arbitrum","non-custodial","passive","defi yield","earn","yield optimization",{"skillNo":114,"name":115,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":116,"categories":117,"keywords":131,"publishedAt":38},"01M6Q5R337B5JSNER4P4YS03TN","zerion-api","https:\u002F\u002Fgithub.com\u002FKernel8901\u002Fai-agent-skills-classification\u002Fblob\u002Fmain\u002F金融\u002Fzerion-api\u002FSKILL.md",[118,123,126],{"categoryNo":119,"categoryName":120,"taxonomyType":121,"taxonomyTypeDesc":122},"01JBSEEDCAT000000000000010","后端与接口","SCENARIO","使用场景",{"categoryNo":124,"categoryName":125,"taxonomyType":121,"taxonomyTypeDesc":122},"01JBSEEDCAT000000000000023","Skill与智能体开发",{"categoryNo":127,"categoryName":128,"taxonomyType":129,"taxonomyTypeDesc":130},"01JBSEEDCAT000000000000030","开发工程师","PROFESSION","适用职业",[34,132,133,134,135,136,137,99,138,102,139,140,141,142,143,144,145,146,147],"zerion api","zerion","MCP","mcp server","server","blockchain","transactions","crypto wallet","crypto","evm","solana","query","across","positions","token","prices",{"skillNo":149,"name":150,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":151,"categories":152,"keywords":156,"publishedAt":38},"01M6Q5QZFYTDAZMZ27BN5VZXAR","zerion-api-skill","https:\u002F\u002Fgithub.com\u002FKernel8901\u002Fai-agent-skills-classification\u002Fblob\u002Fmain\u002F金融\u002Fzerion-api-skill\u002FSKILL.md",[153,154,155],{"categoryNo":119,"categoryName":120,"taxonomyType":121,"taxonomyTypeDesc":122},{"categoryNo":124,"categoryName":125,"taxonomyType":121,"taxonomyTypeDesc":122},{"categoryNo":127,"categoryName":128,"taxonomyType":129,"taxonomyTypeDesc":130},[34,157,158,132,133,134,135,136,137,99,138,102,140,141,142,143,144,145,146,147],"api skill","zerion api skill",{"skillNo":160,"name":161,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":162,"categories":163,"keywords":167,"publishedAt":38},"01M6Q5QW17QW98RA3FE45E4RD8","zerion-api-mcp","https:\u002F\u002Fgithub.com\u002FKernel8901\u002Fai-agent-skills-classification\u002Fblob\u002Fmain\u002F金融\u002Fzerion-api-mcp\u002FSKILL.md",[164,165,166],{"categoryNo":119,"categoryName":120,"taxonomyType":121,"taxonomyTypeDesc":122},{"categoryNo":124,"categoryName":125,"taxonomyType":121,"taxonomyTypeDesc":122},{"categoryNo":127,"categoryName":128,"taxonomyType":129,"taxonomyTypeDesc":130},[134,34,168,132,133,135,136,99,138,102,139,140,141,142,143,144,145,146,147],"zerion api mcp",{"skillNo":170,"name":171,"nameZh":6,"description":172,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":173,"categories":174,"keywords":178,"publishedAt":38},"01M6Q5QQYZB7A501BDEQWKGSJT","yahoo-finance-forex","Fetches real-time FOREX news and market data from Yahoo Finance for major currency pairs (EUR\u002FUSD, GBP\u002FUSD, USD\u002FJPY, etc.). Analyzes sentiment and provides trading context.","https:\u002F\u002Fgithub.com\u002FKernel8901\u002Fai-agent-skills-classification\u002Fblob\u002Fmain\u002F金融\u002Fyahoo-finance-forex\u002FSKILL.md",[175],{"categoryNo":176,"categoryName":177,"taxonomyType":129,"taxonomyTypeDesc":130},"01JBSEEDCAT000000000000040","财务",[179,180,181,182,183,184,185,186,187,188,189,190,191,192,30,193,194,195,196,197],"finance","yahoo finance","forex","yahoo","yahoo finance forex","github","https","sentiment","real-time","python3","install","Market","usd","news","currency","gbp","pip","market data","for",{"skillNo":199,"name":200,"nameZh":6,"description":201,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":202,"categories":203,"keywords":205,"publishedAt":38},"01M6Q5QM6VS84WZVM7BKXXPF32","yahoo-finance","This skill should be used when the user asks to \"get stock prices\", \"check stock quotes\", \"look up earnings\", \"get financial data\", \"find trending stocks\", or needs stock market data from Yahoo Finance.","https:\u002F\u002Fgithub.com\u002FKernel8901\u002Fai-agent-skills-classification\u002Fblob\u002Fmain\u002F金融\u002Fyahoo-finance-cli\u002FSKILL.md",[204],{"categoryNo":176,"categoryName":177,"taxonomyType":129,"taxonomyTypeDesc":130},[179,180,182,206,207,208,209,210,211,190,212,29,213,214,215,216,217,218,147,196],"cli","homebrew","find","check","brew","up","local","stock","link","trending","sf","quotes","ln"]