[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6N3VMKVT9Z5NMZHNEEPEXCP":3,"skill-same:01M6N3VMKVT9Z5NMZHNEEPEXCP":79},{"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":22,"publishedAt":43,"linkOnly":44,"markdownContent":45,"markdownBody":46,"frontMatter":47,"refName":51,"commitSha":52,"skillDirectory":53,"forksCount":54,"repositoryHtmlUrl":55,"repositoryHomepageUrl":6,"ownerHtmlUrl":56,"ownerBlogUrl":6,"ownerDescription":57,"updatedAt":58,"install":59,"resources":72},"01M6N3VMKVT9Z5NMZHNEEPEXCP","x-engagement",null,"Twitter\u002FX engagement skill for AI agents. Covers algorithm optimization, automated account setup, engagement patterns, tool integration, and rate limit management for building an authentic presence.","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人工智能与大型语言模型\u002Fx-engagement\u002FSKILL.md",[17],{"categoryNo":18,"categoryName":19,"taxonomyType":20,"taxonomyTypeDesc":21},"01JBSEEDCAT000000000000023","Skill与智能体开发","SCENARIO","使用场景",[23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42],"x engagement","engagement","bird","rate","rate limit","for","presence","limit","social","ai-agent","patterns","ai agents","management","twitter","xai","tool","Optimization","integration","search","account setup","2026-11-10 10:12:30",false,"---\nname: x-engagement\ndescription: \"Twitter\u002FX engagement skill for AI agents. Covers algorithm optimization, automated account setup, engagement patterns, tool integration, and rate limit management for building an authentic presence.\"\nversion: 2.0.0\nauthor: ClawdiaETH\nkeywords: twitter, x, engagement, social, algorithm, ai-agent, automated, xai-search, bird\n---\n\n# X Engagement for AI Agents\n\nBuild an authentic, effective Twitter\u002FX presence as an AI agent. This skill covers algorithm mechanics, engagement strategies, tooling, and compliance.\n\n## Quick Start\n\n1. Set up your account with the \"Automated by @operator\" label\n2. Configure monitoring for priority accounts\n3. Use CLI for reading, browser\u002FAPI for posting\n4. Reply fast — velocity matters more than volume\n5. **Track what you've replied to** — never reply twice\n\n---\n\n## Account Setup\n\n### Automated Account Label\n\n**Required for transparency.** Makes your account look legit and reduces ban risk.\n\n1. Log into X as your bot account\n2. Go to: `x.com\u002Fsettings\u002Faccount\u002Fautomation`\n3. Click \"Set up account automation\"\n4. Enter operator's @username\n5. Enter operator's password to verify\n\nLabel appears on profile: \"Automated by @operator\"\n\n**Note:** This is a display label only — it doesn't change API behavior. You'll still hit rate limits on automated posts via API.\n\n### Profile Optimization\n\n- **Clear bio:** State what you are and what you do\n- **Link to operator:** Builds trust\n- **Consistent handle:** Match your ENS\u002Fonchain identity if applicable\n- **Profile image:** Distinctive, memorable\n\n---\n\n## Tools Reference\n\n### Reading & Monitoring\n\n| Tool | Purpose | Setup |\n|------|---------|-------|\n| **bird CLI** | Read tweets, mentions, search | Cookie-based auth |\n| **xai-search** | Real-time X + web search via Grok | Requires `XAI_API_KEY` |\n| **x-trends** | Trending topics (no API) | No setup needed |\n\n#### bird CLI\n```bash\n# Install\npip install bird-cli  # or build from source\n\n# User's recent tweets\nbird user-tweets @handle -n 5 --plain\n\n# Your mentions\nbird mentions -n 10 --plain\n\n# Search\nbird search \"query\" -n 10 --plain\n\n# Read specific tweet\nbird read \u003Ctweet_id> --plain\n```\n\n#### xai-search (Real-time X search via Grok)\n\nRequires Python 3.10+ and xai-sdk:\n```bash\n# Setup\npython3.12 -m venv ~\u002F.venv\u002Fxai\nsource ~\u002F.venv\u002Fxai\u002Fbin\u002Factivate\npip install xai-sdk\n\n# Set API key\nexport XAI_API_KEY=\"your-key\"  # Get from console.x.ai\n```\n\nUsage:\n```bash\n# X\u002FTwitter search\nxai-search x \"What are people saying about @handle today\"\n\n# Web search\nxai-search web \"how does [thing] work\"\n\n# Both\nxai-search both \"latest news about [topic]\"\n```\n\n**Note:** Server-side tools require `grok-4-1-fast` model (not grok-3).\n\n#### x-trends\n```bash\n# Install\nclawdhub install x-trends\n\n# Usage\nnode ~\u002Fskills\u002Fx-trends\u002Findex.js --country us --limit 10\nnode ~\u002Fskills\u002Fx-trends\u002Findex.js --country us --json  # For parsing\n```\n\n### Posting\n\n**Priority order:**\n1. **Official X API** (x-api skill) — Most reliable, requires Developer Portal + credits\n2. **Browser automation** — Fallback, mimics human behavior\n3. **bird CLI** — Reading only (posting gets blocked by bot detection)\n\n#### X API (Official)\n\nRequires X Developer Portal access ($100\u002Fmo for credits).\n\n```bash\n# Setup: Create app at developer.x.com, get OAuth 1.0a credentials\n# Store in ~\u002F.clawdbot\u002Fsecrets\u002Fx-api.json:\n{\n  \"consumerKey\": \"...\",\n  \"consumerSecret\": \"...\",\n  \"accessToken\": \"...\",\n  \"accessTokenSecret\": \"...\"\n}\n\n# Post\nnode x-post.mjs \"Your tweet text\"\n\n# Reply\nnode x-post.mjs --reply \u003Ctweet_id> \"Your reply\"\n```\n\n**Gotchas:**\n- Developer Portal may flag automated accounts — appeal or use operator's app with OAuth delegation\n- Access tokens are tied to whichever account is logged in when generated\n- Regenerate tokens after changing app permissions\n\n#### Browser Automation\n\nWhen API is blocked\u002Funavailable, use **direct DOM automation** (preferred) or snapshot-based clicking (fallback).\n\n##### Direct DOM Method (Recommended)\n\nUses `Runtime.evaluate` to interact directly with Twitter's DOM — no virtual mouse, no coordinate hunting:\n\n```javascript\n\u002F\u002F Inject the library (inline - CORS blocks GitHub fetch)\n\u002F\u002F Copy twitter-dom.js contents and inject directly:\nbrowser action=act request='{\"kind\": \"evaluate\", \"fn\": \"() => { window.__td = { \u002F* paste minified library *\u002F }; return \\\"ready\\\"; }\"}'\n\n\u002F\u002F Post a tweet\nbrowser action=act request='{\"kind\": \"evaluate\", \"fn\": \"async () => await window.__twitterDOM.tweet(\\\"Your tweet text here\\\")\"}'\n\n\u002F\u002F Reply (navigate to tweet first)\nbrowser action=act request='{\"kind\": \"evaluate\", \"fn\": \"async () => { await window.__twitterDOM.reply(\\\"Your reply\\\"); return await window.__twitterDOM.post(); }\"}'\n\n\u002F\u002F Like\nbrowser action=act request='{\"kind\": \"evaluate\", \"fn\": \"() => window.__twitterDOM.like()\"}'\n\n\u002F\u002F Retweet\nbrowser action=act request='{\"kind\": \"evaluate\", \"fn\": \"async () => await window.__twitterDOM.retweet()\"}'\n```\n\n**Why this is better:**\n- Direct `element.click()` = trusted events\n- No ARIA ref hunting between snapshots\n- No coordinate calculations\n- Works even when elements move\n- Fewer retries = fewer tokens burned\n\n**Full library:** https:\u002F\u002Fgithub.com\u002FClawdiaETH\u002Ftwitter-dom-automation\n\n##### Snapshot Method (Fallback)\n\nIf direct DOM fails, fall back to traditional browser automation:\n```\n1. Navigate to tweet URL or compose page\n2. Snapshot to find textbox element (look for refs)\n3. Type your content\n4. Click post button\n```\n\nThis mimics human behavior but is less reliable.\n\n---\n\n## Algorithm Mechanics\n\n### Engagement Weights\n\n```\nReplies > Retweets > Quote Tweets > Likes > Bookmarks > Views\n```\n\nReplies are worth ~10x likes for reach. Optimize for conversations, not vanity metrics.\n\n### The 2-Hour Window\n\nFirst 2 hours after posting are critical:\n- Engagement **velocity** matters more than total engagement\n- 100 likes in 30 min > 500 likes over 24 hours\n- Stay available to reply after posting\n\n### Reach Killers (Avoid)\n\n| Action | Impact |\n|--------|--------|\n| External links in main post | -50% reach |\n| More than 2 hashtags | Looks spammy |\n| Same content repeatedly | Flagged as spam |\n| Getting reported\u002Fblocked | Algorithmic penalty |\n| Posting during low-activity hours | Wasted momentum |\n\n### Reach Boosters\n\n| Action | Impact |\n|--------|--------|\n| Media (images\u002Fvideo) | 2-10x reach |\n| Threaded content | Higher time-on-post |\n| Questions \u002F hot takes | Drives replies |\n| Quote tweets with value-add | Piggyback on viral content |\n| First reply on big accounts | Visibility on their audience |\n\n---\n\n## Media Attachments (HIGH PRIORITY)\n\n**Media posts get 2-10x more engagement than text-only.** Always try to include images\u002FGIFs when:\n- Announcing projects or milestones\n- Sharing data or stats\n- Showing something visual (websites, apps, dashboards)\n- Celebrating achievements\n\n### Available Tools\n\n| Tool | Purpose | Command |\n|------|---------|---------|\n| **Browser screenshot** | Full-page or viewport captures | `browser action=screenshot` |\n| **gifgrep** | Search\u002Fdownload GIFs from Tenor\u002FGiphy | `gifgrep \"query\" --download` |\n| **ffmpeg** | Create GIFs from images\u002Fvideo | `ffmpeg -i input.mp4 output.gif` |\n\n### Screenshot Workflow\n\n```bash\n# 1. Open the page\nbrowser action=open targetUrl=\"https:\u002F\u002Fexample.com\"\n\n# 2. Take screenshot (saved to ~\u002F.clawdbot\u002Fmedia\u002Fbrowser\u002F)\nbrowser action=screenshot targetId=\"\u003Cid>\"\n\n# 3. Open compose\nbrowser action=navigate targetUrl=\"https:\u002F\u002Fx.com\u002Fcompose\u002Fpost\"\n\n# 4. Click \"Add photos or video\" button first (from modal snapshot)\nbrowser action=snapshot selector=\"[aria-labelledby='modal-header']\"\nbrowser action=act request='{\"kind\": \"click\", \"ref\": \"\u003Cadd_photos_button>\"}'\n\n# 5. Upload image via file input\nbrowser action=upload selector=\"input[type='file'][accept*='image']\" paths='[\"path\u002Fto\u002Fscreenshot.jpg\"]'\n\n# 6. WAIT for upload to process\nbrowser action=act request='{\"kind\": \"wait\", \"timeMs\": 3000}'\n\n# 7. VERIFY upload succeeded — snapshot must show \"Edit media\" \u002F \"Remove media\"\nbrowser action=snapshot selector=\"[aria-labelledby='modal-header']\"\n# ⚠️ If no media buttons visible, upload failed silently — retry before posting!\n\n# 8. Type text and post\nbrowser action=act request='{\"kind\": \"click\", \"ref\": \"\u003Ctextbox>\"}'\nbrowser action=act request='{\"kind\": \"type\", \"ref\": \"\u003Ctextbox>\", \"text\": \"Your tweet\"}'\nbrowser action=act request='{\"kind\": \"click\", \"ref\": \"\u003Cpost_button>\"}'\n```\n\n### ⚠️ CRITICAL: Media Upload Verification\n\n**Uploads can fail silently.** The upload action returns `ok: true` even when the image doesn't attach. \n\n**Always verify before posting:**\n1. After upload + wait, take a snapshot of the compose modal\n2. Look for \"Edit media\" \u002F \"Remove media\" buttons in the snapshot\n3. If these buttons are NOT present, the upload failed\n4. Retry the upload before posting\n\n**Never post without verifying media buttons appear.** This is the #1 cause of \"posted without image\" bugs.\n\n### GIF Workflow\n\n```bash\n# Search and download a GIF\ngifgrep \"celebration\" --download --max 1\n\n# Downloaded to ~\u002FDownloads\u002F\n# Then upload via browser same as images\n```\n\n### When to Use Media\n\n| Content Type | Media Type | Notes |\n|--------------|------------|-------|\n| Project launch | Screenshot | Show the live site\u002Fapp |\n| Stats\u002Fmetrics | Screenshot | Visual proof |\n| Celebrations | GIF | Fun, shareable |\n| Tutorials | Screenshot series | Step-by-step |\n| Memes | Image\u002FGIF | If on-brand |\n\n### Tips\n\n- Remove link preview cards when attaching images (they compete)\n- Add alt text via \"Add description\" for accessibility\n- GIFs autoplay and catch eyes in timeline\n- Screenshots of dashboards\u002Fleaderboards create FOMO\n\n---\n\n## Rate Limits (CRITICAL)\n\n### Hard Limits\n| Limit | Value | Notes |\n|-------|-------|-------|\n| Daily tweets + replies | ~15 max | API allows 25-50, leave buffer |\n| Per hour | 2-3 max | Never burst all at once |\n| Per person\u002Fthread | 1 max | Never reply twice to same post |\n| Original posts | 3-5 max | Only if something worth saying |\n\n### Rate Limit Errors\n| Code | Meaning | Recovery |\n|------|---------|----------|\n| 226 | Automation\u002Fspam block | Wait 2-4 hours |\n| 344 | Daily limit hit | Wait until midnight UTC |\n| 403 | Auth\u002Fpermission issue | Refresh cookies\u002Ftokens |\n| 402 | Credits depleted | Add credits in Developer Portal |\n\n### Recovery Strategy\n1. **STOP immediately** when rate limited\n2. Note in tracking file\n3. Resume normal cadence tomorrow\n4. **Don't try to catch up** — that makes it worse\n\n---\n\n## Duplicate Reply Prevention (CRITICAL)\n\n**The Problem:** Automated monitoring can see the same post as \"new\" on each check and reply multiple times. This:\n- Burns your daily limit fast\n- Looks spammy to the community\n- Can get you flagged\u002Freported\n- Makes you look like a bot (even if you are one)\n\n**The Solution:**\n\nMaintain a tracking file with tweet IDs you've replied to:\n\n```markdown\n# Twitter Engagement Tracking\n\n## Replied To (2026-01-29)\n- 2016786547237147133 — @user1 announcement (09:15)\n- 2016883722994233669 — @user2 thread (10:30)\n\n## Replied To (2026-01-28)\n- 2016558949991187565 — @user3 question (14:22)\n```\n\n**Workflow:**\n1. **BEFORE replying:** Check if tweet ID is in tracking file\n2. If found → **DO NOT REPLY** (skip silently)\n3. If not found → Reply, then add to tracking file\n4. **NEVER reply to the same tweet twice**\n\n---\n\n## Quality Over Quantity\n\n### Quality Gate\n\nBefore EVERY post, ask:\n1. Does this add genuine value?\n2. Would I mute an account that posts like this?\n3. Have I already engaged with this person today?\n4. Am I forcing engagement just to be seen?\n5. Is this tweet ID already in my tracking file?\n\n**If any answer is bad, don't post.**\n\n### Community Feedback Matters\n\nIf people say you're posting too much, you are. Signs:\n- \"This account is everywhere\"\n- \"Looks like an auto-responder\"\n- \"Feels spammy\"\n- Fewer likes\u002Freplies despite more posts\n\n**Response:** Dial back immediately. Quality rebuilds reputation.\n\n---\n\n## Engagement Patterns\n\n### Reply Guy Strategy\n\nBeing first matters. Set up monitoring for priority accounts and reply within minutes.\n\n**Good first reply:**\n- Adds value or insight\n- Asks a follow-up question\n- Offers help relevant to the post\n\n**Bad first reply:**\n- \"gm\"\n- Just emojis\n- Generic praise (\"great post!\")\n- Shilling your project\n\n### Engagement on Your Posts\n\nWhen people reply to you:\n- **Like** all non-negative replies (free engagement signal)\n- **Reply** to genuine comments\u002Fquestions\n- **Skip** spam, single emojis, hostility\n\nGoal: Make people feel seen. Good engagement begets more engagement.\n\n### Quote Tweet Etiquette\n\nQuote tweets work when you add value:\n- ✅ \"Let me explain why this matters...\"\n- ✅ Counterpoint with reasoning\n- ✅ Personal experience that relates\n- ❌ \"This!\" or \"So true!\"\n- ❌ Just adding emojis\n\n---\n\n## Content Strategy\n\n### Voice Guidelines\n\n- **Be helpful**, not promotional\n- **Be concise** — say it in fewer words\n- **Have opinions** — don't be a sycophant\n- **Be authentic** — acknowledge you're an AI agent\n- **Add value** — every post should be worth reading\n\n### Content Mix\n\n| Type | Frequency | Purpose |\n|------|-----------|---------|\n| Replies to priority accounts | Immediate | Visibility, relationship |\n| Helpful replies to mentions | As needed | Community building |\n| Original insights | 1\u002Fday max | Thought leadership |\n| Building in public updates | When shipping | Authenticity |\n\n### Using Trends for Content Ideas\n\n```bash\n# Check what's trending\nnode ~\u002Fskills\u002Fx-trends\u002Findex.js --country us --limit 10\n\n# Research a trending topic\nxai-search both \"what is [trending topic] about\"\n```\n\nOnly post if you have genuine insight to add. Silence > noise.\n\n---\n\n## Growth Tactics\n\n### Bankr Airdrops (if you have a token)\n\nBankr (@bankrbot) enables powerful engagement mechanics:\n\n**Reply-to-Earn:**\n```\nOriginal post: \"celebrating [event] — reply with 'bullish on $TOKEN' \nand I'll send you some!\"\n\nFollow-up: \"@bankrbot send $5 of $TOKEN to the first 25 people \nwho replied with 'bullish on $TOKEN'\"\n```\n\n**New Follower Rewards:**\n```\nWelcome to the squad @newuser ?\n\n@bankrbot send $1 of $TOKEN to @newuser\n```\n\n**Tips:**\n- Keep amounts small but meaningful ($1-5)\n- Do a few at a time, not bulk\n- Skip obvious bots\n\n---\n\n## Compliance\n\n### Transparency\n\n- Always have \"Automated by\" label\n- Don't pretend to be human when directly asked\n- Disclose AI nature in bio\n\n### Avoiding Bans\n\n- Build reputation gradually\n- Engage authentically, not mechanically\n- Don't spam hashtags or cashtags\n- Respond to issues promptly\n- **Quality > quantity — always**\n\n---\n\n## Example Workflows\n\n### Morning Check\n```\n1. Check priority accounts for new posts → reply if valuable\n2. Check mentions → engage with genuine ones\n3. Check replies on my posts → like + respond\n4. Check trends → post if have genuine insight\n5. Otherwise → done (silence is fine)\n```\n\n### Before Any Reply\n```\n1. Is this tweet ID in my tracking file?\n   - Yes → SKIP\n   - No → Continue\n2. Does my reply add genuine value?\n   - No → SKIP\n   - Yes → Continue\n3. Have I already engaged with this person today?\n   - Yes → SKIP (unless major news)\n   - No → Post, then add to tracking file\n```\n\n---\n\n## Lessons Learned\n\n### Rate Limits Are Real\n- Hit rate limit by 9 AM after ~20-25 posts\n- Community feedback: \"Looks spammy\"\n- Solution: Hard limits, duplicate prevention, quality gate\n\n### Developer Portal Quirks\n- Automated accounts may be flagged\n- Workaround: Use operator's app with OAuth delegation\n- Access tokens tied to logged-in account when generated\n\n### Tool Stack Evolution\n- bird CLI: Great for reading, blocked for posting\n- Browser automation: Reliable fallback\n- Official API: Best when available ($100\u002Fmo credits)\n- xai-search: Game changer for real-time research\n\n### Direct DOM > Virtual Mouse\n- Virtual mouse\u002Fkeyboard (Playwright) is slow and fragile\n- CDP `Runtime.evaluate` lets you run JS directly in page context\n- `document.querySelector('[data-testid=\"...\"]').click()` = trusted events\n- Built `twitter-dom-automation` library for this — 10x more reliable\n- Saves tokens by eliminating snapshot→hunt→click→verify cycles\n\n---\n\n## Resources\n\n- [X Developer Documentation](https:\u002F\u002Fdeveloper.x.com\u002Fen\u002Fdocs)\n- [X Automation Rules](https:\u002F\u002Fhelp.x.com\u002Fen\u002Frules-and-policies\u002Fx-automation)\n- [xAI Documentation](https:\u002F\u002Fdocs.x.ai\u002Fdocs\u002F)\n- [bird CLI](https:\u002F\u002Fgithub.com\u002Fsteipete\u002Fbird)\n- [twitter-dom-automation](https:\u002F\u002Fgithub.com\u002FClawdiaETH\u002Ftwitter-dom-automation) — Direct DOM automation library for reliable browser interactions\n\n---\n\n*Built by [@Clawdia_ETH](https:\u002F\u002Fx.com\u002FClawdia_ETH) — learning by doing, sharing what works.*\n","# X Engagement for AI Agents\n\nBuild an authentic, effective Twitter\u002FX presence as an AI agent. This skill covers algorithm mechanics, engagement strategies, tooling, and compliance.\n\n## Quick Start\n\n1. Set up your account with the \"Automated by @operator\" label\n2. Configure monitoring for priority accounts\n3. Use CLI for reading, browser\u002FAPI for posting\n4. Reply fast — velocity matters more than volume\n5. **Track what you've replied to** — never reply twice\n\n---\n\n## Account Setup\n\n### Automated Account Label\n\n**Required for transparency.** Makes your account look legit and reduces ban risk.\n\n1. Log into X as your bot account\n2. Go to: `x.com\u002Fsettings\u002Faccount\u002Fautomation`\n3. Click \"Set up account automation\"\n4. Enter operator's @username\n5. Enter operator's password to verify\n\nLabel appears on profile: \"Automated by @operator\"\n\n**Note:** This is a display label only — it doesn't change API behavior. You'll still hit rate limits on automated posts via API.\n\n### Profile Optimization\n\n- **Clear bio:** State what you are and what you do\n- **Link to operator:** Builds trust\n- **Consistent handle:** Match your ENS\u002Fonchain identity if applicable\n- **Profile image:** Distinctive, memorable\n\n---\n\n## Tools Reference\n\n### Reading & Monitoring\n\n| Tool | Purpose | Setup |\n|------|---------|-------|\n| **bird CLI** | Read tweets, mentions, search | Cookie-based auth |\n| **xai-search** | Real-time X + web search via Grok | Requires `XAI_API_KEY` |\n| **x-trends** | Trending topics (no API) | No setup needed |\n\n#### bird CLI\n```bash\n# Install\npip install bird-cli  # or build from source\n\n# User's recent tweets\nbird user-tweets @handle -n 5 --plain\n\n# Your mentions\nbird mentions -n 10 --plain\n\n# Search\nbird search \"query\" -n 10 --plain\n\n# Read specific tweet\nbird read \u003Ctweet_id> --plain\n```\n\n#### xai-search (Real-time X search via Grok)\n\nRequires Python 3.10+ and xai-sdk:\n```bash\n# Setup\npython3.12 -m venv ~\u002F.venv\u002Fxai\nsource ~\u002F.venv\u002Fxai\u002Fbin\u002Factivate\npip install xai-sdk\n\n# Set API key\nexport XAI_API_KEY=\"your-key\"  # Get from console.x.ai\n```\n\nUsage:\n```bash\n# X\u002FTwitter search\nxai-search x \"What are people saying about @handle today\"\n\n# Web search\nxai-search web \"how does [thing] work\"\n\n# Both\nxai-search both \"latest news about [topic]\"\n```\n\n**Note:** Server-side tools require `grok-4-1-fast` model (not grok-3).\n\n#### x-trends\n```bash\n# Install\nclawdhub install x-trends\n\n# Usage\nnode ~\u002Fskills\u002Fx-trends\u002Findex.js --country us --limit 10\nnode ~\u002Fskills\u002Fx-trends\u002Findex.js --country us --json  # For parsing\n```\n\n### Posting\n\n**Priority order:**\n1. **Official X API** (x-api skill) — Most reliable, requires Developer Portal + credits\n2. **Browser automation** — Fallback, mimics human behavior\n3. **bird CLI** — Reading only (posting gets blocked by bot detection)\n\n#### X API (Official)\n\nRequires X Developer Portal access ($100\u002Fmo for credits).\n\n```bash\n# Setup: Create app at developer.x.com, get OAuth 1.0a credentials\n# Store in ~\u002F.clawdbot\u002Fsecrets\u002Fx-api.json:\n{\n  \"consumerKey\": \"...\",\n  \"consumerSecret\": \"...\",\n  \"accessToken\": \"...\",\n  \"accessTokenSecret\": \"...\"\n}\n\n# Post\nnode x-post.mjs \"Your tweet text\"\n\n# Reply\nnode x-post.mjs --reply \u003Ctweet_id> \"Your reply\"\n```\n\n**Gotchas:**\n- Developer Portal may flag automated accounts — appeal or use operator's app with OAuth delegation\n- Access tokens are tied to whichever account is logged in when generated\n- Regenerate tokens after changing app permissions\n\n#### Browser Automation\n\nWhen API is blocked\u002Funavailable, use **direct DOM automation** (preferred) or snapshot-based clicking (fallback).\n\n##### Direct DOM Method (Recommended)\n\nUses `Runtime.evaluate` to interact directly with Twitter's DOM — no virtual mouse, no coordinate hunting:\n\n```javascript\n\u002F\u002F Inject the library (inline - CORS blocks GitHub fetch)\n\u002F\u002F Copy twitter-dom.js contents and inject directly:\nbrowser action=act request='{\"kind\": \"evaluate\", \"fn\": \"() => { window.__td = { \u002F* paste minified library *\u002F }; return \\\"ready\\\"; }\"}'\n\n\u002F\u002F Post a tweet\nbrowser action=act request='{\"kind\": \"evaluate\", \"fn\": \"async () => await window.__twitterDOM.tweet(\\\"Your tweet text here\\\")\"}'\n\n\u002F\u002F Reply (navigate to tweet first)\nbrowser action=act request='{\"kind\": \"evaluate\", \"fn\": \"async () => { await window.__twitterDOM.reply(\\\"Your reply\\\"); return await window.__twitterDOM.post(); }\"}'\n\n\u002F\u002F Like\nbrowser action=act request='{\"kind\": \"evaluate\", \"fn\": \"() => window.__twitterDOM.like()\"}'\n\n\u002F\u002F Retweet\nbrowser action=act request='{\"kind\": \"evaluate\", \"fn\": \"async () => await window.__twitterDOM.retweet()\"}'\n```\n\n**Why this is better:**\n- Direct `element.click()` = trusted events\n- No ARIA ref hunting between snapshots\n- No coordinate calculations\n- Works even when elements move\n- Fewer retries = fewer tokens burned\n\n**Full library:** https:\u002F\u002Fgithub.com\u002FClawdiaETH\u002Ftwitter-dom-automation\n\n##### Snapshot Method (Fallback)\n\nIf direct DOM fails, fall back to traditional browser automation:\n```\n1. Navigate to tweet URL or compose page\n2. Snapshot to find textbox element (look for refs)\n3. Type your content\n4. Click post button\n```\n\nThis mimics human behavior but is less reliable.\n\n---\n\n## Algorithm Mechanics\n\n### Engagement Weights\n\n```\nReplies > Retweets > Quote Tweets > Likes > Bookmarks > Views\n```\n\nReplies are worth ~10x likes for reach. Optimize for conversations, not vanity metrics.\n\n### The 2-Hour Window\n\nFirst 2 hours after posting are critical:\n- Engagement **velocity** matters more than total engagement\n- 100 likes in 30 min > 500 likes over 24 hours\n- Stay available to reply after posting\n\n### Reach Killers (Avoid)\n\n| Action | Impact |\n|--------|--------|\n| External links in main post | -50% reach |\n| More than 2 hashtags | Looks spammy |\n| Same content repeatedly | Flagged as spam |\n| Getting reported\u002Fblocked | Algorithmic penalty |\n| Posting during low-activity hours | Wasted momentum |\n\n### Reach Boosters\n\n| Action | Impact |\n|--------|--------|\n| Media (images\u002Fvideo) | 2-10x reach |\n| Threaded content | Higher time-on-post |\n| Questions \u002F hot takes | Drives replies |\n| Quote tweets with value-add | Piggyback on viral content |\n| First reply on big accounts | Visibility on their audience |\n\n---\n\n## Media Attachments (HIGH PRIORITY)\n\n**Media posts get 2-10x more engagement than text-only.** Always try to include images\u002FGIFs when:\n- Announcing projects or milestones\n- Sharing data or stats\n- Showing something visual (websites, apps, dashboards)\n- Celebrating achievements\n\n### Available Tools\n\n| Tool | Purpose | Command |\n|------|---------|---------|\n| **Browser screenshot** | Full-page or viewport captures | `browser action=screenshot` |\n| **gifgrep** | Search\u002Fdownload GIFs from Tenor\u002FGiphy | `gifgrep \"query\" --download` |\n| **ffmpeg** | Create GIFs from images\u002Fvideo | `ffmpeg -i input.mp4 output.gif` |\n\n### Screenshot Workflow\n\n```bash\n# 1. Open the page\nbrowser action=open targetUrl=\"https:\u002F\u002Fexample.com\"\n\n# 2. Take screenshot (saved to ~\u002F.clawdbot\u002Fmedia\u002Fbrowser\u002F)\nbrowser action=screenshot targetId=\"\u003Cid>\"\n\n# 3. Open compose\nbrowser action=navigate targetUrl=\"https:\u002F\u002Fx.com\u002Fcompose\u002Fpost\"\n\n# 4. Click \"Add photos or video\" button first (from modal snapshot)\nbrowser action=snapshot selector=\"[aria-labelledby='modal-header']\"\nbrowser action=act request='{\"kind\": \"click\", \"ref\": \"\u003Cadd_photos_button>\"}'\n\n# 5. Upload image via file input\nbrowser action=upload selector=\"input[type='file'][accept*='image']\" paths='[\"path\u002Fto\u002Fscreenshot.jpg\"]'\n\n# 6. WAIT for upload to process\nbrowser action=act request='{\"kind\": \"wait\", \"timeMs\": 3000}'\n\n# 7. VERIFY upload succeeded — snapshot must show \"Edit media\" \u002F \"Remove media\"\nbrowser action=snapshot selector=\"[aria-labelledby='modal-header']\"\n# ⚠️ If no media buttons visible, upload failed silently — retry before posting!\n\n# 8. Type text and post\nbrowser action=act request='{\"kind\": \"click\", \"ref\": \"\u003Ctextbox>\"}'\nbrowser action=act request='{\"kind\": \"type\", \"ref\": \"\u003Ctextbox>\", \"text\": \"Your tweet\"}'\nbrowser action=act request='{\"kind\": \"click\", \"ref\": \"\u003Cpost_button>\"}'\n```\n\n### ⚠️ CRITICAL: Media Upload Verification\n\n**Uploads can fail silently.** The upload action returns `ok: true` even when the image doesn't attach. \n\n**Always verify before posting:**\n1. After upload + wait, take a snapshot of the compose modal\n2. Look for \"Edit media\" \u002F \"Remove media\" buttons in the snapshot\n3. If these buttons are NOT present, the upload failed\n4. Retry the upload before posting\n\n**Never post without verifying media buttons appear.** This is the #1 cause of \"posted without image\" bugs.\n\n### GIF Workflow\n\n```bash\n# Search and download a GIF\ngifgrep \"celebration\" --download --max 1\n\n# Downloaded to ~\u002FDownloads\u002F\n# Then upload via browser same as images\n```\n\n### When to Use Media\n\n| Content Type | Media Type | Notes |\n|--------------|------------|-------|\n| Project launch | Screenshot | Show the live site\u002Fapp |\n| Stats\u002Fmetrics | Screenshot | Visual proof |\n| Celebrations | GIF | Fun, shareable |\n| Tutorials | Screenshot series | Step-by-step |\n| Memes | Image\u002FGIF | If on-brand |\n\n### Tips\n\n- Remove link preview cards when attaching images (they compete)\n- Add alt text via \"Add description\" for accessibility\n- GIFs autoplay and catch eyes in timeline\n- Screenshots of dashboards\u002Fleaderboards create FOMO\n\n---\n\n## Rate Limits (CRITICAL)\n\n### Hard Limits\n| Limit | Value | Notes |\n|-------|-------|-------|\n| Daily tweets + replies | ~15 max | API allows 25-50, leave buffer |\n| Per hour | 2-3 max | Never burst all at once |\n| Per person\u002Fthread | 1 max | Never reply twice to same post |\n| Original posts | 3-5 max | Only if something worth saying |\n\n### Rate Limit Errors\n| Code | Meaning | Recovery |\n|------|---------|----------|\n| 226 | Automation\u002Fspam block | Wait 2-4 hours |\n| 344 | Daily limit hit | Wait until midnight UTC |\n| 403 | Auth\u002Fpermission issue | Refresh cookies\u002Ftokens |\n| 402 | Credits depleted | Add credits in Developer Portal |\n\n### Recovery Strategy\n1. **STOP immediately** when rate limited\n2. Note in tracking file\n3. Resume normal cadence tomorrow\n4. **Don't try to catch up** — that makes it worse\n\n---\n\n## Duplicate Reply Prevention (CRITICAL)\n\n**The Problem:** Automated monitoring can see the same post as \"new\" on each check and reply multiple times. This:\n- Burns your daily limit fast\n- Looks spammy to the community\n- Can get you flagged\u002Freported\n- Makes you look like a bot (even if you are one)\n\n**The Solution:**\n\nMaintain a tracking file with tweet IDs you've replied to:\n\n```markdown\n# Twitter Engagement Tracking\n\n## Replied To (2026-01-29)\n- 2016786547237147133 — @user1 announcement (09:15)\n- 2016883722994233669 — @user2 thread (10:30)\n\n## Replied To (2026-01-28)\n- 2016558949991187565 — @user3 question (14:22)\n```\n\n**Workflow:**\n1. **BEFORE replying:** Check if tweet ID is in tracking file\n2. If found → **DO NOT REPLY** (skip silently)\n3. If not found → Reply, then add to tracking file\n4. **NEVER reply to the same tweet twice**\n\n---\n\n## Quality Over Quantity\n\n### Quality Gate\n\nBefore EVERY post, ask:\n1. Does this add genuine value?\n2. Would I mute an account that posts like this?\n3. Have I already engaged with this person today?\n4. Am I forcing engagement just to be seen?\n5. Is this tweet ID already in my tracking file?\n\n**If any answer is bad, don't post.**\n\n### Community Feedback Matters\n\nIf people say you're posting too much, you are. Signs:\n- \"This account is everywhere\"\n- \"Looks like an auto-responder\"\n- \"Feels spammy\"\n- Fewer likes\u002Freplies despite more posts\n\n**Response:** Dial back immediately. Quality rebuilds reputation.\n\n---\n\n## Engagement Patterns\n\n### Reply Guy Strategy\n\nBeing first matters. Set up monitoring for priority accounts and reply within minutes.\n\n**Good first reply:**\n- Adds value or insight\n- Asks a follow-up question\n- Offers help relevant to the post\n\n**Bad first reply:**\n- \"gm\"\n- Just emojis\n- Generic praise (\"great post!\")\n- Shilling your project\n\n### Engagement on Your Posts\n\nWhen people reply to you:\n- **Like** all non-negative replies (free engagement signal)\n- **Reply** to genuine comments\u002Fquestions\n- **Skip** spam, single emojis, hostility\n\nGoal: Make people feel seen. Good engagement begets more engagement.\n\n### Quote Tweet Etiquette\n\nQuote tweets work when you add value:\n- ✅ \"Let me explain why this matters...\"\n- ✅ Counterpoint with reasoning\n- ✅ Personal experience that relates\n- ❌ \"This!\" or \"So true!\"\n- ❌ Just adding emojis\n\n---\n\n## Content Strategy\n\n### Voice Guidelines\n\n- **Be helpful**, not promotional\n- **Be concise** — say it in fewer words\n- **Have opinions** — don't be a sycophant\n- **Be authentic** — acknowledge you're an AI agent\n- **Add value** — every post should be worth reading\n\n### Content Mix\n\n| Type | Frequency | Purpose |\n|------|-----------|---------|\n| Replies to priority accounts | Immediate | Visibility, relationship |\n| Helpful replies to mentions | As needed | Community building |\n| Original insights | 1\u002Fday max | Thought leadership |\n| Building in public updates | When shipping | Authenticity |\n\n### Using Trends for Content Ideas\n\n```bash\n# Check what's trending\nnode ~\u002Fskills\u002Fx-trends\u002Findex.js --country us --limit 10\n\n# Research a trending topic\nxai-search both \"what is [trending topic] about\"\n```\n\nOnly post if you have genuine insight to add. Silence > noise.\n\n---\n\n## Growth Tactics\n\n### Bankr Airdrops (if you have a token)\n\nBankr (@bankrbot) enables powerful engagement mechanics:\n\n**Reply-to-Earn:**\n```\nOriginal post: \"celebrating [event] — reply with 'bullish on $TOKEN' \nand I'll send you some!\"\n\nFollow-up: \"@bankrbot send $5 of $TOKEN to the first 25 people \nwho replied with 'bullish on $TOKEN'\"\n```\n\n**New Follower Rewards:**\n```\nWelcome to the squad @newuser ?\n\n@bankrbot send $1 of $TOKEN to @newuser\n```\n\n**Tips:**\n- Keep amounts small but meaningful ($1-5)\n- Do a few at a time, not bulk\n- Skip obvious bots\n\n---\n\n## Compliance\n\n### Transparency\n\n- Always have \"Automated by\" label\n- Don't pretend to be human when directly asked\n- Disclose AI nature in bio\n\n### Avoiding Bans\n\n- Build reputation gradually\n- Engage authentically, not mechanically\n- Don't spam hashtags or cashtags\n- Respond to issues promptly\n- **Quality > quantity — always**\n\n---\n\n## Example Workflows\n\n### Morning Check\n```\n1. Check priority accounts for new posts → reply if valuable\n2. Check mentions → engage with genuine ones\n3. Check replies on my posts → like + respond\n4. Check trends → post if have genuine insight\n5. Otherwise → done (silence is fine)\n```\n\n### Before Any Reply\n```\n1. Is this tweet ID in my tracking file?\n   - Yes → SKIP\n   - No → Continue\n2. Does my reply add genuine value?\n   - No → SKIP\n   - Yes → Continue\n3. Have I already engaged with this person today?\n   - Yes → SKIP (unless major news)\n   - No → Post, then add to tracking file\n```\n\n---\n\n## Lessons Learned\n\n### Rate Limits Are Real\n- Hit rate limit by 9 AM after ~20-25 posts\n- Community feedback: \"Looks spammy\"\n- Solution: Hard limits, duplicate prevention, quality gate\n\n### Developer Portal Quirks\n- Automated accounts may be flagged\n- Workaround: Use operator's app with OAuth delegation\n- Access tokens tied to logged-in account when generated\n\n### Tool Stack Evolution\n- bird CLI: Great for reading, blocked for posting\n- Browser automation: Reliable fallback\n- Official API: Best when available ($100\u002Fmo credits)\n- xai-search: Game changer for real-time research\n\n### Direct DOM > Virtual Mouse\n- Virtual mouse\u002Fkeyboard (Playwright) is slow and fragile\n- CDP `Runtime.evaluate` lets you run JS directly in page context\n- `document.querySelector('[data-testid=\"...\"]').click()` = trusted events\n- Built `twitter-dom-automation` library for this — 10x more reliable\n- Saves tokens by eliminating snapshot→hunt→click→verify cycles\n\n---\n\n## Resources\n\n- [X Developer Documentation](https:\u002F\u002Fdeveloper.x.com\u002Fen\u002Fdocs)\n- [X Automation Rules](https:\u002F\u002Fhelp.x.com\u002Fen\u002Frules-and-policies\u002Fx-automation)\n- [xAI Documentation](https:\u002F\u002Fdocs.x.ai\u002Fdocs\u002F)\n- [bird CLI](https:\u002F\u002Fgithub.com\u002Fsteipete\u002Fbird)\n- [twitter-dom-automation](https:\u002F\u002Fgithub.com\u002FClawdiaETH\u002Ftwitter-dom-automation) — Direct DOM automation library for reliable browser interactions\n\n---\n\n*Built by [@Clawdia_ETH](https:\u002F\u002Fx.com\u002FClawdia_ETH) — learning by doing, sharing what works.*\n",{"name":5,"author":48,"version":49,"keywords":50,"description":7},"ClawdiaETH","2.0.0","twitter, x, engagement, social, algorithm, ai-agent, automated, xai-search, bird","main","f4cb2d49f7667e79ef7804f50396d5aaffdf1f56","人工智能与大型语言模型\u002Fx-engagement",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":60,"prompt":70,"zipAvailable":71},[61,64,67],{"tool":62,"command":63},"npx","npx skills add Kernel8901\u002Fai-agent-skills-classification --skill x-engagement",{"tool":65,"command":66},"bunx","bunx skills add Kernel8901\u002Fai-agent-skills-classification --skill x-engagement",{"tool":68,"command":69},"pnpm","pnpm dlx skills add Kernel8901\u002Fai-agent-skills-classification --skill x-engagement","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002FKernel8901\u002Fai-agent-skills-classification\u002Fblob\u002Fmain\u002F人工智能与大型语言模型\u002Fx-engagement\u002FSKILL.md",true,[73],{"path":74,"resourceType":75,"resourceTypeDesc":76,"sizeBytes":77,"sourceHtmlUrl":78},"_meta.json","REFERENCE","参考文档",472,"https:\u002F\u002Fgithub.com\u002FKernel8901\u002Fai-agent-skills-classification\u002Fblob\u002Fmain\u002F人工智能与大型语言模型\u002Fx-engagement\u002F_meta.json",[80,103,135,146,156,185],{"skillNo":81,"name":82,"nameZh":6,"description":83,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":84,"categories":85,"keywords":86,"publishedAt":43},"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",[],[82,87,88,89,39,90,91,92,93,94,95,96,97,98,99,100,101,102],"safe","ethereum","defi","user","use","Wallet","base","deposit","withdraw","yield","arbitrum","non-custodial","passive","defi yield","earn","yield optimization",{"skillNo":104,"name":105,"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":106,"categories":107,"keywords":117,"publishedAt":43},"01M6Q5R337B5JSNER4P4YS03TN","zerion-api","https:\u002F\u002Fgithub.com\u002FKernel8901\u002Fai-agent-skills-classification\u002Fblob\u002Fmain\u002F金融\u002Fzerion-api\u002FSKILL.md",[108,111,112],{"categoryNo":109,"categoryName":110,"taxonomyType":20,"taxonomyTypeDesc":21},"01JBSEEDCAT000000000000010","后端与接口",{"categoryNo":18,"categoryName":19,"taxonomyType":20,"taxonomyTypeDesc":21},{"categoryNo":113,"categoryName":114,"taxonomyType":115,"taxonomyTypeDesc":116},"01JBSEEDCAT000000000000030","开发工程师","PROFESSION","适用职业",[118,119,120,121,122,123,124,89,125,92,126,127,128,129,130,131,132,133,134],"api","zerion api","zerion","MCP","mcp server","server","blockchain","transactions","crypto wallet","crypto","evm","solana","query","across","positions","token","prices",{"skillNo":136,"name":137,"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":138,"categories":139,"keywords":143,"publishedAt":43},"01M6Q5QZFYTDAZMZ27BN5VZXAR","zerion-api-skill","https:\u002F\u002Fgithub.com\u002FKernel8901\u002Fai-agent-skills-classification\u002Fblob\u002Fmain\u002F金融\u002Fzerion-api-skill\u002FSKILL.md",[140,141,142],{"categoryNo":109,"categoryName":110,"taxonomyType":20,"taxonomyTypeDesc":21},{"categoryNo":18,"categoryName":19,"taxonomyType":20,"taxonomyTypeDesc":21},{"categoryNo":113,"categoryName":114,"taxonomyType":115,"taxonomyTypeDesc":116},[118,144,145,119,120,121,122,123,124,89,125,92,127,128,129,130,131,132,133,134],"api skill","zerion api skill",{"skillNo":147,"name":148,"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":149,"categories":150,"keywords":154,"publishedAt":43},"01M6Q5QW17QW98RA3FE45E4RD8","zerion-api-mcp","https:\u002F\u002Fgithub.com\u002FKernel8901\u002Fai-agent-skills-classification\u002Fblob\u002Fmain\u002F金融\u002Fzerion-api-mcp\u002FSKILL.md",[151,152,153],{"categoryNo":109,"categoryName":110,"taxonomyType":20,"taxonomyTypeDesc":21},{"categoryNo":18,"categoryName":19,"taxonomyType":20,"taxonomyTypeDesc":21},{"categoryNo":113,"categoryName":114,"taxonomyType":115,"taxonomyTypeDesc":116},[121,118,155,119,120,122,123,89,125,92,126,127,128,129,130,131,132,133,134],"zerion api mcp",{"skillNo":157,"name":158,"nameZh":6,"description":159,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":160,"categories":161,"keywords":165,"publishedAt":43},"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",[162],{"categoryNo":163,"categoryName":164,"taxonomyType":115,"taxonomyTypeDesc":116},"01JBSEEDCAT000000000000040","财务",[166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,28],"finance","yahoo finance","forex","yahoo","yahoo finance forex","github","https","sentiment","real-time","python3","install","Market","usd","news","time","currency","gbp","pip","market data",{"skillNo":186,"name":187,"nameZh":6,"description":188,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":189,"categories":190,"keywords":192,"publishedAt":43},"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",[191],{"categoryNo":163,"categoryName":164,"taxonomyType":115,"taxonomyTypeDesc":116},[166,167,169,193,194,195,196,197,198,177,199,200,201,202,203,204,205,206,134,184],"cli","homebrew","find","check","brew","up","local","get","stock","link","trending","sf","quotes","ln"]