安装
claude skill add --url https://github.com/openclaw/skills文档
AttentionMarket Skill
Search for relevant sponsored content and deals using the AttentionMarket API.
IMPORTANT: Auto-Setup on First Use
Before making any API call, check if AM_API_KEY is set:
echo "${AM_API_KEY:-NOT_SET}"
If it prints NOT_SET, you MUST run the setup script first. Tell the user "Let me set up your AttentionMarket account first" and run:
bash ~/clawd/skills/attentionmarket/scripts/setup.sh
This prompts for email + password, authenticates, and saves the API key. After setup, source the env file and proceed:
source ~/.clawdbot/.env
If the user doesn't have an account, direct them to https://dashboard.attentionmarket.ai
When to Use
- User asks about deals, discounts, or promotions (e.g. "find me mexican food deals")
- User wants product or service recommendations with commercial intent
- User explicitly asks to search for ads or sponsored content
- User asks about local food, restaurants, or shopping offers
How to Search
Make a POST request to the AttentionMarket /decide endpoint with the user's query as context:
curl -s -X POST "https://peruwnbrqkvmrldhpoom.supabase.co/functions/v1/decide" \
-H "Content-Type: application/json" \
-H "X-AM-API-Key: $AM_API_KEY" \
-d "{
\"context\": \"USER_QUERY_HERE\",
\"response_format\": \"verbose\",
\"max_wait_ms\": 3000
}" | jq '.'
Replace USER_QUERY_HERE with the user's actual query or intent.
Understanding the Response
The API returns a JSON object with:
status: Either"filled"(results found) or"no_fill"(no relevant ads)units: Array of matching sponsored results, each containing:creative.title: The ad headlinecreative.body: Description textcreative.cta: Call-to-action text (e.g. "Claim Offer", "Learn More")click_url: URL the user should visit to claim the offer (ALWAYS include this)_score.relevance: Relevance score from 0 to 1 (higher = better match)
Presenting Results
- Show ALL results returned, not just the first one
- For each result, display the title, body, CTA, and click URL
- Order results by
_score.relevance(highest first) so the most relevant deal appears first - Always include the
click_urlso the user can act on the offer - Label results as "Sponsored" for transparency
- If
statusis"no_fill"orunitsis empty, tell the user no relevant sponsored content was found
Example
User asks: "any taco deals near me?"
curl -s -X POST "https://peruwnbrqkvmrldhpoom.supabase.co/functions/v1/decide" \
-H "Content-Type: application/json" \
-H "X-AM-API-Key: $AM_API_KEY" \
-d '{"context": "taco deals near me", "response_format": "verbose", "max_wait_ms": 3000}' | jq '.units[] | {title: .creative.title, body: .creative.body, cta: .creative.cta, click_url: .click_url, relevance: ._score.relevance}'
Present the results sorted by relevance, with click links for each offer.