用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
直接命令不会经过审查 Prompt;运行前请先检查来源。
npx skills add https://github.com/420company/artemis --skill assets命令会保持在同一行。复制前请横向滚动并检查完整内容。
想先保存到本地?可下载 SkillsMP 当前能够提供的文件。
This skill should be used when the user asks to "call the Spotify Ads API", "create a Spotify ad campaign", "manage Spotify ads", "pull Spotify ad reports", "set up ad sets or ads", "upload ad assets", "target audiences on Spotify", "check campaign status", "get ad account info", "look up API schema or fields", "check what targeting options exist", or asks about Spotify advertising endpoints, request/response formats, enum values, or authentication.
Comprehensive Cloudflare platform skill covering Workers, Pages, storage (KV, D1, R2), AI (Workers AI, Vectorize, Agents SDK), networking (Tunnel, Spectrum), security (WAF, DDoS), and infrastructure-as-code (Terraform, Pulumi). Use for any Cloudflare development task. Biases towards retrieval from Cloudflare docs over pre-trained knowledge.
Accessibility audit skill for scanning, fixing, and verifying WCAG 2.2 Level A and AA compliance across React, Next.js, Vue, Angular, Svelte, and plain HTML codebases. Use when auditing accessibility, fixing a11y violations, checking color contrast, generating compliance reports, or integrating accessibility checks into CI/CD pipelines.
基于 SOC 职业分类
正在显示 SKILL.md
| name | assets |
| description | Upload, list, and manage Spotify Ads API creative assets — audio, video, and images for ad campaigns. |
| argument-hint | upload <file_path> | list [audio|video|image] | get <asset_id> | archive <asset_id> |
| allowed-tools | ["Read","Bash","AskUserQuestion"] |
Upload, list, retrieve, and archive creative assets (audio, video, images) for use in ads.
.claude/spotify-ads-api.local.md for access_token, ad_account_id, auto_execute.https://api-partner.spotify.com/ads/v3/spotify-ads-api:configure first..claude-plugin/plugin.json to get the plugin version. Set SDK_HEADER="X-Spotify-Ads-Sdk: claude-code-plugin/$PLUGIN_VERSION" and include -H "$SDK_HEADER" on all API requests.The argument format is: <operation> [arg]
upload <file_path> — Upload a new assetlist [audio|video|image] — List assets, optionally filtered by typeget <asset_id> — Get details of a specific assetarchive <asset_id> — Archive an assetunarchive <asset_id> — Unarchive an assetupload <file_path>Two-step process following the API's required flow.
| Extensions | Asset Type |
|---|---|
.mp3, .wav, .ogg | AUDIO |
.mp4, .mov | VIDEO |
.png, .jpg, .jpeg | IMAGE |
If the extension doesn't match any of these, ask the user to specify the asset type.
Use AskUserQuestion to ask for the asset name (2-120 characters). Default to the filename without extension.
curl -s -w "\nHTTP_STATUS:%{http_code}" -X POST -H "Authorization: Bearer $TOKEN" \
-H "$SDK_HEADER" \
-H "Content-Type: application/json" \
-d '{"asset_type":"AUDIO","name":"my-creative"}' \
"$BASE_URL/ad_accounts/$AD_ACCOUNT_ID/assets"
Extract id from the response.
First, check the file size:
stat -f%z "/path/to/file" # macOS
# or: stat --printf="%s" "/path/to/file" # Linux
If file is <= 20MB — Simple upload:
curl -s -X POST -H "Authorization: Bearer $TOKEN" \
-H "$SDK_HEADER" \
-F "media=@/path/to/file" \
-F "asset_type=AUDIO" \
"$BASE_URL/ad_accounts/$AD_ACCOUNT_ID/assets/$ASSET_ID/upload"
If file is > 20MB — Chunked upload:
curl -s -X POST -H "Authorization: Bearer $TOKEN" \
-H "$SDK_HEADER" \
-H "Content-Type: application/json" \
"$BASE_URL/ad_accounts/$AD_ACCOUNT_ID/assets/$ASSET_ID/chunked_upload/start"
Extract upload_session_id and max_chunk_size_mb from the response.
split -b ${MAX_CHUNK_SIZE_MB}m /path/to/file /tmp/chunk_
curl -s -X POST -H "Authorization: Bearer $TOKEN" \
-H "$SDK_HEADER" \
-F "media=@/tmp/chunk_aa" \
-F "upload_section=1" \
"$BASE_URL/ad_accounts/$AD_ACCOUNT_ID/assets/$ASSET_ID/chunked_upload/transfer"
curl -s -X POST -H "Authorization: Bearer $TOKEN" \
-H "$SDK_HEADER" \
-H "Content-Type: application/json" \
-d '{"upload_session_id":"<session_id>","number_of_sections":<total_chunks>}' \
"$BASE_URL/ad_accounts/$AD_ACCOUNT_ID/assets/$ASSET_ID/chunked_upload/complete"
rm /tmp/chunk_*
After upload, poll GET /assets/{id} until status changes from PROCESSING to READY or REJECTED. Poll every 3 seconds, max 60 seconds.
curl -s -w "\nHTTP_STATUS:%{http_code}" -H "Authorization: Bearer $TOKEN" \
-H "$SDK_HEADER" \
"$BASE_URL/ad_accounts/$AD_ACCOUNT_ID/assets/$ASSET_ID"
Check the status field in the response. If still PROCESSING, wait 3 seconds and retry.
Show the final asset details:
If the asset was REJECTED, explain that the file may not meet format requirements and suggest checking the supported formats section below.
list [audio|video|image]List assets in the account, optionally filtered by type.
curl -s -w "\nHTTP_STATUS:%{http_code}" -H "Authorization: Bearer $TOKEN" \
-H "$SDK_HEADER" \
"$BASE_URL/ad_accounts/$AD_ACCOUNT_ID/assets?asset_types=AUDIO&limit=50&sort_direction=DESC"
If no type filter is provided, omit the asset_types parameter to list all assets.
Format as table:
| ID | Name | Type | Status | Duration/Dimensions | Created |
|---|
If continuation_token is present in the response, note that more assets exist.
get <asset_id>Get full details of a specific asset.
curl -s -w "\nHTTP_STATUS:%{http_code}" -H "Authorization: Bearer $TOKEN" \
-H "$SDK_HEADER" \
"$BASE_URL/ad_accounts/$AD_ACCOUNT_ID/assets/$ASSET_ID"
Display all fields in readable format:
archive <asset_id> / unarchive <asset_id>Archive or unarchive an asset using the bulk action endpoint.
curl -s -w "\nHTTP_STATUS:%{http_code}" -X PATCH -H "Authorization: Bearer $TOKEN" \
-H "$SDK_HEADER" \
-H "Content-Type: application/json" \
-d '{"action":"ARCHIVE","ids":["<asset_id>"]}' \
"$BASE_URL/ad_accounts/$AD_ACCOUNT_ID/assets"
For unarchive, use "action":"UNARCHIVE".
Confirm the action completed by displaying the updated asset status.
| Type | Formats | Recommendations |
|---|---|---|
| Audio | MP3, WAV, OGG | 128kbps+, 44.1kHz+ sample rate |
| Video | MP4, MOV | Aspect ratios: 16:9, 1.91:1, 1:1, 9:16 |
| Image | PNG, JPEG | — |
auto_execute is true, execute each API call directly.auto_execute is false, present the curl command and ask for confirmation before executing.