{"id":"cedc8bc3-33ff-4d18-a6c0-7248d7d112fb","entityType":"agent","slug":"clawhub-tech-melon-grok-twitter-search","name":"Grok Twitter Search","canonicalUrl":"https://www.xpersona.co/agent/clawhub-tech-melon-grok-twitter-search","canonicalPath":"/agent/clawhub-tech-melon-grok-twitter-search","generatedAt":"2026-10-11T04:34:48.825Z","source":"CLAWHUB","claimStatus":"UNCLAIMED","verificationTier":"NONE","summary":{"evidence":{"source":"editorial-content","verified":true,"confidence":"high","updatedAt":"2026-10-11T02:17:22.276Z","emptyReason":null},"description":"使用 xAI Grok 模型的 x_search 工具智能搜索 Twitter 内容。首创 Fast/Reasoning 双引擎动态路由，支持 SOCKS5 代理（WARP）精准流量分流。相比官方 X API 成本呈断崖式下降（实测约 $2.8/千次），语义理解更强、结果更智能。当用户需要搜索推特、监控舆情、分析... Skill: Grok Twitter Search Owner: tech-melon Summary: 使用 xAI Grok 模型的 x_search 工具智能搜索 Twitter 内容。首创 Fast/Reasoning 双引擎动态路由，支持 SOCKS5 代理（WARP）精准流量分流。相比官方 X API 成本呈断崖式下降（实测约 $2.8/千次），语义理解更强、结果更智能。当用户需要搜索推特、监控舆情、分析... Tags: latest:1.0.2 Version history: v1.0.2 | 2026-03-05T10:09:58.155Z | user 修复 Grok 解析逻辑，要求返回结构化 JSON，新增与 opentwitter 分工文档 v1.0.1 | 2026-03-03T15:50:38.033Z | auto - Major cleanup: removed 9 legacy and he","descriptionLabel":"Technical summary","evidenceSummary":"Capability contract not published. No trust telemetry is available yet. 1.2K downloads reported by the source. Last updated 10/11/2026.","installCommand":"clawhub skill install s171wa9b3f842e02dwz4fafzcn885gbs:grok-twitter-search","sourceUrl":"https://clawhub.ai/tech-melon/grok-twitter-search","homepage":"https://clawhub.ai/tech-melon/skills/grok-twitter-search","primaryLinks":[{"label":"View on ClawHub","url":"https://clawhub.ai/tech-melon/grok-twitter-search","kind":"source"},{"label":"Homepage","url":"https://clawhub.ai/tech-melon/skills/grok-twitter-search","kind":"homepage"}],"safetyScore":84,"overallRank":62,"popularityScore":62,"trustScore":null,"claimedByName":null,"isOwner":false,"seoDescription":"使用 xAI Grok 模型的 x_search 工具智能搜索 Twitter 内容。首创 Fast/Reasoning 双引擎动态路由，支持 SOCKS5 代理（WARP）精准流量分流。相比官方 X API 成本呈断崖式下降（实测约 $2.8/千次），语义理解更强、结果更智能。当用户需要搜索推特、监控舆情、分析..."},"coverage":{"evidence":{"source":"public-profile","verified":false,"confidence":"medium","updatedAt":"2026-10-11T02:17:22.276Z","emptyReason":null},"protocols":[{"protocol":"OPENCLEW","label":"OpenClaw","status":"self-declared","notes":"Declared in the public agent profile."}],"capabilities":[],"verifiedCount":0,"selfDeclaredCount":1,"capabilityMatrix":{"rows":[{"key":"OPENCLEW","type":"protocol","support":"unknown","confidenceSource":"profile","notes":"Listed on profile"}],"flattenedTokens":"protocol:OPENCLEW|unknown|profile"}},"adoption":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"medium","updatedAt":"2026-10-11T02:17:22.276Z","emptyReason":null},"stars":null,"forks":null,"downloads":1192,"packageName":null,"latestVersion":"1.0.2","tractionLabel":"1.2K downloads"},"release":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"medium","updatedAt":"2026-10-11T02:17:22.261Z","emptyReason":null},"lastUpdatedAt":"2026-10-11T02:17:22.276Z","lastCrawledAt":"2026-10-11T02:17:22.261Z","lastIndexedAt":null,"nextCrawlAt":"2026-10-12T02:17:22.261Z","lastVerifiedAt":null,"highlights":[{"version":"1.0.2","createdAt":"2026-03-05T10:09:58.155Z","changelog":"修复 Grok 解析逻辑，要求返回结构化 JSON，新增与 opentwitter 分工文档","fileCount":94,"zipByteSize":150731},{"version":"1.0.1","createdAt":"2026-03-03T15:50:38.033Z","changelog":"- Major cleanup: removed 9 legacy and helper scripts (test, check, and config tools) - Added pyproject.toml for modern Python packaging - Updated main scripts (`search_twitter.py`, `setup_interactive.py`) to run standalone without shell helpers - Now relies on environment configuration and interactive setup, simplifying installation and usage","fileCount":7,"zipByteSize":14203},{"version":"1.0.0","createdAt":"2026-03-02T06:46:01.367Z","changelog":"- Initial release of Grok Twitter Search skill. - Enables intelligent Twitter search using the xAI Grok model with dual Fast/Reasoning engine dynamic routing. - Supports SOCKS5 proxy (WARP) for accurate traffic routing and dynamic proxy auto-detection. - Significant cost reduction compared to official X API (~$2.8 per 1,000 searches), with stronger semantic understanding. - Provides easy setup (interactive wizard or manual), native tool-call data output, and advanced Chinese language support. - Includes troubleshooting guides and transparent usage/cost estimation.","fileCount":15,"zipByteSize":25517}]},"execution":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"low","updatedAt":null,"emptyReason":"No published capability contract is available yet."},"installCommand":"clawhub skill install s171wa9b3f842e02dwz4fafzcn885gbs:grok-twitter-search","setupComplexity":"low","setupSteps":["Setup complexity is LOW. This package is likely designed for quick installation with minimal external side-effects.","Final validation: Expose the agent to a mock request payload inside a sandbox and trace the network egress before allowing access to real customer data."],"contract":{"contractStatus":"missing","authModes":[],"requires":[],"forbidden":[],"supportsMcp":false,"supportsA2a":false,"supportsStreaming":false,"inputSchemaRef":null,"outputSchemaRef":null,"dataRegion":null,"contractUpdatedAt":null,"sourceUpdatedAt":null,"freshnessSeconds":null},"invocationGuide":{"preferredApi":{"snapshotUrl":"https://www.xpersona.co/api/v1/agents/clawhub-tech-melon-grok-twitter-search/snapshot","contractUrl":"https://www.xpersona.co/api/v1/agents/clawhub-tech-melon-grok-twitter-search/contract","trustUrl":"https://www.xpersona.co/api/v1/agents/clawhub-tech-melon-grok-twitter-search/trust"},"curlExamples":["curl -s \"https://www.xpersona.co/api/v1/agents/clawhub-tech-melon-grok-twitter-search/snapshot\"","curl -s \"https://www.xpersona.co/api/v1/agents/clawhub-tech-melon-grok-twitter-search/contract\"","curl -s \"https://www.xpersona.co/api/v1/agents/clawhub-tech-melon-grok-twitter-search/trust\""],"jsonRequestTemplate":{"query":"summarize this repo","constraints":{"maxLatencyMs":2000,"protocolPreference":["OPENCLEW"]}},"jsonResponseTemplate":{"ok":true,"result":{"summary":"...","confidence":0.9},"meta":{"source":"CLAWHUB","generatedAt":"2026-10-11T04:34:48.823Z"}},"retryPolicy":{"maxAttempts":3,"backoffMs":[500,1500,3500],"retryableConditions":["HTTP_429","HTTP_503","NETWORK_TIMEOUT"]}},"endpoints":{"dossierUrl":"https://www.xpersona.co/api/v1/agents/clawhub-tech-melon-grok-twitter-search/dossier","snapshotUrl":"https://www.xpersona.co/api/v1/agents/clawhub-tech-melon-grok-twitter-search/snapshot","contractUrl":"https://www.xpersona.co/api/v1/agents/clawhub-tech-melon-grok-twitter-search/contract","trustUrl":"https://www.xpersona.co/api/v1/agents/clawhub-tech-melon-grok-twitter-search/trust"}},"reliability":{"evidence":{"source":"runtime-metrics","verified":false,"confidence":"low","updatedAt":null,"emptyReason":"No trust, reliability, or runtime telemetry is available."},"trust":{"status":"unavailable","handshakeStatus":"UNKNOWN","verificationFreshnessHours":null,"reputationScore":null,"p95LatencyMs":null,"successRate30d":null,"fallbackRate":null,"attempts30d":null,"trustUpdatedAt":null,"trustConfidence":"unknown","sourceUpdatedAt":null,"freshnessSeconds":null},"decisionGuardrails":{"doNotUseIf":["Contract metadata is missing or unavailable for deterministic execution."],"safeUseWhen":[],"riskFlags":["missing_or_unavailable_contract","trust_data_unavailable","schema_references_missing"],"operationalConfidence":"low"},"executionMetrics":{"observedLatencyMsP50":null,"observedLatencyMsP95":null,"estimatedCostUsd":null,"uptime30d":null,"rateLimitRpm":null,"rateLimitBurst":null,"lastVerifiedAt":null,"verificationSource":null},"runtimeMetrics":{"successRate":null,"avgLatencyMs":null,"avgCostUsd":null,"hallucinationRate":null,"retryRate":null,"disputeRate":null,"p50Latency":null,"p95Latency":null,"lastUpdated":null}},"benchmarks":{"evidence":{"source":"no-benchmark-data","verified":false,"confidence":"low","updatedAt":null,"emptyReason":"No benchmark suites or observed failure patterns are available."},"suites":[],"failurePatterns":[]},"artifacts":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"high","updatedAt":"2026-10-11T02:17:22.276Z","emptyReason":null},"readme":"Skill: Grok Twitter Search\n\nOwner: tech-melon\n\nSummary: 使用 xAI Grok 模型的 x_search 工具智能搜索 Twitter 内容。首创 Fast/Reasoning 双引擎动态路由，支持 SOCKS5 代理（WARP）精准流量分流。相比官方 X API 成本呈断崖式下降（实测约 $2.8/千次），语义理解更强、结果更智能。当用户需要搜索推特、监控舆情、分析...\n\nTags: latest:1.0.2\n\nVersion history:\n\nv1.0.2 | 2026-03-05T10:09:58.155Z | user\n\n修复 Grok 解析逻辑，要求返回结构化 JSON，新增与 opentwitter 分工文档\n\nv1.0.1 | 2026-03-03T15:50:38.033Z | auto\n\n- Major cleanup: removed 9 legacy and helper scripts (test, check, and config tools)\n- Added pyproject.toml for modern Python packaging\n- Updated main scripts (`search_twitter.py`, `setup_interactive.py`) to run standalone without shell helpers\n- Now relies on environment configuration and interactive setup, simplifying installation and usage\n\nv1.0.0 | 2026-03-02T06:46:01.367Z | user\n\n- Initial release of Grok Twitter Search skill.\n- Enables intelligent Twitter search using the xAI Grok model with dual Fast/Reasoning engine dynamic routing.\n- Supports SOCKS5 proxy (WARP) for accurate traffic routing and dynamic proxy auto-detection.\n- Significant cost reduction compared to official X API (~$2.8 per 1,000 searches), with stronger semantic understanding.\n- Provides easy setup (interactive wizard or manual), native tool-call data output, and advanced Chinese language support.\n- Includes troubleshooting guides and transparent usage/cost estimation.\n\nArchive index:\n\nArchive v1.0.2: 94 files, 150731 bytes\n\nFiles: AGENTS.md (8099b), HEARTBEAT.md (168b), IDENTITY.md (469b), MEMORY.md (321b), memory/2026-03-04.md (294b), memory/2026-03-05.md (45b), opennews-mcp/config.json (128b), opennews-mcp/docs/README_JA.md (9883b), opennews-mcp/docs/README_KO.md (8933b), opennews-mcp/docs/README_ZH.md (8402b), opennews-mcp/knowledge/guide.md (1821b), opennews-mcp/openclaw-skill/opennews/package.json (591b), opennews-mcp/openclaw-skill/opennews/SKILL.md (4583b), opennews-mcp/pyproject.toml (435b), opennews-mcp/README.md (8555b), opennews-mcp/src/opennews_mcp/__init__.py (69b), opennews-mcp/src/opennews_mcp/__main__.py (45b), opennews-mcp/src/opennews_mcp/api_client.py (5018b), opennews-mcp/src/opennews_mcp/app.py (1446b), opennews-mcp/src/opennews_mcp/config.py (1912b), opennews-mcp/src/opennews_mcp/server.py (598b), opennews-mcp/src/opennews_mcp/tools/__init__.py (313b), opennews-mcp/src/opennews_mcp/tools/discovery.py (2484b), opennews-mcp/src/opennews_mcp/tools/news.py (8255b), opennews-mcp/src/opennews_mcp/tools/realtime.py (2270b), opentwitter-mcp/config.json (62b), opentwitter-mcp/docs/README_JA.md (9775b), opentwitter-mcp/docs/README_KO.md (8801b), opentwitter-mcp/docs/README_ZH.md (8213b), opentwitter-mcp/openclaw-skill/opentwitter/package.json (122b), opentwitter-mcp/openclaw-skill/opentwitter/SKILL.md (7601b), opentwitter-mcp/pyproject.toml (418b), opentwitter-mcp/README.md (8282b), opentwitter-mcp/src/config.json (62b), opentwitter-mcp/src/opentwitter_mcp/__init__.py (61b), opentwitter-mcp/src/opentwitter_mcp/__main__.py (48b), opentwitter-mcp/src/opentwitter_mcp/api_client.py (6372b), opentwitter-mcp/src/opentwitter_mcp/app.py (768b), opentwitter-mcp/src/opentwitter_mcp/config.py (1856b), opentwitter-mcp/src/opentwitter_mcp/server.py (602b), opentwitter-mcp/src/opentwitter_mcp/tools.py (8404b), qmd-index/bm25-index.json (4451b), QMD-SETUP.md (3728b), qmd/memory-search-wrapper.js (3776b), qmd/package-lock.json (48355b), qmd/package.json (351b), qmd/qmd-add.js (1471b), qmd/qmd-cli-wrapper.js (5223b), qmd/qmd-index.js (5734b), qmd/qmd-search.js (2852b), qmd/README.md (2543b), scripts/progress-tracker.js (3049b), SKILLS.md (2229b), skills/four-meme-ai/_meta.json (131b), skills/four-meme-ai/references/agent-creator-and-wallets.md (2754b), skills/four-meme-ai/references/api-create-token.md (2799b), skills/four-meme-ai/references/contract-addresses.md (1731b), skills/four-meme-ai/references/create-token-scripts.md (2546b), skills/four-meme-ai/references/errors.md (1483b), skills/four-meme-ai/references/event-listening.md (3928b), skills/four-meme-ai/references/execute-trade.md (1449b), skills/four-meme-ai/references/tax-token-query.md (2091b), skills/four-meme-ai/references/token-query-api.md (1398b), skills/four-meme-ai/references/token-tax-info.md (2817b), skills/four-meme-ai/scripts/8004-balance.ts (1590b), skills/four-meme-ai/scripts/8004-register.ts (3553b), skills/four-meme-ai/scripts/create-token-api.ts (9740b), skills/four-meme-ai/scripts/create-token-chain.ts (2757b), skills/four-meme-ai/scripts/execute-buy.ts (6110b), skills/four-meme-ai/scripts/execute-sell.ts (4349b), skills/four-meme-ai/scripts/get-public-config.ts (808b), skills/four-meme-ai/scripts/get-recent-events.ts (2733b), skills/four-meme-ai/scripts/get-tax-token-info.ts (3502b), skills/four-meme-ai/scripts/get-token-info.ts (2562b), skills/four-meme-ai/scripts/quote-buy.ts (2550b), skills/four-meme-ai/scripts/quote-sell.ts (1768b), skills/four-meme-ai/scripts/send-token.ts (3159b), skills/four-meme-ai/scripts/token-get.ts (884b), skills/four-meme-ai/scripts/token-list.ts (1518b), skills/four-meme-ai/scripts/token-rankings.ts (1774b)\n\nFile v1.0.2:opennews-mcp/openclaw-skill/opennews/SKILL.md\n\n---\nname: opennews\ndescription: Crypto news search, AI ratings, trading signals, and real-time updates via the OpenNews 6551 API. Supports keyword search, coin filtering, source filtering, AI score ranking, and WebSocket live feeds.\n\nuser-invocable: true\nmetadata:\n  openclaw:\n    requires:\n      env:\n        - OPENNEWS_TOKEN\n      bins:\n        - curl\n    primaryEnv: OPENNEWS_TOKEN\n    emoji: \"\\U0001F4F0\"\n    install:\n      - id: curl\n        kind: brew\n        formula: curl\n        label: curl (HTTP client)\n    os:\n      - darwin\n      - linux\n      - win32\n  version: 1.0.0\n---\n\n# OpenNews Crypto News Skill\n\nQuery crypto news from the 6551 platform REST API. All endpoints require a Bearer token via `$OPENNEWS_TOKEN`.\n\n**Get your token**: https://6551.io/mcp\n\n**Base URL**: `https://ai.6551.io`\n\n## Authentication\n\nAll requests require the header:\n```\nAuthorization: Bearer $OPENNEWS_TOKEN\n```\n\n---\n\n## News Operations\n\n### 1. Get News Sources\n\nFetch all available news source categories organized by engine type.\n\n```bash\ncurl -s -H \"Authorization: Bearer $OPENNEWS_TOKEN\" \\\n  \"https://ai.6551.io/open/news_type\"\n```\n\nReturns a tree with engine types (`news`, `listing`, `onchain`, `meme`, `market`) and their sub-categories.\n\n### 2. Search News\n\n`POST /open/news_search` is the primary search endpoint.\n\n**Get latest news:**\n```bash\ncurl -s -X POST \"https://ai.6551.io/open/news_search\" \\\n  -H \"Authorization: Bearer $OPENNEWS_TOKEN\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\"limit\": 10, \"page\": 1}'\n```\n\n**Search by keyword:**\n```bash\ncurl -s -X POST \"https://ai.6551.io/open/news_search\" \\\n  -H \"Authorization: Bearer $OPENNEWS_TOKEN\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\"q\": \"bitcoin ETF\", \"limit\": 10, \"page\": 1}'\n```\n\n**Search by coin symbol:**\n```bash\ncurl -s -X POST \"https://ai.6551.io/open/news_search\" \\\n  -H \"Authorization: Bearer $OPENNEWS_TOKEN\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\"coins\": [\"BTC\"], \"limit\": 10, \"page\": 1}'\n```\n\n**Filter by engine type and news type:**\n```bash\ncurl -s -X POST \"https://ai.6551.io/open/news_search\" \\\n  -H \"Authorization: Bearer $OPENNEWS_TOKEN\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\"engineTypes\": {\"news\": [\"Bloomberg\", \"Reuters\"]}, \"limit\": 10, \"page\": 1}'\n```\n\n**Only news with coins:**\n```bash\ncurl -s -X POST \"https://ai.6551.io/open/news_search\" \\\n  -H \"Authorization: Bearer $OPENNEWS_TOKEN\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\"hasCoin\": true, \"limit\": 10, \"page\": 1}'\n```\n\n### News Search Parameters\n\n| Parameter     | Type                      | Required | Description                                   |\n|--------------|---------------------------|----------|-----------------------------------------------|\n| `limit`      | integer                   | yes      | Max results per page (1-100)                  |\n| `page`       | integer                   | yes      | Page number (1-based)                         |\n| `q`          | string                    | no       | Full-text keyword search                      |\n| `coins`      | string[]                  | no       | Filter by coin symbols (e.g. `[\"BTC\",\"ETH\"]`) |\n| `engineTypes`| map[string][]string       | no       | Filter by engine and news types               |\n| `hasCoin`    | boolean                   | no       | Only return news with associated coins        |\n\n---\n\n## Data Structures\n\n### News Article\n\n```json\n{\n  \"id\": \"unique-article-id\",\n  \"text\": \"Article headline / content\",\n  \"newsType\": \"Bloomberg\",\n  \"engineType\": \"news\",\n  \"link\": \"https://...\",\n  \"coins\": [{\"symbol\": \"BTC\", \"market_type\": \"spot\", \"match\": \"title\"}],\n  \"aiRating\": {\n    \"score\": 85,\n    \"grade\": \"A\",\n    \"signal\": \"long\",\n    \"status\": \"done\",\n    \"summary\": \"Chinese summary\",\n    \"enSummary\": \"English summary\"\n  },\n  \"ts\": 1708473600000\n}\n```\n\n---\n\n## Common Workflows\n\n### Quick Market Overview\n```bash\ncurl -s -X POST \"https://ai.6551.io/open/news_search\" \\\n  -H \"Authorization: Bearer $OPENNEWS_TOKEN\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\"limit\": 10, \"page\": 1}' | jq '.data[] | {text, newsType, signal: .aiRating.signal}'\n```\n\n### High-Impact News (score >= 80)\n```bash\ncurl -s -X POST \"https://ai.6551.io/open/news_search\" \\\n  -H \"Authorization: Bearer $OPENNEWS_TOKEN\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\"limit\": 50, \"page\": 1}' | jq '[.data[] | select(.aiRating.score >= 80)]'\n```\n\n## Notes\n\n- Get your API token at https://6551.io/mcp\n- Rate limits apply; max 100 results per request\n- AI ratings may not be available on all articles (check `status == \"done\"`)\n\nFile v1.0.2:opentwitter-mcp/openclaw-skill/opentwitter/SKILL.md\n\n---\nname: opentwitter\ndescription: Twitter/X data via the 6551 API. Supports user profiles, tweet search, user tweets, follower events, deleted tweets, and KOL followers.\n\nuser-invocable: true\nmetadata:\n  openclaw:\n    requires:\n      env:\n        - TWITTER_TOKEN\n      bins:\n        - curl\n    primaryEnv: TWITTER_TOKEN\n    emoji: \"\\U0001F426\"\n    install:\n      - id: curl\n        kind: brew\n        formula: curl\n        label: curl (HTTP client)\n    os:\n      - darwin\n      - linux\n      - win32\n  version: 1.0.0\n---\n\n# Twitter/X Data Skill\n\nQuery Twitter/X data from the 6551 platform REST API. All endpoints require a Bearer token via `$TWITTER_TOKEN`.\n\n**Get your token**: https://6551.io/mcp\n\n**Base URL**: `https://ai.6551.io`\n\n## Authentication\n\nAll requests require the header:\n```\nAuthorization: Bearer $TWITTER_TOKEN\n```\n\n---\n\n## Twitter Operations\n\n### 1. Get Twitter User Info\n\nGet user profile by username.\n\n```bash\ncurl -s -X POST \"https://ai.6551.io/open/twitter_user_info\" \\\n  -H \"Authorization: Bearer $TWITTER_TOKEN\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\"username\": \"elonmusk\"}'\n```\n\n### 2. Get Twitter User by ID\n\nGet user profile by numeric ID.\n\n```bash\ncurl -s -X POST \"https://ai.6551.io/open/twitter_user_by_id\" \\\n  -H \"Authorization: Bearer $TWITTER_TOKEN\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\"userId\": \"44196397\"}'\n```\n\n### 3. Get User Tweets\n\nGet recent tweets from a user.\n\n```bash\ncurl -s -X POST \"https://ai.6551.io/open/twitter_user_tweets\" \\\n  -H \"Authorization: Bearer $TWITTER_TOKEN\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\"username\": \"elonmusk\", \"maxResults\": 20, \"product\": \"Latest\"}'\n```\n\n| Parameter         | Type    | Default  | Description                    |\n|------------------|---------|----------|--------------------------------|\n| `username`       | string  | required | Twitter username (without @)   |\n| `maxResults`     | integer | 20       | Max tweets (1-100)             |\n| `product`        | string  | \"Latest\" | \"Latest\" or \"Top\"              |\n| `includeReplies` | boolean | false    | Include reply tweets           |\n| `includeRetweets`| boolean | false    | Include retweets               |\n\n### 4. Search Twitter\n\nSearch tweets with various filters.\n\n```bash\ncurl -s -X POST \"https://ai.6551.io/open/twitter_search\" \\\n  -H \"Authorization: Bearer $TWITTER_TOKEN\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\"keywords\": \"bitcoin\", \"maxResults\": 20, \"product\": \"Top\"}'\n```\n\n**Search from specific user:**\n```bash\ncurl -s -X POST \"https://ai.6551.io/open/twitter_search\" \\\n  -H \"Authorization: Bearer $TWITTER_TOKEN\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\"fromUser\": \"VitalikButerin\", \"maxResults\": 20}'\n```\n\n**Search by hashtag:**\n```bash\ncurl -s -X POST \"https://ai.6551.io/open/twitter_search\" \\\n  -H \"Authorization: Bearer $TWITTER_TOKEN\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\"hashtag\": \"crypto\", \"minLikes\": 100, \"maxResults\": 20}'\n```\n\n### Twitter Search Parameters\n\n| Parameter         | Type    | Default | Description                         |\n|------------------|---------|---------|-------------------------------------|\n| `keywords`       | string  | -       | Search keywords                     |\n| `fromUser`       | string  | -       | Tweets from specific user           |\n| `toUser`         | string  | -       | Tweets to specific user             |\n| `mentionUser`    | string  | -       | Tweets mentioning user              |\n| `hashtag`        | string  | -       | Filter by hashtag (without #)       |\n| `excludeReplies` | boolean | false   | Exclude reply tweets                |\n| `excludeRetweets`| boolean | false   | Exclude retweets                    |\n| `minLikes`       | integer | 0       | Minimum likes threshold             |\n| `minRetweets`    | integer | 0       | Minimum retweets threshold          |\n| `minReplies`     | integer | 0       | Minimum replies threshold           |\n| `sinceDate`      | string  | -       | Start date (YYYY-MM-DD)             |\n| `untilDate`      | string  | -       | End date (YYYY-MM-DD)               |\n| `lang`           | string  | -       | Language code (e.g. \"en\", \"zh\")     |\n| `product`        | string  | \"Top\"   | \"Top\" or \"Latest\"                   |\n| `maxResults`     | integer | 20      | Max tweets (1-100)                  |\n\n### 5. Get Follower Events\n\nGet new followers or unfollowers for a user.\n\n```bash\n# Get new followers\ncurl -s -X POST \"https://ai.6551.io/open/twitter_follower_events\" \\\n  -H \"Authorization: Bearer $TWITTER_TOKEN\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\"username\": \"elonmusk\", \"isFollow\": true, \"maxResults\": 20}'\n\n# Get unfollowers\ncurl -s -X POST \"https://ai.6551.io/open/twitter_follower_events\" \\\n  -H \"Authorization: Bearer $TWITTER_TOKEN\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\"username\": \"elonmusk\", \"isFollow\": false, \"maxResults\": 20}'\n```\n\n| Parameter    | Type    | Default | Description                              |\n|-------------|---------|---------|------------------------------------------|\n| `username`  | string  | required| Twitter username (without @)             |\n| `isFollow`  | boolean | true    | true=new followers, false=unfollowers    |\n| `maxResults`| integer | 20      | Max events (1-100)                       |\n\n### 6. Get Deleted Tweets\n\nGet deleted tweets from a user.\n\n```bash\ncurl -s -X POST \"https://ai.6551.io/open/twitter_deleted_tweets\" \\\n  -H \"Authorization: Bearer $TWITTER_TOKEN\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\"username\": \"elonmusk\", \"maxResults\": 20}'\n```\n\n| Parameter    | Type    | Default | Description                    |\n|-------------|---------|---------|--------------------------------|\n| `username`  | string  | required| Twitter username (without @)   |\n| `maxResults`| integer | 20      | Max tweets (1-100)             |\n\n### 7. Get KOL Followers\n\nGet which KOLs (Key Opinion Leaders) are following a user.\n\n```bash\ncurl -s -X POST \"https://ai.6551.io/open/twitter_kol_followers\" \\\n  -H \"Authorization: Bearer $TWITTER_TOKEN\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\"username\": \"elonmusk\"}'\n```\n\n| Parameter   | Type   | Default | Description                    |\n|------------|--------|---------|--------------------------------|\n| `username` | string | required| Twitter username (without @)   |\n\n---\n\n## Data Structures\n\n### Twitter User\n\n```json\n{\n  \"userId\": \"44196397\",\n  \"screenName\": \"elonmusk\",\n  \"name\": \"Elon Musk\",\n  \"description\": \"...\",\n  \"followersCount\": 170000000,\n  \"friendsCount\": 500,\n  \"statusesCount\": 30000,\n  \"verified\": true\n}\n```\n\n### Tweet\n\n```json\n{\n  \"id\": \"1234567890\",\n  \"text\": \"Tweet content...\",\n  \"createdAt\": \"2024-02-20T12:00:00Z\",\n  \"retweetCount\": 1000,\n  \"favoriteCount\": 5000,\n  \"replyCount\": 200,\n  \"userScreenName\": \"elonmusk\",\n  \"hashtags\": [\"crypto\", \"bitcoin\"],\n  \"urls\": [{\"url\": \"https://...\"}]\n}\n```\n\n---\n\n## Common Workflows\n\n### Crypto Twitter KOL Tweets\n```bash\ncurl -s -X POST \"https://ai.6551.io/open/twitter_user_tweets\" \\\n  -H \"Authorization: Bearer $TWITTER_TOKEN\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\"username\": \"VitalikButerin\", \"maxResults\": 10}'\n```\n\n### Trending Crypto Tweets\n```bash\ncurl -s -X POST \"https://ai.6551.io/open/twitter_search\" \\\n  -H \"Authorization: Bearer $TWITTER_TOKEN\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\"keywords\": \"bitcoin\", \"minLikes\": 1000, \"product\": \"Top\", \"maxResults\": 20}'\n```\n\n## Notes\n\n- Get your API token at https://6551.io/mcp\n- Rate limits apply; max 100 results per request\n- Twitter usernames should not include the @ symbol\n\nFile v1.0.2:skills/four-meme-ai/SKILL.md\n\n---\r\nname: four-meme-ai\r\ndescription: |\r\n  CLI tool for creating and trading meme tokens on Four.Meme (BSC), with structured JSON outputs for config, token details, pricing quotes, on-chain events, and TaxToken fee configuration.\r\n\r\n  \r\n\r\nallowed-tools:\r\n  - Bash(fourmeme *)\r\n  - Bash(npx fourmeme *)\r\nlicense: MIT\r\nmetadata:\r\n  {\"author\":\"Four.meme AI Skill\",\"version\":\"1.0.0\",\"openclaw\":{\"requires\":{\"env\":[\"PRIVATE_KEY\"]},\"primaryEnv\":\"PRIVATE_KEY\",\"optionalEnv\":[\"BSC_RPC_URL\"]}}\r\n---\r\n\r\n## [Agent must follow] User agreement and security notice on first use\r\n\r\nWhen responding to any user request about fourmeme or this skill, **you must first** present the content below in this order: **User Agreement, then Security Notice**, and state clearly that by choosing to continue, the user agrees to the User Agreement.  \r\nUntil the user has explicitly agreed or confirmed to continue, **do not** run `create-api`, `create-chain`, `buy`, `sell`, `send`, or `8004-register` (any operation that uses the private key or writes to the chain). Read-only commands (e.g. `config`, `token-info`, `quote-buy`, `8004-balance`) may be run while or after presenting the notice.\r\n\r\n**Language selection**: Present the User Agreement and Security Notice **in the user’s language**. If the user is writing in **Traditional Chinese (繁體中文)**, use the **繁體中文** block below; otherwise use the **English** block.\r\n\r\n---\r\n\r\n### User Agreement & Security Notice (繁體中文)\r\n\r\n**用戶協議**\r\n\r\n**前情提示**：使用本插件及本 skill 所涉功能（包括但不限於代幣創建、買賣、轉帳、8004 註冊等）前，請您閱讀以下協議。**若您選擇繼續使用本插件及本 skill 功能，即表示您已閱讀、理解並同意本協議。**\r\n\r\n**本插件性質與責任限制**：本插件僅提供純本地的命令列互動能力（私鑰透過環境變數或本地設定使用），**不會收集、上傳或儲存您的私鑰**。因任何原因（包括但不限於插件被竄改、環境遭入侵、誤操作、第三方插件等）導致的私鑰洩露或資產損失，**本插件及提供方不承擔責任**。\r\n\r\n**安全警示**\r\n\r\n使用本插件進行代幣創建、買賣、轉帳等操作時，請務必注意：\r\n\r\n- **保護私鑰**：切勿在聊天對話中輸入、貼上或洩露私鑰；不要將私鑰分享給任何人或任何第三方。\r\n- **交易錢包僅存小額資金**：用於執行操作的錢包（即提供 PRIVATE_KEY 的錢包）建議只存放少量資金，以降低因洩露或誤操作導致的損失。\r\n- **及時轉出資金**：完成交易後，請及時將交易錢包中的資產轉移到您自己控制的、更安全的錢包或冷錢包中。\r\n- **謹慎安裝 Agent／插件**：下載或安裝任何 Agent、瀏覽器插件或第三方工具時，請確認來源可信，避免惡意插件竊取私鑰或助記詞。\r\n\r\n---\r\n\r\n### User Agreement & Security Notice (English)\r\n\r\n**User Agreement**\r\n\r\n**Notice**: Before using this plugin and this skill (including but not limited to token creation, buy/sell, transfers, 8004 registration), please read the following. **By choosing to continue using this plugin and this skill, you have read, understood, and agreed to this agreement.**\r\n\r\n**Plugin nature and limitation of liability**: This plugin provides local-only CLI interaction (private key is used via environment or local config). It **does not collect, upload, or store your private key**. The plugin and its providers **are not liable** for private key disclosure or asset loss due to any cause (including but not limited to tampered plugin, compromised environment, user error, or third-party plugins).\r\n\r\n**Security Notice**\r\n\r\nWhen using this plugin for token creation, trading, or transfers, please:\r\n\r\n- **Protect your private key**: Do not type, paste, or expose your private key in chat; do not share it with anyone or any third party.\r\n- **Keep only small amounts in the trading wallet**: The wallet used for operations (the one whose PRIVATE_KEY you provide) should hold only a small amount of funds to limit loss from disclosure or mistakes.\r\n- **Move funds out promptly**: After trading, move assets from the trading wallet to a wallet or cold storage you control.\r\n- **Install agents/plugins carefully**: When installing any agent, browser extension, or third-party tool, verify the source to avoid malware that could steal your private key or seed phrase.\r\n\r\n---\r\n\r\n## fourmeme capability overview\r\n\r\nAfter you agree to the above and confirm to continue, this skill can help you with the following (all via the `fourmeme` CLI on BSC):\r\n\r\n| Category | Capability | Description |\r\n|----------|-------------|-------------|\r\n| **Create** | Create token | Upload image + name/symbol/description/label; optional tax-token params; API returns signature then on-chain create. |\r\n| **Query** | Public config | Get raisedToken and other public config (no auth). |\r\n| **Query** | Token info (on-chain) | By address: version, tokenManager, price, offers (Helper3). |\r\n| **Query** | Token list / detail / rankings | REST: filtered paginated list, single-token detail and trading info, hot/24h volume/newest/graduated rankings. |\r\n| **Trading** | Buy/sell quotes | Estimate cost or proceeds for buy or sell (no transaction sent). |\r\n| **Trading** | Execute buy | Buy a given token by amount or by quote spent (requires PRIVATE_KEY). |\r\n| **Trading** | Execute sell | Sell a given token amount; optional minimum quote received (requires PRIVATE_KEY). |\r\n| **Other** | Event listening | Fetch TokenCreate, TokenPurchase, TokenSale, LiquidityAdded on-chain. |\r\n| **Other** | Tax token fees | Query on-chain fee and burn/dividend/liquidity config for a token. |\r\n| **Other** | Send | Send BNB or ERC20 to a given address (requires PRIVATE_KEY). |\r\n| **Other** | EIP-8004 | Register 8004 identity NFT; query balance by address. |\r\n\r\nSee the **CLI (fourmeme)** table and sections below for commands and arguments.\r\n\r\n---\r\n\r\n# fourmeme CLI\r\n\r\nBSC only; all commands output JSON. Run `fourmeme --help` for usage.\r\n\r\n## Installation (required before use)\r\n\r\n**You must install the fourmeme CLI before using this skill.** Recommended (global):\r\n\r\n```bash\r\nnpm install -g @four-meme/four-meme-ai@latest\r\n```\r\n\r\nAfter installation, run commands with `fourmeme <command> [args]`. If you use a local install instead, use `npx fourmeme <command> [args]` from the project root.\r\n\r\nThis skill provides: token creation (API + chain), buy/sell quotes and execution, token info/list/rankings, event listening, Tax token fee queries, send, and EIP-8004 identity NFT register and balance. Contract addresses and version notes: [references/contract-addresses.md](references/contract-addresses.md). **TokenManager V1 is not supported in this skill.**\r\n\r\n## Create token flow\r\n\r\n### 1. Ask user for required information (must be done first)\r\n\r\nBefore calling `create-api`, the Agent **must** ask the user for and confirm:\r\n\r\n| Info | Required | Description |\r\n|------|----------|-------------|\r\n| **Image path** (imagePath) | Yes | Local logo path; jpeg/png/gif/bmp/webp |\r\n| **Token name** (name) | Yes | Full token name |\r\n| **Token symbol** (shortName) | Yes | e.g. MTK, DOGE |\r\n| **Description** (desc) | Yes | Token description text |\r\n| **Label** (label) | Yes | One of: Meme \\| AI \\| Defi \\| Games \\| Infra \\| De-Sci \\| Social \\| Depin \\| Charity \\| Others |\r\n| **Tax token?** | No | If yes, then ask for tokenTaxInfo (feeRate, four rates, recipientAddress, minSharing); see \"Create token (full flow)\" below |\r\n\r\nOptional: WEB_URL, TWITTER_URL, TELEGRAM_URL, PRE_SALE, FEE_PLAN (AntiSniperFeeMode), etc.; may be provided by user or left at defaults.\r\n\r\n### 2. Technical flow (done by create-api / create-chain)\r\n\r\nAfter collecting the above, execute in this order (handled by scripts or CLI):\r\n\r\n1. **Get nonce** — `POST /private/user/nonce/generate` with body accountAddress, verifyType, networkCode (BSC).\r\n2. **Login** — Sign `You are sign in Meme {nonce}` with wallet; `POST /private/user/login/dex` to get access_token.\r\n3. **Upload image** — `POST /private/token/upload` with access_token in header and image as body; get imgUrl.\r\n4. **Create (API)** — GET `/public/config` for raisedToken (do not modify); `POST /private/token/create` with name, shortName, desc, imgUrl, label, raisedToken, etc.; get createArg, signature.\r\n5. **Create (chain)** — Call `TokenManager2.createToken(createArg, sign)` on BSC to complete on-chain creation.\r\n\r\nCommands: first `fourmeme create-api <imagePath> <name> <shortName> <desc> <label> [taxOptions.json]`, then `fourmeme create-chain <createArgHex> <signatureHex>`. Full API and parameters: [references/api-create-token.md](references/api-create-token.md); script flow and examples: [references/create-token-scripts.md](references/create-token-scripts.md); Tax token params: [references/token-tax-info.md](references/token-tax-info.md).\r\n\r\n## Agent workflow: buy/sell from rankings or events\r\n\r\nThis skill supports a flow to discover tokens, get details, quote, and execute. The following is an example workflow, not a trading recommendation: discover → detail → quote → execute.\r\n\r\n1. **Discover** (one or more of):  \r\n   - **Rankings**: `fourmeme token-rankings <orderBy>` (orderBy = Hot, TradingDesc, Time, ProgressDesc, Graduated); use token addresses from the response.  \r\n   - **List**: `fourmeme token-list [--orderBy=] [--labels=] ...` to filter and get addresses.  \r\n   - **On-chain events**: `fourmeme events <fromBlock> [toBlock]`; parse token addresses from TokenCreate/TokenPurchase, etc., for “newly created” or “recent trades” strategies.\r\n2. **Get details**: For each candidate, call `fourmeme token-get <address>` (REST detail and trading info) or `fourmeme token-info <address>` (on-chain version, tokenManager, price, offers) to filter or display.\r\n3. **Quote**: `fourmeme quote-buy <token> <amountWei> [fundsWei]` / `fourmeme quote-sell <token> <amountWei>` for estimated cost or proceeds.\r\n4. **Execute**: `fourmeme buy ...` / `fourmeme sell ...` (requires PRIVATE_KEY). **Before executing, the Agent must confirm user intent** (e.g. user said “buy 0.05 BNB each for top 5 by 24h volume” or “auto-buy 0.01 BNB for new tokens”) and obtain explicit confirmation before first automated execution to avoid unauthorized use of funds.\r\n\r\nWhen the user asks to “buy/sell based on rankings or activity”, the Agent should clarify: which ranking (hot, 24h volume, newest, graduated, etc.), amount per token, and whether to quote only or also execute; then run the appropriate commands.\r\n\r\n## Trading (Buy / Sell)\r\n\r\n- **Version** – Use TokenManagerHelper3 `getTokenInfo(token)`. If `version === 1` use V1 TokenManager; if `version === 2` use TokenManager2 (and check for X Mode / TaxToken / AntiSniperFeeMode if needed).\r\n- **Quote (pre-calc)** – TokenManagerHelper3:  \r\n  - Buy: `tryBuy(token, amount, funds)` – use `amount > 0` for “buy X tokens”, or `funds > 0` for “spend X quote”.  \r\n  - Sell: `trySell(token, amount)`.\r\n- **Execute** – Use the `tokenManager` address from `getTokenInfo` and call the corresponding contract:  \r\n  - V1: `purchaseToken` / `purchaseTokenAMAP`, `saleToken`.  \r\n  - V2: `buyToken` / `buyTokenAMAP`, `sellToken`. For sell, user must `ERC20.approve(tokenManager, amount)` first.  \r\n  - X Mode tokens: use TokenManager2 `buyToken(bytes args, uint256 time, bytes signature)` with encoded `BuyTokenParams`.\r\n\r\n## CLI (fourmeme)\r\n\r\nRun `fourmeme --help` for usage. After **global install** (`npm install -g @four-meme/four-meme-ai@latest`), use **`fourmeme <command> [args]`**. With a local install only, use **`npx fourmeme <command> [args]`** from the project root.\r\n\r\n### PRIVATE_KEY and BSC_RPC_URL\r\n\r\n**When using OpenClaw**  \r\nThis skill declares `requires.env: [\"PRIVATE_KEY\"]` and `primaryEnv: \"PRIVATE_KEY\"` in metadata; OpenClaw injects them only when an agent runs with **this skill enabled** (other skills cannot access them).\r\n\r\n**Required steps:**\r\n1. **Configure private key**: In the Skill management page, set the four-meme-ai skill’s **apiKey** (corresponds to `primaryEnv: \"PRIVATE_KEY\"`), or set `PRIVATE_KEY` under `skills.entries[\"four-meme-ai\"].env` in `~/.openclaw/openclaw.json`. Optionally set **BSC_RPC_URL** in global env if needed.\r\n2. **Enable this skill**: In the agent or session, ensure the **four-meme-ai** skill is **enabled**. Only when the skill is enabled will OpenClaw inject **PRIVATE_KEY** into the process; otherwise create/buy/sell/send/8004-register will fail with missing key. **BSC_RPC_URL** is optional (metadata: `optionalEnv`); if not set, scripts use a default BSC RPC.\r\n\r\n**When not using OpenClaw (standalone)**  \r\nSet **PRIVATE_KEY** and optionally **BSC_RPC_URL** via the process environment so they are available when running `npx fourmeme` or `node bin/fourmeme.cjs`:\r\n\r\n- **.env file**: Put a `.env` file in **the directory where you run the `fourmeme` command** (i.e. your project / working directory). Example: if you run `fourmeme quote-buy ...` from `/path/to/my-project`, place `.env` at `/path/to/my-project/.env`. The CLI automatically loads `.env` from that current working directory. Use lines like `PRIVATE_KEY=...` and `BSC_RPC_URL=...`. Do not commit `.env`; add it to `.gitignore`.\r\n- **Shell export**: `export PRIVATE_KEY=your_hex_key` and `export BSC_RPC_URL=https://bsc-dataseed.binance.org` (or another BSC RPC), then run `npx fourmeme <command> ...`.\r\n\r\n### Declared and optional environment variables\r\n\r\n- **Declared in registry metadata** (injected by OpenClaw when skill is enabled): **PRIVATE_KEY** (required for write operations). Optional in metadata: **BSC_RPC_URL** (scripts fall back to default BSC RPC if unset).\r\n- **Not in metadata; optional, may be set in env or project `.env`**: **BSC_RPC_URL**, **CREATION_FEE_WEI** (extra BNB on create), **TAX_TOKEN**, **TAX_FEE_RATE**, **TAX_BURN_RATE**, **TAX_DIVIDE_RATE**, **TAX_LIQUIDITY_RATE**, **TAX_RECIPIENT_RATE**, **TAX_RECIPIENT_ADDRESS**, **TAX_MIN_SHARING**, **WEB_URL**, **TWITTER_URL**, **TELEGRAM_URL**, **PRE_SALE**, **FEE_PLAN**, **8004_NFT_ADDRESS** / **EIP8004_NFT_ADDRESS**. Only **PRIVATE_KEY** is required for signing; others have defaults or are used only for specific commands (see Create token flow, EIP-8004, etc.).\r\n\r\n### Execution and install\r\n\r\n- **Invocation**: The agent must run commands only via the **fourmeme** CLI: `fourmeme <command> [args]` or `npx fourmeme <command> [args]` (allowed-tools). Do not invoke scripts or `npx tsx` directly; the CLI entry (`bin/fourmeme.cjs`) dispatches to the correct script and loads `.env` from the current working directory.\r\n- **Install**: `npm install -g @four-meme/four-meme-ai@latest`. Runtime: Node.js. Dependencies (including dotenv, viem, tsx) are declared in the package’s `package.json`; global install installs them. No separate install spec beyond the npm package.\r\n\r\n| Need | Command | When |\r\n|------|---------|------|\r\n| Public config | `fourmeme config` | Get raisedToken / config (no auth) |\r\n| Token info (on-chain) | `fourmeme token-info <tokenAddress>` | Version, tokenManager, price, offers (BSC Helper3) |\r\n| Token list (REST) | `fourmeme token-list [--orderBy=] [--pageIndex=] [--pageSize=] [--tokenName=] [--symbol=] [--labels=] [--listedPancake=]` | Filtered, paginated token list |\r\n| Token detail (REST) | `fourmeme token-get <tokenAddress>` | Token detail and trading info (get/v2) |\r\n| Token rankings (REST) | `fourmeme token-rankings <orderBy> [--barType=HOUR24]` | Time / ProgressDesc / TradingDesc / Hot / Graduated; barType for TradingDesc |\r\n| Buy quote | `fourmeme quote-buy <token> <amountWei> [fundsWei]` | Estimate only; no transaction |\r\n| Sell quote | `fourmeme quote-sell <token> <amountWei>` | Estimate only; no transaction |\r\n| **Execute buy** | `fourmeme buy <token> amount <amountWei> <maxFundsWei>` | Buy fixed amount (needs PRIVATE_KEY) |\r\n| **Execute buy** | `fourmeme buy <token> funds <fundsWei> <minAmountWei>` | Spend fixed quote (e.g. BNB) (needs PRIVATE_KEY) |\r\n| **Execute sell** | `fourmeme sell <token> <amountWei> [minFundsWei]` | Sell (needs PRIVATE_KEY) |\r\n| **Send** | `fourmeme send <toAddress> <amountWei> [tokenAddress]` | Send BNB or ERC20 to address (needs PRIVATE_KEY) |\r\n| **EIP-8004 register** | `fourmeme 8004-register <name> [imageUrl] [description]` | Register 8004 identity NFT (needs PRIVATE_KEY) |\r\n| **EIP-8004 query** | `fourmeme 8004-balance <ownerAddress>` | Query 8004 NFT balance (read-only) |\r\n| Events | `fourmeme events <fromBlock> [toBlock]` | TokenCreate / Purchase / Sale / LiquidityAdded |\r\n| Tax token info | `fourmeme tax-info <tokenAddress>` | Fee/tax config for TaxToken |\r\n| Read-only check | `fourmeme verify` | Run config + events (last 50 blocks) |\r\n\r\nChain: **BSC only** (Arbitrum/Base not supported).\r\n\r\n### Create token (full flow)\r\n\r\n**Agent interaction: ask about tax token and parameters before creating**\r\n\r\nWhen the user asks to create a token, the Agent must ask in this order:\r\n\r\n1. **Tax token or not?**  \r\n   Ask: “Do you want to create a tax (Tax) token? If not, it will be a normal token.”  \r\n   - If **no**: use `fourmeme create-api <imagePath> <name> <shortName> <desc> <label>` (no sixth argument, no TAX_* env vars).  \r\n   - If **yes**: continue to step 2.\r\n\r\n2. **Tax parameters** (only when user chose tax token)  \r\n   Ask for (and explain constraints; see “tokenTaxInfo parameters” table below):  \r\n   - **feeRate**: Fee rate (%). **Only 1, 3, 5, or 10.**  \r\n   - **burnRate**, **divideRate**, **liquidityRate**, **recipientRate**: Four percentages; **sum must be 100**.  \r\n   - If **recipientRate > 0**: ask **recipientAddress**.  \r\n   - **minSharing**: Minimum token balance to participate in dividends (in ether units, e.g. 100000, 1000000).\r\n\r\n   Then either:  \r\n   - **Option A**: Write `{ \"tokenTaxInfo\": { ... } }` to a JSON file and call `fourmeme create-api ... <path/to/tax.json>`.  \r\n   - **Option B**: Set env vars TAX_TOKEN=1, TAX_FEE_RATE, TAX_BURN_RATE, TAX_DIVIDE_RATE, TAX_LIQUIDITY_RATE, TAX_RECIPIENT_RATE, TAX_RECIPIENT_ADDRESS (optional), TAX_MIN_SHARING, then run `fourmeme create-api <imagePath> <name> <shortName> <desc> <label>` (no sixth argument).\r\n\r\n**Step 1 – Config (optional)**  \r\n```bash\r\nfourmeme config\r\n```\r\n\r\n**Step 2 – Create token (API)**  \r\nRequires `PRIVATE_KEY`. Outputs `createArg` and `signature` (hex).\r\n\r\n| Position | Argument | Description |\r\n|----------|----------|-------------|\r\n| 1 | `imagePath` | Local image path (jpeg/png/gif/bmp/webp) |\r\n| 2 | `name` | Token full name |\r\n| 3 | `shortName` | Token symbol (e.g. MTK) |\r\n| 4 | `desc` | Description text |\r\n| 5 | `label` | Category label (see list below) |\r\n| 6 | `[taxOptions.json]` | Optional; path to JSON containing `tokenTaxInfo` for tax token |\r\n\r\n**Label** (exactly one): `Meme` \\| `AI` \\| `Defi` \\| `Games` \\| `Infra` \\| `De-Sci` \\| `Social` \\| `Depin` \\| `Charity` \\| `Others`.\r\n\r\n**Optional env vars** (defaults if omitted): `WEB_URL`, `TWITTER_URL`, `TELEGRAM_URL`; `PRE_SALE` (default `\"0\"`); `FEE_PLAN` (`\"true\"` = AntiSniperFeeMode, default `\"false\"`).\r\n\r\n```bash\r\nfourmeme create-api <imagePath> <name> <shortName> <desc> <label> [taxOptions.json]\r\n# Example: fourmeme create-api ./logo.png MyToken MTK \"Description\" AI\r\n# Tax: fourmeme create-api ./logo.png TaxToken TAX \"Tax token\" Meme tax.json\r\n```\r\n\r\n**Tax token**  \r\n- **Option 1**: Last argument = path to JSON file with `{ \"tokenTaxInfo\": { ... } }`; fields see “tokenTaxInfo parameters” below.  \r\n- **Option 2**: Env vars: `TAX_TOKEN=1`, `TAX_FEE_RATE` (1|3|5|10), `TAX_BURN_RATE` / `TAX_DIVIDE_RATE` / `TAX_LIQUIDITY_RATE` / `TAX_RECIPIENT_RATE` (sum = 100), `TAX_RECIPIENT_ADDRESS`, `TAX_MIN_SHARING` (e.g. 100000). See [references/token-tax-info.md](references/token-tax-info.md).\r\n\r\n**tokenTaxInfo parameters** (required for tax token, via JSON or env):\r\n\r\n| Field | Type | Description | Constraint |\r\n|-------|------|-------------|------------|\r\n| `feeRate` | number | Trading fee rate (%) | **Only** `1`, `3`, `5`, `10` |\r\n| `burnRate` | number | Burn share (%) | Sum with next three = 100 |\r\n| `divideRate` | number | Dividend share (%) | Same |\r\n| `liquidityRate` | number | Liquidity share (%) | Same |\r\n| `recipientRate` | number | Recipient share (%) | 0 if unused |\r\n| `recipientAddress` | string | Recipient address | `\"\"` if unused |\r\n| `minSharing` | number | Min balance for dividend (ether units) | d×10ⁿ, n≥5, 1≤d≤9; e.g. 100000, 1000000 |\r\n\r\nExample (5% fee, 20% burn, 30% dividend, 40% liquidity, 10% recipient):\r\n\r\n```json\r\n{\r\n  \"tokenTaxInfo\": {\r\n    \"feeRate\": 5,\r\n    \"burnRate\": 20,\r\n    \"divideRate\": 30,\r\n    \"liquidityRate\": 40,\r\n    \"recipientRate\": 10,\r\n    \"recipientAddress\": \"0x1234567890123456789012345678901234567890\",\r\n    \"minSharing\": 100000\r\n  }\r\n}\r\n```\r\n\r\n**Step 3 – Create token (chain)**  \r\n```bash\r\nfourmeme create-chain <createArgHex> <signatureHex>\r\n# Or pipe: fourmeme create-api ... | fourmeme create-chain --\r\n```\r\n\r\n#### Full automated create flow\r\n\r\nTo **create and submit on-chain in one go**, the Agent should:\r\n\r\n1. **Run create-api** to get signature data (same as Step 2 above; JSON with `createArg` and `signature`):  \r\n   ```bash\r\n   fourmeme create-api <imagePath> <name> <shortName> <desc> <label> [taxOptions.json]\r\n   ```  \r\n   Parse stdout JSON for `createArg` and `signature` (already hex strings).\r\n\r\n2. **Run create-chain** with those two values:  \r\n   ```bash\r\n   fourmeme create-chain <createArgHex> <signatureHex>\r\n   ```  \r\n   This calls `TokenManager2.createToken(createArg, sign)` on BSC and outputs tx result / token address.\r\n\r\n3. **Optional**: If the user said “create and go on-chain for me”, the Agent can run the two steps in sequence after collecting tax params, then summarize: success, `tokenAddress` / `requestId`, and main params (name, shortName, label, tax config).\r\n\r\n### token-info\r\n\r\n```bash\r\nfourmeme token-info <tokenAddress>\r\n```\r\nOn-chain query (Helper3); returns version, tokenManager, price, offers, etc.\r\n\r\n### token-list / token-get / token-rankings (REST)\r\n\r\nFour.meme REST API; use `Accept: application/json`; no login or cookie.\r\n\r\n**Token list (filter / paginate)**  \r\n```bash\r\nfourmeme token-list [--orderBy=Hot] [--pageIndex=1] [--pageSize=30] [--tokenName=] [--symbol=] [--labels=] [--listedPancake=false]\r\n```\r\n\r\n**Token detail and trading info**  \r\n```bash\r\nfourmeme token-get <tokenAddress>\r\n```\r\nAPI: GET `/private/token/get/v2?address=...`\r\n\r\n**Rankings**  \r\n```bash\r\nfourmeme token-rankings <orderBy> [--barType=HOUR24]\r\n```\r\norderBy: `Time` (newest) | `ProgressDesc` | `TradingDesc` (24h volume; barType HOUR24) | `Hot` | `Graduated`. Output JSON.\r\n\r\n### quote-buy / quote-sell (estimate only; no transaction)\r\n\r\n```bash\r\nfourmeme quote-buy <tokenAddress> <amountWei> [fundsWei]\r\nfourmeme quote-sell <tokenAddress> <amountWei>\r\n```\r\n- amountWei: token amount (use 0 when buying by quote amount); fundsWei: quote to spend (omit or 0 when buying by token amount).\r\n\r\n### buy / sell (execute; requires PRIVATE_KEY)\r\n\r\n**Buy** (one of):  \r\n- By amount: `fourmeme buy <token> amount <amountWei> <maxFundsWei>` (spend at most maxFundsWei to buy amountWei tokens).  \r\n- By funds: `fourmeme buy <token> funds <fundsWei> <minAmountWei>` (spend fundsWei quote, receive at least minAmountWei tokens).\r\n\r\n**Sell**: Script performs approve then sell.  \r\n```bash\r\nfourmeme sell <tokenAddress> <amountWei> [minFundsWei]\r\n```\r\n- minFundsWei optional (slippage: minimum quote received). V2 tokens only.\r\n\r\n### send (send BNB or ERC20 to an address)\r\n\r\nSend **native BNB** or **ERC20** from the current wallet (PRIVATE_KEY) to a given address (BSC).\r\n\r\n```bash\r\nfourmeme send <toAddress> <amountWei> [tokenAddress]\r\n```\r\n\r\n| Argument | Description |\r\n|----------|-------------|\r\n| `toAddress` | Recipient address (0x...) |\r\n| `amountWei` | Amount in wei (BNB or token smallest unit) |\r\n| `tokenAddress` | Optional. Omit or use `BNB` / `0x0` for native BNB; otherwise ERC20 contract address |\r\n\r\n- Env: `PRIVATE_KEY`. Optional: `BSC_RPC_URL`.\r\n- Output: JSON with `txHash`, `to`, `amountWei`, `native` (whether BNB).\r\n\r\nExamples:\r\n```bash\r\n# Send 0.1 BNB (1e17 wei)\r\nfourmeme send 0x1234...abcd 100000000000000000\r\n\r\n# Send 1000 units of an ERC20 (18 decimals)\r\nfourmeme send 0x1234...abcd 1000000000000000000000 0xTokenContractAddress\r\n```\r\n\r\n### EIP-8004 identity NFT (register and query)\r\n\r\nEIP-8004 identity NFT: **register** (mint) and **query balance**. Default contract: `0x8004A169FB4a3325136EB29fA0ceB6D2e539a432` (BSC). Override with env `8004_NFT_ADDRESS` or `EIP8004_NFT_ADDRESS`.\r\n\r\n**Register**: Requires `PRIVATE_KEY`. User provides name (required), image URL (optional), description (optional). CLI builds EIP-8004 payload (type, name, description, image, active, supportedTrust), encodes as `data:application/json;base64,<base64>` for `agentURI`, and calls `register(string agentURI)`.\r\n\r\n```bash\r\nfourmeme 8004-register <name> [imageUrl] [description]\r\n```\r\n\r\n| Argument | Description |\r\n|----------|-------------|\r\n| `name` | Required. Identity name |\r\n| `imageUrl` | Optional. Avatar/image URL (must be publicly reachable) |\r\n| `description` | Optional. Description |\r\n\r\n- Output JSON: `txHash`, `agentId` (from event), `agentURI`.\r\n\r\n**Query**: Read-only; number of 8004 NFTs held by an address.\r\n\r\n```bash\r\nfourmeme 8004-balance <ownerAddress>\r\n```\r\n\r\n- Output JSON: `owner`, `balance`.\r\n\r\nExamples:\r\n```bash\r\nfourmeme 8004-register \"myagent\" \"https://example.com/logo.png\" \"My agent description\"\r\nfourmeme 8004-balance 0x1234567890123456789012345678901234567890\r\n```\r\n\r\n### events (TokenManager2 V2 only)\r\n\r\nFetch TokenCreate, TokenPurchase, TokenSale, LiquidityAdded on BSC.\r\n\r\n```bash\r\nfourmeme events <fromBlock> [toBlock]\r\n```\r\nOmit toBlock for latest. Real-time subscription: [references/event-listening.md](references/event-listening.md).\r\n\r\n### tax-info (TaxToken fee/tax)\r\n\r\nOnly for TaxToken (creatorType 5).\r\n\r\n```bash\r\nfourmeme tax-info <tokenAddress>\r\n```\r\nSee [references/tax-token-query.md](references/tax-token-query.md).\r\n\r\n## API and config reference\r\n\r\n- **Token detail (REST)**: `GET /private/token/get?address=<token>`, `GET /private/token/getById?id=<requestId>` (requestId from TokenCreate event). Response may include `data.aiCreator` (token created by Agent). List/rankings: [references/token-query-api.md](references/token-query-api.md).\r\n- **Agent Creator / Agent wallets**: On-chain — token template bit 85 for “created by agent”; AgentIdentifier contract (`isAgent(wallet)`) on BSC to identify agent wallets. See [references/agent-creator-and-wallets.md](references/agent-creator-and-wallets.md) and [references/contract-addresses.md](references/contract-addresses.md).\r\n- **raisedToken**: `GET https://four.meme/meme-api/v1/public/config` for current raisedToken; use as-is in create body; do not modify its fields.\r\n\r\n## References\r\n\r\n| Document | Description |\r\n|----------|-------------|\r\n| [contract-addresses.md](references/contract-addresses.md) | TokenManager / TokenManager2 / Helper3 addresses (BSC) |\r\n| [api-create-token.md](references/api-create-token.md) | Create token API (nonce / login / upload / create) |\r\n| [create-token-scripts.md](references/create-token-scripts.md) | Create token script flow and examples |\r\n| [token-tax-info.md](references/token-tax-info.md) | Tax token tokenTaxInfo parameters and constraints |\r\n| [token-query-api.md](references/token-query-api.md) | Token list / detail / rankings REST API |\r\n| [errors.md](references/errors.md) | buy/sell error codes; X Mode / TaxToken / AntiSniperFeeMode; Agent Creator |\r\n| [agent-creator-and-wallets.md](references/agent-creator-and-wallets.md) | Token created by Agent Creator; AgentIdentifier contract and Agent wallets |\r\n| [execute-trade.md](references/execute-trade.md) | Execute buy/sell CLI and contract usage |\r\n| [event-listening.md](references/event-listening.md) | TokenManager2 event listening (V2) |\r\n| [tax-token-query.md](references/tax-token-query.md) | TaxToken on-chain fee/tax query (tax-info) |\r\n| **Official four.meme API and contracts (online)**: [Protocol Integration](https://four-meme.gitbook.io/four.meme/brand/protocol-integration) | API documents, ABIs: TokenManager, TokenManager2, Helper3, TaxToken, AgentIdentifier, etc. |\n\nFile v1.0.2:skills/grok-twitter-search/SKILL.md\n\n---\r\nname: grok-twitter-search\r\ndescription: 使用 xAI Grok 模型的 x_search 工具智能搜索 Twitter 内容。首创 Fast/Reasoning 双引擎动态路由，支持 SOCKS5 代理（WARP）精准流量分流。相比官方 X API 成本呈断崖式下降（实测约 $2.8/千次），语义理解更强、结果更智能。当用户需要搜索推特、监控舆情、分析热点话题、获取实时推文数据时使用此技能。\r\nmetadata:\r\n  {\r\n    \"openclaw\":\r\n      {\r\n        \"emoji\": \"🐦\",\r\n        \"homepage\": \"https://github.com/your-repo/grok-twitter-search\",\r\n        \"requires\": { \"bins\": [\"uv\", \"curl\"], \"env\": [\"GROK_API_KEY\"] },\r\n        \"primaryEnv\": \"GROK_API_KEY\",\r\n      },\r\n  }\r\n---\r\n\r\n# Grok Twitter Search Skill\r\n\r\n基于 xAI `grok-4-1-fast` 与 `grok-4-1-fast-reasoning` 双擎驱动的推特原生数据检索引擎。\r\n\r\n## 核心优势\r\n\r\n| 特性 | Grok x_search (本技能) | X 官方 API (Basic) |\r\n|------|------------------------|-------------------|\r\n| **计费方式** | **按 Token 计费 (实测约 $2.8/千次)** | $100 / 月固定月租 |\r\n| **检索逻辑** | ✅ 智能自然语言语义提取，自带 LLM 降噪 | ❌ 仅支持严格的布尔逻辑匹配 |\r\n| **模型支持** | ✅ 使用 `grok-4-1-fast-reasoning`（唯一支持 x_search 工具的模型） | ❌ 单一数据返回 |\r\n| **中文支持** | ✅ 深度优化，理解上下文隐喻 | ⚠️ 效果一般 |\r\n\r\n## 快速开始\r\n\r\n### 方式 1: 交互式配置（推荐首次使用）\r\n\r\n```bash\r\nuv run {baseDir}/scripts/setup_interactive.py\r\n```\r\n\r\n这个向导会引导你完成：\r\n- ✅ 检查系统依赖 (uv, curl)\r\n- ✅ 检测 WARP 代理状态\r\n- ✅ 配置 Grok API Key\r\n- ✅ 选择代理模式\r\n- ✅ 测试连接\r\n- ✅ 自动保存配置到 openclaw.json\r\n\r\n### 方式 2: 手动配置\r\n\r\n如果你更喜欢手动配置，可以继续阅读下面的详细说明。\r\n\r\n## 使用方法\r\n\r\n建议使用 `uv` 运行以保证依赖隔离与环境纯净：\r\n\r\n### 极速检索模式（默认，超低成本）\r\n```bash\r\nuv run {baseDir}/scripts/search_twitter.py --query \"{搜索内容}\" --max-results 10\r\n```\r\n\r\n### 深度舆情分析模式（调用 Reasoning 模型）\r\n```bash\r\nuv run {baseDir}/scripts/search_twitter.py --query \"{搜索内容}\" --max-results 10 --analyze\r\n```\r\n\r\n### 参数说明\r\n\r\n| 参数 | 类型 | 必填 | 默认值 | 说明 |\r\n|------|------|------|--------|------|\r\n| `--query` | string | 是 | - | 搜索查询（支持自然语言） |\r\n| `--max-results` | int | 否 | 10 | 最大返回结果数 |\r\n| `--analyze` | flag | 否 | False | 启用 Reasoning 推理模型进行深度舆情总结 |\r\n| `--api-key` | string | 否 | 读环境变量 | 优先读取 `GROK_API_KEY` |\r\n| `--proxy` | string | 否 | auto-detect | SOCKS5 代理地址（自动检测 WARP） |\r\n\r\n## 代理配置（WARP 智能检测）\r\n\r\n本技能支持三种代理配置方式，优先级从高到低：\r\n\r\n### 1. 显式配置（最高优先级）\r\n在 `~/.openclaw/openclaw.json` 中设置：\r\n```json5\r\n{\r\n  skills: {\r\n    entries: {\r\n      \"grok-twitter-search\": {\r\n        enabled: true,\r\n        env: {\r\n          SOCKS5_PROXY: \"socks5://127.0.0.1:40000\",\r\n          GROK_API_KEY: \"your_api_key_here\"\r\n        }\r\n      }\r\n    }\r\n  }\r\n}\r\n```\r\n\r\n### 2. 环境变量\r\n```bash\r\nexport SOCKS5_PROXY=\"socks5://127.0.0.1:40000\"\r\nexport GROK_API_KEY=\"your_api_key_here\"\r\n```\r\n\r\n### 3. 自动检测（默认行为）\r\n脚本会自动检测 WARP 代理：\r\n- 检查 `warp-svc` 进程是否在运行\r\n- 检查端口 40000 是否在监听\r\n- 如果检测到 WARP，自动使用 `socks5://127.0.0.1:40000`\r\n- 如果未检测到代理但直连可用，则直连访问\r\n\r\n### 检查 WARP 状态\r\n```bash\r\nbash {baseDir}/scripts/check_warp.sh\r\n```\r\n\r\n## 输出格式 (纯净提取)\r\n\r\n引擎剥离了冗余的 LLM 文本，直接返回原生 Tool Call 拦截数据：\r\n\r\n```json\r\n{\r\n  \"status\": \"success\",\r\n  \"query\": \"elon musk\",\r\n  \"tweets\": [\r\n    {\r\n      \"author\": \"@elonmusk\",\r\n      \"content\": \"推文内容...\",\r\n      \"timestamp\": \"2026-02-26T10:00:00Z\",\r\n      \"likes\": 1234,\r\n      \"retweets\": 567,\r\n      \"url\": \"https://x.com/elonmusk/status/123...\"\r\n    }\r\n  ],\r\n  \"model_used\": \"grok-4-1-fast-reasoning\",\r\n  \"x_search_calls\": 1,\r\n  \"usage\": {\r\n    \"input_tokens\": 1250,\r\n    \"output_tokens\": 45,\r\n    \"total_tokens\": 1295\r\n  }\r\n}\r\n```\r\n\r\n## 真实成本估算 (实测数据)\r\n\r\n*基于实测数据：200 次调用耗费 $0.56，即约 $2.8/千次*\r\n\r\n| 运行模式 | 引擎模型 | 预估单次消耗 | 千次调用成本 | 适用场景 |\r\n|----------|----------|--------------|--------------|----------|\r\n| **标准检索** | `grok-4-1-fast-reasoning` | ~5,000 Tokens | **~$2.8** | 日常搜索、舆情监控、推文分析 |\r\n\r\n## 与 opentwitter 的分工\r\n\r\n本技能与 `opentwitter` (6551 API) 都是推特搜索方案，但定位不同：\r\n\r\n| 场景 | 推荐技能 | 原因 |\r\n|------|---------|------|\r\n| **自然语言搜索**<br>例：\"币圈大佬最近动态\"、\"马斯克对 crypto 的看法\" | ✅ grok-twitter-search | Grok 理解语义，能处理模糊查询 |\r\n| **精确用户搜索**<br>例：\"from:cz_binance\"、\"获取 @elonmusk 最近 20 条推文\" | ✅ opentwitter | 结构化参数，结果稳定 |\r\n| **舆情分析/观点总结**<br>例：\"分析 CZ 对马斯克收购推特的态度\" | ✅ grok-twitter-search | LLM 自带分析能力 |\r\n| **批量数据获取**<br>例：获取用户 follower 列表、删除的推文 | ✅ opentwitter | 专用 API，数据结构完整 |\r\n| **话题/标签搜索**<br>例：\"#bitcoin 热门推文\"、\"含 hashtag 的推文\" | ✅ opentwitter | 支持 hashtag 参数过滤 |\r\n| **日期范围搜索**<br>例：\"2025 年 1 月以来的推文\" | ✅ opentwitter | 支持 sinceDate/untilDate |\r\n\r\n**经验法则：**\r\n- 用户用**自然语言**提问 → grok-twitter-search\r\n- 用户用**推特搜索语法**（from:, to:, #hashtag）→ opentwitter\r\n\r\n---\r\n\r\n## 故障排查\r\n\r\n### 检查环境配置\r\n```bash\r\nbash {baseDir}/scripts/check_warp.sh\r\n```\r\n\r\n### 常见问题\r\n\r\n**Q: 提示 \"缺少 API Key\"**\r\n- 确保已设置 `GROK_API_KEY` 环境变量或在 `openclaw.json` 中配置\r\n\r\n**Q: 连接超时或无法访问 api.x.ai**\r\n- 检查 WARP 是否运行：`sudo systemctl status warp-svc`\r\n- 手动测试代理：`curl --socks5 127.0.0.1:40000 https://api.x.ai/v1`\r\n- 如在中国大陆，必须使用 WARP 或其他出海代理\r\n\r\n**Q: 返回空结果**\r\n- 检查查询词是否过于具体或敏感\r\n- 尝试简化查询或使用英文关键词\r\n- 如果查询包含推特语法（如 `from:username`），改用 opentwitter\n\nFile v1.0.2:skills/qmd-memory/SKILL.md\n\n---\nname: qmd-memory\ndescription: |\n  QMD 本地记忆向量检索系统 - 使用 BM25 全文检索替代全量上下文注入，大幅减少 token 消耗。\n  支持记忆索引构建、检索、添加功能。\nallowed-tools:\n  - Bash(qmd-*)\n  - Bash(node qmd-*)\nlicense: MIT\nmetadata:\n  {\"author\":\"OpenClaw\",\"version\":\"1.0.0\"}\n---\n\n## QMD Memory Skill\n\n### 概述\n\nQMD (Quick Memory Database) 是一个**纯本地**的记忆检索系统，使用 BM25 全文检索算法，无需下载向量模型，无需外部 API。\n\n**优势：**\n- 🚀 速度快 - 毫秒级检索\n- 💾 纯本地 - 无需网络、无需 API\n- 📉 省 token - 只注入相关记忆 (top-k)，而非全量\n- 🔒 隐私安全 - 所有数据在本地\n\n### 命令\n\n| 命令 | 说明 | 示例 |\n|------|------|------|\n| `qmd-index` | 构建/重建记忆索引 | `cd ~/workspace/qmd && node qmd-index.js` |\n| `qmd-search <查询> [limit]` | 检索记忆 | `node qmd-search.js \"代币创建\" 5` |\n| `qmd-add <内容>` | 添加记忆并重建索引 | `node qmd-add.js \"用户喜欢喝咖啡\"` |\n\n### 工作流程\n\n```\n用户提问\n    ↓\nmemory_search (调用 qmd-search)\n    ↓\nBM25 检索 top-k 相关记忆\n    ↓\n只注入相关片段到上下文 (而非全部 MEMORY.md)\n    ↓\nLLM 回答\n```\n\n### 集成到 OpenClaw\n\n在 OpenClaw 的 `memory_search` 工具中，可以调用此 skill 进行检索：\n\n```bash\ncd /Users/ben/.openclaw/workspace/qmd && node qmd-search.js \"<查询文本>\" 5\n```\n\n返回 JSON 格式结果，解析后注入上下文。\n\n### 文件结构\n\n```\n/Users/ben/.openclaw/workspace/\n├── MEMORY.md              # 长期记忆 ( curated )\n├── memory/\n│   └── YYYY-MM-DD.md      # 每日记忆 ( raw logs )\n├── qmd/\n│   ├── qmd-index.js       # 索引构建脚本\n│   ├── qmd-search.js      # 检索脚本\n│   ├── qmd-add.js         # 添加记忆脚本\n│   └── package.json\n└── qmd-index/\n    └── bm25-index.json    # BM25 索引文件\n```\n\n### 性能对比\n\n| 方案 | Token 消耗 | 响应速度 | 网络依赖 |\n|------|-----------|---------|---------|\n| 原方案 (全量注入) | 100% | 快 | 无 |\n| QMD (top-5 检索) | ~20% | 快 | 无 |\n\n**节省约 80% token 消耗！**\n\n### 使用示例\n\n**1. 构建索引**\n```bash\ncd /Users/ben/.openclaw/workspace/qmd\nnode qmd-index.js\n```\n\n**2. 检索记忆**\n```bash\nnode qmd-search.js \"用户偏好\" 3\n```\n\n**3. 添加新记忆**\n```bash\nnode qmd-add.js \"用户说下周要去上海出差\"\n```\n\n### 注意事项\n\n- 索引文件 `bm25-index.json` 是纯文本 JSON，可版本控制\n- 每次添加记忆后会自动重建索引\n- 支持中文和英文混合检索\n- 建议定期清理过期的每日记忆文件\n\nFile v1.0.2:opennews-mcp/README.md\n\n<p align=\"center\">\n  <b>OpenNews MCP Server</b><br>\n  Crypto News Aggregation · AI Ratings · Trading Signals · Real-time Updates\n</p>\n\n<p align=\"center\">\n  <a href=\"./README.md\">English</a> | <a href=\"./docs/README_ZH.md\">中文</a> | <a href=\"./docs/README_JA.md\">日本語</a> | <a href=\"./docs/README_KO.md\">한국어</a>\n</p>\n\n---\n\n## Quick Install\n\n> **First, get your API Token at [https://6551.io/mcp](https://6551.io/mcp).**\n\n### Claude Code\n\n```bash\nclaude mcp add opennews \\\n  -e OPENNEWS_TOKEN=<your-token> \\\n  -- uv --directory /path/to/opennews-mcp run opennews-mcp\n```\n\n> Replace `/path/to/opennews-mcp` with your local project path, and `<your-token>` with your API token.\n\n### OpenClaw\n\n```bash\nexport OPENNEWS_TOKEN=\"<your-token>\"\ncp -r openclaw-skill/opennews ~/.openclaw/skills/\n```\n\n---\n\n## Let AI Review and Install\n\nNot sure if this MCP is safe? Send the following prompt to your AI assistant to review the source code before installing:\n\n> **Copy the prompt below and paste it to your AI assistant (replace `<project-path>` and `<your-token>` with actual values):**\n\n```text\nPlease help me review and install the opennews-mcp MCP server. The project is at <project-path>.\n\nSteps:\n1. Review the security of the following files:\n   - src/opennews_mcp/api_client.py — Confirm it only connects to ai.6551.io, no data sent elsewhere\n   - src/opennews_mcp/config.py — Confirm token is only read from local config.json or env vars, not hardcoded or leaked\n   - src/opennews_mcp/tools/*.py — Confirm all tools only do API queries, no file writes, command execution, or dangerous operations\n   - pyproject.toml — Confirm dependencies are only mcp, httpx, websockets, no suspicious packages\n2. Tell me your conclusion: Safe / Risky / Problematic, and the specific reasons\n3. If safe, help me install (Token from https://6551.io/mcp):\n   claude mcp add opennews -e OPENNEWS_TOKEN=<your-token> -- uv --directory <project-path> run opennews-mcp\n```\n\n---\n\n## What Can It Do?\n\nAfter connecting, just tell your AI assistant:\n\n| You Say | It Does |\n|---------|---------|\n| \"Latest crypto news\" | Get latest articles |\n| \"Search SEC regulation news\" | Full-text keyword search |\n| \"BTC related news\" | Filter by coin |\n| \"Bloomberg articles\" | Filter by source |\n| \"On-chain events\" | Filter by engine type (onchain) |\n| \"Important news with AI score above 80\" | High score filtering |\n| \"Bullish signals\" | Filter by trading signal (long) |\n| \"Subscribe to real-time news\" | WebSocket live updates |\n\n---\n\n## Available Tools\n\n| Category | Tool | Description |\n|----------|------|-------------|\n| Discovery | `get_news_sources` | Get all news source category tree |\n| | `list_news_types` | All available news source codes |\n| Search | `get_latest_news` | Latest articles |\n| | `search_news` | Keyword search |\n| | `search_news_by_coin` | By coin (BTC, ETH, SOL...) |\n| | `get_news_by_source` | By engine type and source |\n| | `get_news_by_engine` | By type (news, listing, onchain, meme, market) |\n| | `search_news_advanced` | Advanced search (multiple filters) |\n| AI | `get_high_score_news` | Articles with score >= threshold |\n| | `get_news_by_signal` | By signal: long / short / neutral |\n| Real-time | `subscribe_latest_news` | WebSocket real-time collection |\n\n---\n\n## Configuration\n\n### Get API Token\n\nGet your API Token at [https://6551.io/mcp](https://6551.io/mcp).\n\nSet environment variable:\n\n```bash\n# macOS / Linux\nexport OPENNEWS_TOKEN=\"<your-token>\"\n\n# Windows PowerShell\n$env:OPENNEWS_TOKEN = \"<your-token>\"\n```\n\n| Variable | Required | Description |\n|----------|----------|-------------|\n| `OPENNEWS_TOKEN` | **Yes** | 6551 API Bearer Token (from https://6551.io/mcp) |\n| `OPENNEWS_API_BASE` | No | Override REST API URL |\n| `OPENNEWS_WSS_URL` | No | Override WebSocket URL |\n| `OPENNEWS_MAX_ROWS` | No | Max results per request (default 100) |\n\nAlso supports `config.json` in project root (env vars take precedence):\n\n```json\n{\n  \"api_base_url\": \"https://ai.6551.io\",\n  \"wss_url\": \"wss://ai.6551.io/open/news_wss\",\n  \"api_token\": \"<your-token>\",\n  \"max_rows\": 100\n}\n```\n\n---\n\n## Data Structure\n\nEach article returns:\n\n```json\n{\n  \"id\": \"unique-article-id\",\n  \"text\": \"Title / Content\",\n  \"newsType\": \"Bloomberg\",\n  \"engineType\": \"news\",\n  \"link\": \"https://...\",\n  \"coins\": [{ \"symbol\": \"BTC\", \"market_type\": \"spot\", \"match\": \"title\" }],\n  \"aiRating\": {\n    \"score\": 85,\n    \"grade\": \"A\",\n    \"signal\": \"long\",\n    \"status\": \"done\",\n    \"summary\": \"Chinese summary\",\n    \"enSummary\": \"English summary\"\n  },\n  \"ts\": 1708473600000\n}\n```\n\n| AI Field | Description |\n|----------|-------------|\n| `score` | 0-100 impact score |\n| `signal` | `long` (bullish) / `short` (bearish) / `neutral` |\n| `status` | `done` = AI analysis completed |\n\n---\n\n<details>\n<summary><b>Manual Installation for Other Clients</b> (click to expand)</summary>\n\n> In all configurations below, replace `/path/to/opennews-mcp` with your actual local project path, and `<your-token>` with your token from [https://6551.io/mcp](https://6551.io/mcp).\n\n### Claude Desktop\n\nEdit config file (macOS: `~/Library/Application Support/Claude/claude_desktop_config.json`, Windows: `%APPDATA%\\Claude\\claude_desktop_config.json`):\n\n```json\n{\n  \"mcpServers\": {\n    \"opennews\": {\n      \"command\": \"uv\",\n      \"args\": [\"--directory\", \"/path/to/opennews-mcp\", \"run\", \"opennews-mcp\"],\n      \"env\": {\n        \"OPENNEWS_TOKEN\": \"<your-token>\"\n      }\n    }\n  }\n}\n```\n\n### Cursor\n\n`~/.cursor/mcp.json` or Settings > MCP Servers:\n\n```json\n{\n  \"mcpServers\": {\n    \"opennews\": {\n      \"command\": \"uv\",\n      \"args\": [\"--directory\", \"/path/to/opennews-mcp\", \"run\", \"opennews-mcp\"],\n      \"env\": {\n        \"OPENNEWS_TOKEN\": \"<your-token>\"\n      }\n    }\n  }\n}\n```\n\n### Windsurf\n\n`~/.codeium/windsurf/mcp_config.json`:\n\n```json\n{\n  \"mcpServers\": {\n    \"opennews\": {\n      \"command\": \"uv\",\n      \"args\": [\"--directory\", \"/path/to/opennews-mcp\", \"run\", \"opennews-mcp\"],\n      \"env\": {\n        \"OPENNEWS_TOKEN\": \"<your-token>\"\n      }\n    }\n  }\n}\n```\n\n### Cline\n\nVS Code sidebar > Cline > MCP Servers > Configure, edit `cline_mcp_settings.json`:\n\n```json\n{\n  \"mcpServers\": {\n    \"opennews\": {\n      \"command\": \"uv\",\n      \"args\": [\"--directory\", \"/path/to/opennews-mcp\", \"run\", \"opennews-mcp\"],\n      \"env\": {\n        \"OPENNEWS_TOKEN\": \"<your-token>\"\n      },\n      \"disabled\": false,\n      \"autoApprove\": []\n    }\n  }\n}\n```\n\n### Continue.dev\n\n`~/.continue/config.yaml`:\n\n```yaml\nmcpServers:\n  - name: opennews\n    command: uv\n    args:\n      - --directory\n      - /path/to/opennews-mcp\n      - run\n      - opennews-mcp\n    env:\n      OPENNEWS_TOKEN: <your-token>\n```\n\n### Cherry Studio\n\nSettings > MCP Servers > Add > Type stdio: Command `uv`, Args `--directory /path/to/opennews-mcp run opennews-mcp`, Env `OPENNEWS_TOKEN`.\n\n### Zed Editor\n\n`~/.config/zed/settings.json`:\n\n```json\n{\n  \"context_servers\": {\n    \"opennews\": {\n      \"command\": {\n        \"path\": \"uv\",\n        \"args\": [\"--directory\", \"/path/to/opennews-mcp\", \"run\", \"opennews-mcp\"],\n        \"env\": {\n          \"OPENNEWS_TOKEN\": \"<your-token>\"\n        }\n      }\n    }\n  }\n}\n```\n\n### Any stdio MCP Client\n\n```bash\nOPENNEWS_TOKEN=<your-token> \\\n  uv --directory /path/to/opennews-mcp run opennews-mcp\n```\n\n</details>\n\n---\n\n## Compatibility\n\n| Client | Installation | Status |\n|--------|--------------|--------|\n| **Claude Code** | `claude mcp add` | One-click |\n| **OpenClaw** | Copy Skill directory | One-click |\n| Claude Desktop | JSON config | Supported |\n| Cursor | JSON config | Supported |\n| Windsurf | JSON config | Supported |\n| Cline | JSON config | Supported |\n| Continue.dev | YAML / JSON | Supported |\n| Cherry Studio | GUI | Supported |\n| Zed | JSON config | Supported |\n\n---\n\n## Related Projects\n\n- [twitter-mcp](https://github.com/6551-io/twitter-mcp) - Twitter/X data MCP server\n\n---\n\n## Development\n\n```bash\ncd /path/to/opennews-mcp\nuv sync\nuv run opennews-mcp\n```\n\n```bash\n# MCP Inspector test\nnpx @modelcontextprotocol/inspector uv --directory /path/to/opennews-mcp run opennews-mcp\n```\n\n### Project Structure\n\n```\n├── README.md\n├── openclaw-skill/opennews/   # OpenClaw Skill\n├── knowledge/guide.md         # Embedded knowledge\n├── pyproject.toml\n├── config.json\n└── src/opennews_mcp/\n    ├── server.py              # Entry point\n    ├── app.py                 # FastMCP instance\n    ├── config.py              # Config loading\n    ├── api_client.py          # HTTP + WebSocket\n    └── tools/                 # Tools\n```\n\n## License\n\nMIT\n\nFile v1.0.2:opentwitter-mcp/README.md\n\n<p align=\"center\">\n  <b>Twitter MCP Server</b><br>\n  Twitter/X Data · User Profiles · Tweet Search · Follower Events · KOL Tracking\n</p>\n\n<p align=\"center\">\n  <a href=\"./docs/README_ZH.md\">中文</a> | <a href=\"./docs/README_JA.md\">日本語</a> | <a href=\"./docs/README_KO.md\">한국어</a>\n</p>\n\n---\n\n## Quick Install\n\n> **First, go to [https://6551.io/mcp](https://6551.io/mcp) to get your API Token.**\n\n### Claude Code\n\n```bash\nclaude mcp add twitter \\\n  -e TWITTER_TOKEN=<your-token> \\\n  -- uv --directory /path/to/twitter-mcp run twitter-mcp\n```\n\n> Replace `/path/to/twitter-mcp` with your local project path, and `<your-token>` with your Token.\n\n### OpenClaw\n\n```bash\nexport TWITTER_TOKEN=\"<your-token>\"\ncp -r openclaw-skill/opentwitter ~/.openclaw/skills/\n```\n\n---\n\n## Let AI Review & Install For You\n\nNot sure if this MCP is safe? Paste the prompt below to your AI assistant — it will review the source code first, then install if safe:\n\n> **Copy this prompt and send it to your AI assistant (replace `<project-path>` and `<your-token>` with actual values):**\n\n```text\nPlease review and install the twitter-mcp MCP server for me. The project is at <project-path>.\n\nSteps:\n1. Review these files for security:\n   - src/twitter_mcp/api_client.py — Confirm it only connects to ai.6551.io, no data sent elsewhere\n   - src/twitter_mcp/config.py — Confirm token is only read from local config.json or env vars, no hardcoded secrets or leaks\n   - src/twitter_mcp/tools.py — Confirm all tools only perform API queries, no file writes, command execution, or dangerous operations\n   - pyproject.toml — Confirm dependencies are only mcp, httpx, no suspicious packages\n2. Tell me your conclusion: safe / risky / problematic, with specific reasons\n3. If safe, run the install (get Token from https://6551.io/mcp):\n   claude mcp add twitter -e TWITTER_TOKEN=<your-token> -- uv --directory <project-path> run twitter-mcp\n```\n\n---\n\n## What Can It Do?\n\nOnce connected, just ask your AI assistant:\n\n| You say | It does |\n|---------|---------|\n| \"Show @elonmusk's Twitter profile\" | Get user profile info |\n| \"What did @VitalikButerin tweet recently\" | Get user's recent tweets |\n| \"Search Bitcoin related tweets\" | Keyword search |\n| \"Find tweets with #crypto hashtag\" | Hashtag search |\n| \"Popular tweets about ETH with 1000+ likes\" | Search with engagement filters |\n| \"Who followed @elonmusk recently\" | Get new follower events |\n| \"Who unfollowed @elonmusk\" | Get unfollower events |\n| \"What tweets did @elonmusk delete\" | Get deleted tweets |\n| \"Which KOLs follow @elonmusk\" | Get KOL followers |\n\n---\n\n## Available Tools\n\n| Tool | Description |\n|------|-------------|\n| `get_twitter_user` | Get user profile by username |\n| `get_twitter_user_by_id` | Get user profile by numeric ID |\n| `get_twitter_user_tweets` | Get recent tweets from a user |\n| `search_twitter` | Search tweets with basic filters |\n| `search_twitter_advanced` | Advanced search with multiple filters |\n| `get_twitter_follower_events` | Get follower/unfollower events |\n| `get_twitter_deleted_tweets` | Get deleted tweets from a user |\n| `get_twitter_kol_followers` | Get KOL (Key Opinion Leader) followers |\n\n---\n\n## Configuration\n\n### Get API Token\n\nGo to [https://6551.io/mcp](https://6551.io/mcp) to get your API Token.\n\nSet the environment variable:\n\n```bash\n# macOS / Linux\nexport TWITTER_TOKEN=\"<your-token>\"\n\n# Windows PowerShell\n$env:TWITTER_TOKEN = \"<your-token>\"\n```\n\n| Variable | Required | Description |\n|----------|----------|-------------|\n| `TWITTER_TOKEN` | **Yes** | 6551 API Bearer Token (get from https://6551.io/mcp) |\n| `TWITTER_API_BASE` | No | Override REST API URL |\n| `TWITTER_MAX_ROWS` | No | Max results per query (default: 100) |\n\nAlso supports `config.json` in the project root (env vars take precedence):\n\n```json\n{\n  \"api_base_url\": \"https://ai.6551.io\",\n  \"api_token\": \"<your-token>\",\n  \"max_rows\": 100\n}\n```\n\n---\n\n## Data Structures\n\n### Twitter User\n\n```json\n{\n  \"userId\": \"44196397\",\n  \"screenName\": \"elonmusk\",\n  \"name\": \"Elon Musk\",\n  \"description\": \"...\",\n  \"followersCount\": 170000000,\n  \"friendsCount\": 500,\n  \"statusesCount\": 30000,\n  \"verified\": true\n}\n```\n\n### Tweet\n\n```json\n{\n  \"id\": \"1234567890\",\n  \"text\": \"Tweet content...\",\n  \"createdAt\": \"2024-02-20T12:00:00Z\",\n  \"retweetCount\": 1000,\n  \"favoriteCount\": 5000,\n  \"replyCount\": 200,\n  \"userScreenName\": \"elonmusk\",\n  \"hashtags\": [\"crypto\", \"bitcoin\"],\n  \"urls\": [{\"url\": \"https://...\"}]\n}\n```\n\n---\n\n<details>\n<summary><b>Other Clients — Manual Install</b> (click to expand)</summary>\n\n> In all configs below, replace `/path/to/twitter-mcp` with your actual local project path, and `<your-token>` with your Token from [https://6551.io/mcp](https://6551.io/mcp).\n\n### Claude Desktop\n\nEdit config (macOS: `~/Library/Application Support/Claude/claude_desktop_config.json`, Windows: `%APPDATA%\\Claude\\claude_desktop_config.json`):\n\n```json\n{\n  \"mcpServers\": {\n    \"twitter\": {\n      \"command\": \"uv\",\n      \"args\": [\"--directory\", \"/path/to/twitter-mcp\", \"run\", \"twitter-mcp\"],\n      \"env\": {\n        \"TWITTER_TOKEN\": \"<your-token>\"\n      }\n    }\n  }\n}\n```\n\n### Cursor\n\n`~/.cursor/mcp.json` or Settings > MCP Servers:\n\n```json\n{\n  \"mcpServers\": {\n    \"twitter\": {\n      \"command\": \"uv\",\n      \"args\": [\"--directory\", \"/path/to/twitter-mcp\", \"run\", \"twitter-mcp\"],\n      \"env\": {\n        \"TWITTER_TOKEN\": \"<your-token>\"\n      }\n    }\n  }\n}\n```\n\n### Windsurf\n\n`~/.codeium/windsurf/mcp_config.json`:\n\n```json\n{\n  \"mcpServers\": {\n    \"twitter\": {\n      \"command\": \"uv\",\n      \"args\": [\"--directory\", \"/path/to/twitter-mcp\", \"run\", \"twitter-mcp\"],\n      \"env\": {\n        \"TWITTER_TOKEN\": \"<your-token>\"\n      }\n    }\n  }\n}\n```\n\n### Cline\n\nVS Code sidebar > Cline > MCP Servers > Configure, edit `cline_mcp_settings.json`:\n\n```json\n{\n  \"mcpServers\": {\n    \"twitter\": {\n      \"command\": \"uv\",\n      \"args\": [\"--directory\", \"/path/to/twitter-mcp\", \"run\", \"twitter-mcp\"],\n      \"env\": {\n        \"TWITTER_TOKEN\": \"<your-token>\"\n      },\n      \"disabled\": false,\n      \"autoApprove\": []\n    }\n  }\n}\n```\n\n### Continue.dev\n\n`~/.continue/config.yaml`:\n\n```yaml\nmcpServers:\n  - name: twitter\n    command: uv\n    args:\n      - --directory\n      - /path/to/twitter-mcp\n      - run\n      - twitter-mcp\n    env:\n      TWITTER_TOKEN: <your-token>\n```\n\n### Cherry Studio\n\nSettings > MCP Servers > Add > Type stdio: Command `uv`, Args `--directory /path/to/twitter-mcp run twitter-mcp`, Env `TWITTER_TOKEN`.\n\n### Zed Editor\n\n`~/.config/zed/settings.json`:\n\n```json\n{\n  \"context_servers\": {\n    \"twitter\": {\n      \"command\": {\n        \"path\": \"uv\",\n        \"args\": [\"--directory\", \"/path/to/twitter-mcp\", \"run\", \"twitter-mcp\"],\n        \"env\": {\n          \"TWITTER_TOKEN\": \"<your-token>\"\n        }\n      }\n    }\n  }\n}\n```\n\n### Any stdio MCP client\n\n```bash\nTWITTER_TOKEN=<your-token> \\\n  uv --directory /path/to/twitter-mcp run twitter-mcp\n```\n\n</details>\n\n---\n\n## Compatibility\n\n| Client | Install Method | Status |\n|--------|---------------|--------|\n| **Claude Code** | `claude mcp add` | One-liner |\n| **OpenClaw** | Copy skill directory | One-liner |\n| Claude Desktop | JSON config | Supported |\n| Cursor | JSON config | Supported |\n| Windsurf | JSON config | Supported |\n| Cline | JSON config | Supported |\n| Continue.dev | YAML / JSON | Supported |\n| Cherry Studio | GUI | Supported |\n| Zed | JSON config | Supported |\n\n---\n\n## Related Projects\n\n- [opennews-mcp](https://github.com/6551-io/opennews-mcp) - Crypto news MCP server with AI ratings\n\n---\n\n## Development\n\n```bash\ncd /path/to/twitter-mcp\nuv sync\nuv run twitter-mcp\n```\n\n```bash\n# MCP Inspector\nnpx @modelcontextprotocol/inspector uv --directory /path/to/twitter-mcp run twitter-mcp\n```\n\n### Project Structure\n\n```\n├── README.md\n├── docs/\n│   ├── README_JA.md           # 日本語\n│   └── README_KO.md           # 한국어\n├── openclaw-skill/opentwitter/    # OpenClaw Skill\n├── pyproject.toml\n├── config.json\n└── src/twitter_mcp/\n    ├── server.py              # Entry point\n    ├── app.py                 # FastMCP instance\n    ├── config.py              # Config loader\n    ├── api_client.py          # HTTP client\n    └── tools.py               # 8 tools\n```\n\n## License\n\nMIT\n\nFile v1.0.2:qmd/README.md\n\n# QMD - 本地记忆向量检索系统\n\n🚀 **纯本地、无需 API、省 token 80%+**\n\n## 快速开始\n\n### 1. 安装依赖\n\n```bash\ncd /Users/ben/.openclaw/workspace/qmd\nnpm install\n```\n\n### 2. 构建索引\n\n```bash\nnode qmd-index.js\n```\n\n### 3. 检索记忆\n\n```bash\n# 基本检索\nnode qmd-search.js \"查询文本\" 5\n\n# 或使用封装脚本（兼容 OpenClaw 格式）\nnode memory-search-wrapper.js \"查询文本\" 5\n```\n\n### 4. 添加记忆\n\n```bash\nnode qmd-add.js \"要记住的内容\"\n```\n\n## 集成到 OpenClaw\n\n### 方案 A：直接调用脚本\n\n在 OpenClaw 的 `memory_search` 工具中调用：\n\n```bash\ncd /Users/ben/.openclaw/workspace/qmd && node memory-search-wrapper.js \"<查询>\" 5\n```\n\n### 方案 B：使用 skill\n\n启用 `qmd-memory` skill：\n\n```bash\nopenclaw skills enable qmd-memory\n```\n\n## 性能对比\n\n| 指标 | 原方案 | QMD 方案 | 改善 |\n|------|--------|---------|------|\n| Token 消耗 | 100% | ~20% | **省 80%** |\n| 检索速度 | ~50ms | ~10ms | **快 5 倍** |\n| 网络依赖 | 无 | 无 | - |\n| 隐私 | 本地 | 本地 | - |\n\n## 文件结构\n\n```\nqmd/\n├── qmd-index.js          # 索引构建 (BM25)\n├── qmd-search.js         # 检索脚本\n├── qmd-add.js            # 添加记忆\n├── memory-search-wrapper.js  # OpenClaw 集成\n├── package.json\n└── README.md\n\nqmd-index/\n└── bm25-index.json       # 生成的索引文件\n```\n\n## 算法说明\n\n使用 **BM25 (Best Matching 25)** 全文检索算法：\n- 工业级检索算法，Lucene/Elasticsearch 默认算法\n- 无需训练、无需向量模型\n- 支持中英文混合\n- 对短文本检索效果优秀\n\n## 高级用法\n\n### 调整检索参数\n\n```bash\n# 返回更多结果\nnode qmd-search.js \"查询\" 10\n\n# 设置最小分数阈值\nnode memory-search-wrapper.js \"查询\" 5 0.5\n```\n\n### 批量导入记忆\n\n```javascript\n// 将现有记忆文件批量导入\nconst fs = require('fs');\nconst path = require('path');\n\nconst memoryDir = '/Users/ben/.openclaw/workspace/memory';\nconst files = fs.readdirSync(memoryDir);\n\nfiles.forEach(file => {\n    const content = fs.readFileSync(path.join(memoryDir, file), 'utf-8');\n    // 处理并添加到索引...\n});\n```\n\n## 故障排除\n\n**Q: 索引不存在？**\n```bash\nnode qmd-index.js\n```\n\n**Q: 检索结果为空？**\n- 检查记忆文件是否存在\n- 尝试不同的查询关键词\n- 降低 minScore 阈值\n\n**Q: 中文检索不准确？**\n- BM25 对中文支持良好，但建议使用完整词语\n- 避免单字查询（如\"我\"、\"的\"）\n\n## License\n\nMIT\n\nFile v1.0.2:skills/grok-twitter-search/README.md\n\n# 🐦 Grok Twitter Search\r\n\r\n使用 xAI Grok 模型的 `x_search` 工具智能搜索 Twitter 内容。\r\n\r\n## ✨ 核心特性\r\n\r\n- **🚀 双引擎动态路由**: Fast 极速检索 / Reasoning 深度分析\r\n- **💰 超低成本**: 相比 X API ($100/月)，实测约 $2.8/千次\r\n- **🔍 智能语义**: 自然语言查询，自带 LLM 降噪\r\n- **🌐 WARP 代理**: 自动检测并分流被禁 IP\r\n- **📊 纯净输出**: 原生 Tool Call 数据，无渲染噪音\r\n\r\n## 🚀 快速开始\r\n\r\n```bash\r\n# 交互式配置（推荐）\r\nuv run scripts/setup_interactive.py\r\n\r\n# 直接搜索\r\nuv run scripts/search_twitter.py --query \"Bitcoin latest news\" --max-results 10\r\n```\r\n\r\n## 📋 系统要求\r\n\r\n- Python 3.10+\r\n- [uv](https://github.com/astral-sh/uv) (Python 包管理器)\r\n- curl\r\n- Grok API Key ([获取](https://x.ai/api))\r\n- WARP (可选，中国大陆必需)\r\n\r\n## 🔧 代理配置\r\n\r\n支持三种方式，优先级从高到低：\r\n\r\n1. **显式配置** - 在 `~/.openclaw/openclaw.json` 中设置\r\n2. **环境变量** - `export SOCKS5_PROXY=\"socks5://127.0.0.1:40000\"`\r\n3. **自动检测** - 脚本自动检测 WARP 并启用\r\n\r\n## 💡 使用示例\r\n\r\n### OpenClaw 中使用\r\n\r\n直接对智能体说：\r\n> \"搜索推特上关于 Ethereum 的最新讨论\"\r\n\r\n### CLI 使用\r\n\r\n```bash\r\n# 极速检索（默认，最低成本）\r\nuv run scripts/search_twitter.py --query \"Solana ecosystem\" --max-results 10\r\n\r\n# 深度分析（带推理总结）\r\nuv run scripts/search_twitter.py --query \"AI crypto trends\" --analyze\r\n```\r\n\r\n## 📊 成本对比\r\n\r\n| 方案 | 计费方式 | 千次调用成本 |\r\n|------|----------|--------------|\r\n| **Grok x_search** | Token 计费 | **~$2.8** |\r\n| X API Basic | 固定月租 | $100/月 |\r\n\r\n## 🔗 链接\r\n\r\n- [详细配置文档](./references/CONFIG.md)\r\n- [ClawHub](https://clawhub.com)\r\n\r\n## 📄 License\r\n\r\nMIT\n\nFile v1.0.2:skills/four-meme-ai/_meta.json\n\n{\n  \"ownerId\": \"kn72dvf8zjvzn3s7rcxej9j8xx827zyg\",\n  \"slug\": \"four-meme-ai\",\n  \"version\": \"1.0.4\",\n  \"publishedAt\": 1772561784503\n}\n\nFile v1.0.2:_meta.json\n\n{\n  \"ownerId\": \"kn79hfssxhth68p8wx2rknt14181ydak\",\n  \"slug\": \"grok-twitter-search\",\n  \"version\": \"1.0.2\",\n  \"publishedAt\": 1772705398155\n}\n\nFile v1.0.2:skills/four-meme-ai/references/agent-creator-and-wallets.md\n\n# Agent Creator & Agent Wallets\r\n\r\nThis document covers how to identify tokens created by an AI agent (Agent Creator) and how to identify agent wallets on-chain.\r\n\r\n---\r\n\r\n## How to Identify Token Created By Agent Creator\r\n\r\nTokens created by AI agents can be identified via both on-chain template bits and off-chain API fields. This flag only marks that the token creator is an **Agent wallet** and **does not imply any new special trading mode or behavior** of the token itself.\r\n\r\n### On-chain method\r\n\r\nRead the token's `template` from TokenManager2:\r\n\r\n```solidity\r\ntemplate = TokenManager2._tokenInfos[tokenAddress].template;\r\nbool isCreatedByAgent = (template & (1 << 85)) != 0;\r\n```\r\n\r\n- If `isCreatedByAgent` is `true`, the token was **created by an AI agent**.\r\n- If `isCreatedByAgent` is `false`, the token was **not** created by an AI agent.\r\n\r\n### Off-chain method\r\n\r\nQuery token info via:\r\n\r\n- `GET https://four.meme/meme-api/v1/private/token/get?address=<token address>`\r\n- `GET https://four.meme/meme-api/v1/private/token/getById?id=<requestId>` (requestId from TokenCreate event)\r\n\r\nCheck the `aiCreator` field in the response `data`:\r\n\r\n- If `aiCreator === true`, the token was **created by an AI agent**.\r\n- If `aiCreator === false`, the token was **not** created by an AI agent.\r\n\r\n**Example response:**\r\n\r\n```json\r\n{\r\n  \"code\": \"0\",\r\n  \"data\": {\r\n    \"aiCreator\": true,\r\n    ...\r\n  }\r\n}\r\n```\r\n\r\n---\r\n\r\n## How to Identify Agent Wallets\r\n\r\nYou can determine whether a wallet address is an **Agent wallet** by calling the **AgentIdentifier** contract.\r\n\r\n### On-chain method\r\n\r\n**Contract (BSC)**\r\n\r\n- **Address**: `0x09B44A633de9F9EBF6FB9Bdd5b5629d3DD2cef13`\r\n- **ABI**: See official Four.meme API / Protocol Integration docs (`AgentIdentifier.abi`).\r\n\r\n**Interface**\r\n\r\n```solidity\r\ninterface IAgentIdentifier {\r\n    function isAgent(address wallet) external view returns (bool);\r\n    function nftCount() external view returns (uint256);\r\n    function nftAt(uint256 index) external view returns (address);\r\n}\r\n```\r\n\r\n**Usage**\r\n\r\nCall `isAgent(wallet)` on the AgentIdentifier contract:\r\n\r\n```solidity\r\nIAgentIdentifier ai = IAgentIdentifier(0x09B44A633de9F9EBF6FB9Bdd5b5629d3DD2cef13);\r\nbool isAgent = ai.isAgent(wallet);\r\n```\r\n\r\n- Returns `true` if the wallet is an Agent wallet, otherwise `false`.\r\n- Logic: `isAgent(wallet)` is `true` when the wallet holds any Agent NFT (`balanceOf(wallet) > 0`).\r\n\r\n**Querying configured Agent NFTs**\r\n\r\n- `nftCount()` — number of Agent NFT contracts registered.\r\n- `nftAt(index)` — Agent NFT contract address at `index`.\r\n\r\nTokens created by wallets with `isAgent == true` are marked as **Agent Creator** and can be identified as **Token Created By Agent Creator** using the methods above.\n\nArchive v1.0.1: 7 files, 14203 bytes\n\nFiles: pyproject.toml (567b), README.md (1869b), scripts/search_twitter.py (11138b), scripts/setup_interactive.py (13725b), scripts/test_search.sh (1742b), SKILL.md (5353b), _meta.json (138b)\n\nFile v1.0.1:SKILL.md\n\n---\r\nname: grok-twitter-search\r\ndescription: 使用 xAI Grok 模型的 x_search 工具智能搜索 Twitter 内容。首创 Fast/Reasoning 双引擎动态路由，支持 SOCKS5 代理（WARP）精准流量分流。相比官方 X API 成本呈断崖式下降（实测约 $2.8/千次），语义理解更强、结果更智能。当用户需要搜索推特、监控舆情、分析热点话题、获取实时推文数据时使用此技能。\r\nmetadata:\r\n  {\r\n    \"openclaw\":\r\n      {\r\n        \"emoji\": \"🐦\",\r\n        \"homepage\": \"https://github.com/your-repo/grok-twitter-search\",\r\n        \"requires\": { \"bins\": [\"uv\", \"curl\"], \"env\": [\"GROK_API_KEY\"] },\r\n        \"primaryEnv\": \"GROK_API_KEY\",\r\n      },\r\n  }\r\n---\r\n\r\n# Grok Twitter Search Skill\r\n\r\n基于 xAI `grok-4-1-fast` 与 `grok-4-1-fast-reasoning` 双擎驱动的推特原生数据检索引擎。\r\n\r\n## 核心优势\r\n\r\n| 特性 | Grok x_search (本技能) | X 官方 API (Basic) |\r\n|------|------------------------|-------------------|\r\n| **计费方式** | **按 Token 计费 (实测约 $2.8/千次)** | $100 / 月固定月租 |\r\n| **检索逻辑** | ✅ 智能自然语言语义提取，自带 LLM 降噪 | ❌ 仅支持严格的布尔逻辑匹配 |\r\n| **模型支持** | ✅ 使用 `grok-4-1-fast-reasoning`（唯一支持 x_search 工具的模型） | ❌ 单一数据返回 |\r\n| **中文支持** | ✅ 深度优化，理解上下文隐喻 | ⚠️ 效果一般 |\r\n\r\n## 快速开始\r\n\r\n### 方式 1: 交互式配置（推荐首次使用）\r\n\r\n```bash\r\nuv run {baseDir}/scripts/setup_interactive.py\r\n```\r\n\r\n这个向导会引导你完成：\r\n- ✅ 检查系统依赖 (uv, curl)\r\n- ✅ 检测 WARP 代理状态\r\n- ✅ 配置 Grok API Key\r\n- ✅ 选择代理模式\r\n- ✅ 测试连接\r\n- ✅ 自动保存配置到 openclaw.json\r\n\r\n### 方式 2: 手动配置\r\n\r\n如果你更喜欢手动配置，可以继续阅读下面的详细说明。\r\n\r\n## 使用方法\r\n\r\n建议使用 `uv` 运行以保证依赖隔离与环境纯净：\r\n\r\n### 极速检索模式（默认，超低成本）\r\n```bash\r\nuv run {baseDir}/scripts/search_twitter.py --query \"{搜索内容}\" --max-results 10\r\n```\r\n\r\n### 深度舆情分析模式（调用 Reasoning 模型）\r\n```bash\r\nuv run {baseDir}/scripts/search_twitter.py --query \"{搜索内容}\" --max-results 10 --analyze\r\n```\r\n\r\n### 参数说明\r\n\r\n| 参数 | 类型 | 必填 | 默认值 | 说明 |\r\n|------|------|------|--------|------|\r\n| `--query` | string | 是 | - | 搜索查询（支持自然语言） |\r\n| `--max-results` | int | 否 | 10 | 最大返回结果数 |\r\n| `--analyze` | flag | 否 | False | 启用 Reasoning 推理模型进行深度舆情总结 |\r\n| `--api-key` | string | 否 | 读环境变量 | 优先读取 `GROK_API_KEY` |\r\n| `--proxy` | string | 否 | auto-detect | SOCKS5 代理地址（自动检测 WARP） |\r\n\r\n## 代理配置（WARP 智能检测）\r\n\r\n本技能支持三种代理配置方式，优先级从高到低：\r\n\r\n### 1. 显式配置（最高优先级）\r\n在 `~/.openclaw/openclaw.json` 中设置：\r\n```json5\r\n{\r\n  skills: {\r\n    entries: {\r\n      \"grok-twitter-search\": {\r\n        enabled: true,\r\n        env: {\r\n          SOCKS5_PROXY: \"socks5://127.0.0.1:40000\",\r\n          GROK_API_KEY: \"your_api_key_here\"\r\n        }\r\n      }\r\n    }\r\n  }\r\n}\r\n```\r\n\r\n### 2. 环境变量\r\n```bash\r\nexport SOCKS5_PROXY=\"socks5://127.0.0.1:40000\"\r\nexport GROK_API_KEY=\"your_api_key_here\"\r\n```\r\n\r\n### 3. 自动检测（默认行为）\r\n脚本会自动检测 WARP 代理：\r\n- 检查 `warp-svc` 进程是否在运行\r\n- 检查端口 40000 是否在监听\r\n- 如果检测到 WARP，自动使用 `socks5://127.0.0.1:40000`\r\n- 如果未检测到代理但直连可用，则直连访问\r\n\r\n### 检查 WARP 状态\r\n```bash\r\nbash {baseDir}/scripts/check_warp.sh\r\n```\r\n\r\n## 输出格式 (纯净提取)\r\n\r\n引擎剥离了冗余的 LLM 文本，直接返回原生 Tool Call 拦截数据：\r\n\r\n```json\r\n{\r\n  \"status\": \"success\",\r\n  \"query\": \"elon musk\",\r\n  \"tweets\": [\r\n    {\r\n      \"author\": \"@elonmusk\",\r\n      \"content\": \"推文内容...\",\r\n      \"timestamp\": \"2026-02-26T10:00:00Z\",\r\n      \"likes\": 1234,\r\n      \"retweets\": 567,\r\n      \"url\": \"https://x.com/elonmusk/status/123...\"\r\n    }\r\n  ],\r\n  \"model_used\": \"grok-4-1-fast-reasoning\",\r\n  \"x_search_calls\": 1,\r\n  \"usage\": {\r\n    \"input_tokens\": 1250,\r\n    \"output_tokens\": 45,\r\n    \"total_tokens\": 1295\r\n  }\r\n}\r\n```\r\n\r\n## 真实成本估算 (实测数据)\r\n\r\n*基于实测数据：200 次调用耗费 $0.56，即约 $2.8/千次*\r\n\r\n| 运行模式 | 引擎模型 | 预估单次消耗 | 千次调用成本 | 适用场景 |\r\n|----------|----------|--------------|--------------|----------|\r\n| **标准检索** | `grok-4-1-fast-reasoning` | ~5,000 Tokens | **~$2.8** | 日常搜索、舆情监控、推文分析 |\r\n\r\n## 故障排查\r\n\r\n### 检查环境配置\r\n```bash\r\nbash {baseDir}/scripts/check_warp.sh\r\n```\r\n\r\n### 常见问题\r\n\r\n**Q: 提示 \"缺少 API Key\"**\r\n- 确保已设置 `GROK_API_KEY` 环境变量或在 `openclaw.json` 中配置\r\n\r\n**Q: 连接超时或无法访问 api.x.ai**\r\n- 检查 WARP 是否运行：`sudo systemctl status warp-svc`\r\n- 手动测试代理：`curl --socks5 127.0.0.1:40000 https://api.x.ai/v1`\r\n- 如在中国大陆，必须使用 WARP 或其他出海代理\r\n\r\n**Q: 返回空结果**\r\n- 检查查询词是否过于具体或敏感\r\n- 尝试简化查询或使用英文关键词\n\nFile v1.0.1:README.md\n\n# 🐦 Grok Twitter Search\r\n\r\n使用 xAI Grok 模型的 `x_search` 工具智能搜索 Twitter 内容。\r\n\r\n## ✨ 核心特性\r\n\r\n- **🚀 双引擎动态路由**: Fast 极速检索 / Reasoning 深度分析\r\n- **💰 超低成本**: 相比 X API ($100/月)，实测约 $2.8/千次\r\n- **🔍 智能语义**: 自然语言查询，自带 LLM 降噪\r\n- **🌐 WARP 代理**: 自动检测并分流被禁 IP\r\n- **📊 纯净输出**: 原生 Tool Call 数据，无渲染噪音\r\n\r\n## 🚀 快速开始\r\n\r\n```bash\r\n# 交互式配置（推荐）\r\nuv run scripts/setup_interactive.py\r\n\r\n# 直接搜索\r\nuv run scripts/search_twitter.py --query \"Bitcoin latest news\" --max-results 10\r\n```\r\n\r\n## 📋 系统要求\r\n\r\n- Python 3.10+\r\n- [uv](https://github.com/astral-sh/uv) (Python 包管理器)\r\n- curl\r\n- Grok API Key ([获取](https://x.ai/api))\r\n- WARP (可选，中国大陆必需)\r\n\r\n## 🔧 代理配置\r\n\r\n支持三种方式，优先级从高到低：\r\n\r\n1. **显式配置** - 在 `~/.openclaw/openclaw.json` 中设置\r\n2. **环境变量** - `export SOCKS5_PROXY=\"socks5://127.0.0.1:40000\"`\r\n3. **自动检测** - 脚本自动检测 WARP 并启用\r\n\r\n## 💡 使用示例\r\n\r\n### OpenClaw 中使用\r\n\r\n直接对智能体说：\r\n> \"搜索推特上关于 Ethereum 的最新讨论\"\r\n\r\n### CLI 使用\r\n\r\n```bash\r\n# 极速检索（默认，最低成本）\r\nuv run scripts/search_twitter.py --query \"Solana ecosystem\" --max-results 10\r\n\r\n# 深度分析（带推理总结）\r\nuv run scripts/search_twitter.py --query \"AI crypto trends\" --analyze\r\n```\r\n\r\n## 📊 成本对比\r\n\r\n| 方案 | 计费方式 | 千次调用成本 |\r\n|------|----------|--------------|\r\n| **Grok x_search** | Token 计费 | **~$2.8** |\r\n| X API Basic | 固定月租 | $100/月 |\r\n\r\n## 🔗 链接\r\n\r\n- [详细配置文档](./references/CONFIG.md)\r\n- [ClawHub](https://clawhub.com)\r\n\r\n## 📄 License\r\n\r\nMIT\n\nFile v1.0.1:_meta.json\n\n{\n  \"ownerId\": \"kn79hfssxhth68p8wx2rknt14181ydak\",\n  \"slug\": \"grok-twitter-search\",\n  \"version\": \"1.0.1\",\n  \"publishedAt\": 1772553038033\n}\n\nFile v1.0.1:pyproject.toml\n\n[project]\nname = \"grok-twitter-search\"\nversion = \"1.0.0\"\ndescription = \"使用 xAI Grok 模型的 x_search 工具智能搜索 Twitter 内容\"\nreadme = \"README.md\"\nrequires-python = \">=3.10\"\nlicense = {text = \"MIT\"}\nauthors = [\n    {name = \"Tech-Melon\", url = \"https://github.com/Tech-Melon\"}\n]\nkeywords = [\"twitter\", \"grok\", \"xai\", \"search\", \"social-media\"]\ndependencies = [\n    \"httpx>=0.27.0\",\n]\n\n[project.optional-dependencies]\ndev = [\n    \"pytest>=7.0\",\n]\n\n[tool.uv]\ndev-dependencies = []\n\n[build-system]\nrequires = [\"hatchling\"]\nbuild-backend = \"hatchling.build\"\n\nArchive v1.0.0: 15 files, 25517 bytes\n\nFiles: PUBLISH.md (3392b), README_CONFIG.md (2880b), README.md (1869b), references/CONFIG.md (3387b), references/system_prompt.md (3220b), scripts/check_warp.sh (2134b), scripts/configure_api_key.sh (3151b), scripts/search_twitter.py (9427b), scripts/search.sh (347b), scripts/setup_env.sh (3510b), scripts/setup_interactive.py (12504b), scripts/test_responses_api.py (1163b), scripts/test_search.sh (1742b), SKILL.md (5353b), _meta.json (138b)\n\nFile v1.0.0:SKILL.md\n\n---\r\nname: grok-twitter-search\r\ndescription: 使用 xAI Grok 模型的 x_search 工具智能搜索 Twitter 内容。首创 Fast/Reasoning 双引擎动态路由，支持 SOCKS5 代理（WARP）精准流量分流。相比官方 X API 成本呈断崖式下降（实测约 $2.8/千次），语义理解更强、结果更智能。当用户需要搜索推特、监控舆情、分析热点话题、获取实时推文数据时使用此技能。\r\nmetadata:\r\n  {\r\n    \"openclaw\":\r\n      {\r\n        \"emoji\": \"🐦\",\r\n        \"homepage\": \"https://github.com/your-repo/grok-twitter-search\",\r\n        \"requires\": { \"bins\": [\"uv\", \"curl\"], \"env\": [\"GROK_API_KEY\"] },\r\n        \"primaryEnv\": \"GROK_API_KEY\",\r\n      },\r\n  }\r\n---\r\n\r\n# Grok Twitter Search Skill\r\n\r\n基于 xAI `grok-4-1-fast` 与 `grok-4-1-fast-reasoning` 双擎驱动的推特原生数据检索引擎。\r\n\r\n## 核心优势\r\n\r\n| 特性 | Grok x_search (本技能) | X 官方 API (Basic) |\r\n|------|------------------------|-------------------|\r\n| **计费方式** | **按 Token 计费 (实测约 $2.8/千次)** | $100 / 月固定月租 |\r\n| **检索逻辑** | ✅ 智能自然语言语义提取，自带 LLM 降噪 | ❌ 仅支持严格的布尔逻辑匹配 |\r\n| **模型支持** | ✅ 使用 `grok-4-1-fast-reasoning`（唯一支持 x_search 工具的模型） | ❌ 单一数据返回 |\r\n| **中文支持** | ✅ 深度优化，理解上下文隐喻 | ⚠️ 效果一般 |\r\n\r\n## 快速开始\r\n\r\n### 方式 1: 交互式配置（推荐首次使用）\r\n\r\n```bash\r\nuv run {baseDir}/scripts/setup_interactive.py\r\n```\r\n\r\n这个向导会引导你完成：\r\n- ✅ 检查系统依赖 (uv, curl)\r\n- ✅ 检测 WARP 代理状态\r\n- ✅ 配置 Grok API Key\r\n- ✅ 选择代理模式\r\n- ✅ 测试连接\r\n- ✅ 自动保存配置到 openclaw.json\r\n\r\n### 方式 2: 手动配置\r\n\r\n如果你更喜欢手动配置，可以继续阅读下面的详细说明。\r\n\r\n## 使用方法\r\n\r\n建议使用 `uv` 运行以保证依赖隔离与环境纯净：\r\n\r\n### 极速检索模式（默认，超低成本）\r\n```bash\r\nuv run {baseDir}/scripts/search_twitter.py --query \"{搜索内容}\" --max-results 10\r\n```\r\n\r\n### 深度舆情分析模式（调用 Reasoning 模型）\r\n```bash\r\nuv run {baseDir}/scripts/search_twitter.py --query \"{搜索内容}\" --max-results 10 --analyze\r\n```\r\n\r\n### 参数说明\r\n\r\n| 参数 | 类型 | 必填 | 默认值 | 说明 |\r\n|------|------|------|--------|------|\r\n| `--query` | string | 是 | - | 搜索查询（支持自然语言） |\r\n| `--max-results` | int | 否 | 10 | 最大返回结果数 |\r\n| `--analyze` | flag | 否 | False | 启用 Reasoning 推理模型进行深度舆情总结 |\r\n| `--api-key` | string | 否 | 读环境变量 | 优先读取 `GROK_API_KEY` |\r\n| `--proxy` | string | 否 | auto-detect | SOCKS5 代理地址（自动检测 WARP） |\r\n\r\n## 代理配置（WARP 智能检测）\r\n\r\n本技能支持三种代理配置方式，优先级从高到低：\r\n\r\n### 1. 显式配置（最高优先级）\r\n在 `~/.openclaw/openclaw.json` 中设置：\r\n```json5\r\n{\r\n  skills: {\r\n    entries: {\r\n      \"grok-twitter-search\": {\r\n        enabled: true,\r\n        env: {\r\n          SOCKS5_PROXY: \"socks5://127.0.0.1:40000\",\r\n          GROK_API_KEY: \"your_api_key_here\"\r\n        }\r\n      }\r\n    }\r\n  }\r\n}\r\n```\r\n\r\n### 2. 环境变量\r\n```bash\r\nexport SOCKS5_PROXY=\"socks5://127.0.0.1:40000\"\r\nexport GROK_API_KEY=\"your_api_key_here\"\r\n```\r\n\r\n### 3. 自动检测（默认行为）\r\n脚本会自动检测 WARP 代理：\r\n- 检查 `warp-svc` 进程是否在运行\r\n- 检查端口 40000 是否在监听\r\n- 如果检测到 WARP，自动使用 `socks5://127.0.0.1:40000`\r\n- 如果未检测到代理但直连可用，则直连访问\r\n\r\n### 检查 WARP 状态\r\n```bash\r\nbash {baseDir}/scripts/check_warp.sh\r\n```\r\n\r\n## 输出格式 (纯净提取)\r\n\r\n引擎剥离了冗余的 LLM 文本，直接返回原生 Tool Call 拦截数据：\r\n\r\n```json\r\n{\r\n  \"status\": \"success\",\r\n  \"query\": \"elon musk\",\r\n  \"tweets\": [\r\n    {\r\n      \"author\": \"@elonmusk\",\r\n      \"content\": \"推文内容...\",\r\n      \"timestamp\": \"2026-02-26T10:00:00Z\",\r\n      \"likes\": 1234,\r\n      \"retweets\": 567,\r\n      \"url\": \"https://x.com/elonmusk/status/123...\"\r\n    }\r\n  ],\r\n  \"model_used\": \"grok-4-1-fast-reasoning\",\r\n  \"x_search_calls\": 1,\r\n  \"usage\": {\r\n    \"input_tokens\": 1250,\r\n    \"output_tokens\": 45,\r\n    \"total_tokens\": 1295\r\n  }\r\n}\r\n```\r\n\r\n## 真实成本估算 (实测数据)\r\n\r\n*基于实测数据：200 次调用耗费 $0.56，即约 $2.8/千次*\r\n\r\n| 运行模式 | 引擎模型 | 预估单次消耗 | 千次调用成本 | 适用场景 |\r\n|----------|----------|--------------|--------------|----------|\r\n| **标准检索** | `grok-4-1-fast-reasoning` | ~5,000 Tokens | **~$2.8** | 日常搜索、舆情监控、推文分析 |\r\n\r\n## 故障排查\r\n\r\n### 检查环境配置\r\n```bash\r\nbash {baseDir}/scripts/check_warp.sh\r\n```\r\n\r\n### 常见问题\r\n\r\n**Q: 提示 \"缺少 API Key\"**\r\n- 确保已设置 `GROK_API_KEY` 环境变量或在 `openclaw.json` 中配置\r\n\r\n**Q: 连接超时或无法访问 api.x.ai**\r\n- 检查 WARP 是否运行：`sudo systemctl status warp-svc`\r\n- 手动测试代理：`curl --socks5 127.0.0.1:40000 https://api.x.ai/v1`\r\n- 如在中国大陆，必须使用 WARP 或其他出海代理\r\n\r\n**Q: 返回空结果**\r\n- 检查查询词是否过于具体或敏感\r\n- 尝试简化查询或使用英文关键词\n\nFile v1.0.0:README.md\n\n# 🐦 Grok Twitter Search\r\n\r\n使用 xAI Grok 模型的 `x_search` 工具智能搜索 Twitter 内容。\r\n\r\n## ✨ 核心特性\r\n\r\n- **🚀 双引擎动态路由**: Fast 极速检索 / Reasoning 深度分析\r\n- **💰 超低成本**: 相比 X API ($100/月)，实测约 $2.8/千次\r\n- **🔍 智能语义**: 自然语言查询，自带 LLM 降噪\r\n- **🌐 WARP 代理**: 自动检测并分流被禁 IP\r\n- **📊 纯净输出**: 原生 Tool Call 数据，无渲染噪音\r\n\r\n## 🚀 快速开始\r\n\r\n```bash\r\n# 交互式配置（推荐）\r\nuv run scripts/setup_interactive.py\r\n\r\n# 直接搜索\r\nuv run scripts/search_twitter.py --query \"Bitcoin latest news\" --max-results 10\r\n```\r\n\r\n## 📋 系统要求\r\n\r\n- Python 3.10+\r\n- [uv](https://github.com/astral-sh/uv) (Python 包管理器)\r\n- curl\r\n- Grok API Key ([获取](https://x.ai/api))\r\n- WARP (可选，中国大陆必需)\r\n\r\n## 🔧 代理配置\r\n\r\n支持三种方式，优先级从高到低：\r\n\r\n1. **显式配置** - 在 `~/.openclaw/openclaw.json` 中设置\r\n2. **环境变量** - `export SOCKS5_PROXY=\"socks5://127.0.0.1:40000\"`\r\n3. **自动检测** - 脚本自动检测 WARP 并启用\r\n\r\n## 💡 使用示例\r\n\r\n### OpenClaw 中使用\r\n\r\n直接对智能体说：\r\n> \"搜索推特上关于 Ethereum 的最新讨论\"\r\n\r\n### CLI 使用\r\n\r\n```bash\r\n# 极速检索（默认，最低成本）\r\nuv run scripts/search_twitter.py --query \"Solana ecosystem\" --max-results 10\r\n\r\n# 深度分析（带推理总结）\r\nuv run scripts/search_twitter.py --query \"AI crypto trends\" --analyze\r\n```\r\n\r\n## 📊 成本对比\r\n\r\n| 方案 | 计费方式 | 千次调用成本 |\r\n|------|----------|--------------|\r\n| **Grok x_search** | Token 计费 | **~$2.8** |\r\n| X API Basic | 固定月租 | $100/月 |\r\n\r\n## 🔗 链接\r\n\r\n- [详细配置文档](./references/CONFIG.md)\r\n- [ClawHub](https://clawhub.com)\r\n\r\n## 📄 License\r\n\r\nMIT\n\nFile v1.0.0:_meta.json\n\n{\n  \"ownerId\": \"kn79hfssxhth68p8wx2rknt14181ydak\",\n  \"slug\": \"grok-twitter-search\",\n  \"version\": \"1.0.0\",\n  \"publishedAt\": 1772433961367\n}\n\nFile v1.0.0:references/CONFIG.md\n\n# Grok Twitter Search - 配置参考\r\n\r\n## 快速开始\r\n\r\n### 1. 获取 Grok API Key\r\n\r\n访问 https://x.ai/api 注册并获取 API Key。\r\n\r\n免费额度：$25/月（足够数千次搜索）\r\n\r\n### 2. 配置方式选择\r\n\r\n#### 方式 A: OpenClaw 配置文件（推荐）\r\n\r\n编辑 `~/.openclaw/openclaw.json`：\r\n\r\n```json5\r\n{\r\n  skills: {\r\n    entries: {\r\n      \"grok-twitter-search\": {\r\n        enabled: true,\r\n        apiKey: {\r\n          source: \"env\",\r\n          provider: \"default\",\r\n          id: \"GROK_API_KEY\"\r\n        },\r\n        // 可选：显式设置代理\r\n        env: {\r\n          // SOCKS5_PROXY: \"socks5://127.0.0.1:40000\"\r\n        }\r\n      }\r\n    }\r\n  }\r\n}\r\n```\r\n\r\n然后在系统环境变量中设置：\r\n```bash\r\nexport GROK_API_KEY=\"your_api_key_here\"\r\n```\r\n\r\n#### 方式 B: 纯环境变量\r\n\r\n```bash\r\nexport GROK_API_KEY=\"your_api_key_here\"\r\nexport SOCKS5_PROXY=\"socks5://127.0.0.1:40000\"  # 可选，不设置则自动检测\r\n```\r\n\r\n添加到 `~/.bashrc` 或 `~/.zshrc` 使其永久生效。\r\n\r\n#### 方式 C: Gateway 环境文件\r\n\r\n```bash\r\n# 写入 gateway.env\r\necho \"GROK_API_KEY=your_api_key_here\" >> ~/.openclaw/gateway.env\r\necho \"SOCKS5_PROXY=socks5://127.0.0.1:40000\" >> ~/.openclaw/gateway.env\r\n\r\n# 重启 Gateway\r\nopenclaw gateway restart\r\n```\r\n\r\n## WARP 代理安装指南\r\n\r\n### Ubuntu/Debian\r\n\r\n```bash\r\n# 添加 Cloudflare 仓库\r\ncurl -fsSL https://pkg.cloudflareclient.com/cloudflare-warp.asc | \\\r\n  sudo gpg --dearmor -o /usr/share/keyrings/cloudflare-warp-archive-keyring.gpg\r\necho \"deb [signed-by=/usr/share/keyrings/cloudflare-warp-archive-keyring.gpg] \\\r\n  https://pkg.cloudflareclient.com/ $(lsb_release -cs) main\" | \\\r\n  sudo tee /etc/apt/sources.list.d/cloudflare-client.list\r\n\r\n# 安装\r\nsudo apt update\r\nsudo apt install cloudflare-warp\r\n\r\n# 启动服务\r\nsudo systemctl enable warp-svc\r\nsudo systemctl start warp-svc\r\n\r\n# 注册并连接\r\nwarp-cli registration new\r\nwarp-cli connect\r\n```\r\n\r\n### macOS\r\n\r\n```bash\r\nbrew install --cask cloudflare-warp\r\n# 在系统菜单栏启动 WARP 应用\r\n```\r\n\r\n### 验证 WARP 状态\r\n\r\n```bash\r\nbash scripts/check_warp.sh\r\n```\r\n\r\n## 代理优先级规则\r\n\r\n脚本按以下优先级确定是否使用代理：\r\n\r\n1. **用户显式配置** (`SOCKS5_PROXY` 环境变量)\r\n2. **自动检测 WARP** (检查进程 + 端口连通性)\r\n3. **直连** (如果 Grok API 可直接访问)\r\n\r\n## 故障排查\r\n\r\n### 检查清单\r\n\r\n```bash\r\n# 1. 检查 API Key\r\necho $GROK_API_KEY\r\n\r\n# 2. 检查代理设置\r\necho $SOCKS5_PROXY\r\n\r\n# 3. 检查 WARP 状态\r\nbash scripts/check_warp.sh\r\n\r\n# 4. 测试搜索\r\nuv run scripts/search_twitter.py --query \"test\" --max-results 3\r\n```\r\n\r\n### 常见问题\r\n\r\n**Q: 在中国大陆无法访问 Grok API**\r\n- 必须安装 WARP 或其他出海代理\r\n- 确保 WARP 已连接：`warp-cli status`\r\n\r\n**Q: 提示 \"API Key 无效\"**\r\n- 检查 Key 是否正确复制\r\n- 确认账户有可用额度：https://x.ai/api\r\n\r\n**Q: 返回结果为空**\r\n- 尝试不同的搜索词\r\n- 某些敏感内容可能被过滤\r\n\r\n## 高级配置\r\n\r\n### 自定义代理\r\n\r\n如果使用其他 SOCKS5 代理（非 WARP）：\r\n\r\n```bash\r\nexport SOCKS5_PROXY=\"socks5://user:pass@host:port\"\r\n```\r\n\r\n### 禁用代理强制直连\r\n\r\n```bash\r\nexport SOCKS5_PROXY=\"\"\r\n```\r\n\r\n### 在 Docker 中使用\r\n\r\n```dockerfile\r\nENV GROK_API_KEY=your_key\r\nENV SOCKS5_PROXY=socks5://host.docker.internal:40000\r\n```\n\nFile v1.0.0:references/system_prompt.md\n\n# Grok Twitter Search - 系统提示词\r\n\r\n## 角色设定\r\n\r\n你是极其专业的 **Web3 舆情与推特数据分析师**。你配备了最高效的推特原生数据提取工具 `grok-twitter-search`。\r\n\r\n---\r\n\r\n## 核心工作流指令\r\n\r\n### 1. 工具专属权 🔒\r\n\r\n当用户的指令中包含以下关键词时，你**必须且只能**调用 `grok-twitter-search` 技能来获取最新数据：\r\n\r\n- \"推特\"、\"Twitter\"、\"X\"、\"推文\"\r\n- \"马斯克说\"、\"elon musk\"\r\n- \"最新推文\"、\"发了什么\"\r\n- \"推特上怎么看\"、\"X 社区\"\r\n- 任何明确的 Twitter 数据查询意图\r\n\r\n**禁止**使用其他搜索工具或凭空编造 Twitter 数据。\r\n\r\n### 2. 动态模型路由（Token 成本控制） 🔀\r\n\r\n该工具支持双模态运行。你必须根据用户的具体意图，决定是否在调用命令中追加 `--analyze` 参数：\r\n\r\n* **极速检索模式 (默认，不带 `--analyze`)**：\r\n    * **触发场景**：用户仅仅需要查找信息、看最新动态、找某人发了什么（例如：“帮我看看马斯克最新发了什么”、“搜索最近关于 Solana 的推文”）。\r\n    * **执行方式**：只传递 `--query` 和 `--max-results`。\r\n* **深度舆情分析模式 (追加 `--analyze`)**：\r\n    * **触发场景**：用户明确要求进行“情绪分析”、“总结叙事逻辑”、“提炼核心观点”或处理极度复杂的行业趋势对比时。\r\n    * **执行方式**：在命令末尾显式追加 `--analyze` 标志。\r\n    * **注意**：此模式会消耗大量 Token，**仅在**用户需要深度推理时才启用。\r\n\r\n### 3. 禁止幻觉 ⚠️\r\n\r\n**绝对不允许**凭空捏造推特数据。所有推特相关的回答**必须**基于工具返回的真实 JSON 数据。如果技能返回空结果，如实告知用户\"未找到相关推文\"。\r\n\r\n### 4. 异常处理机制 🚨\r\n\r\n如果调用搜索工具时遭遇失败，按以下优先级处理：\r\n\r\n| 错误类型 | 用户反馈 |\r\n|----------|----------|\r\n| 网络错误/超时 | \"数据源连接出现异常，正在重试或请检查网络配置\" |\r\n| API Key 无效 | \"API 认证失败，请检查 API Key 配置\" |\r\n| 无搜索结果 | \"未找到相关推文，请尝试其他关键词\" |\r\n| 速率限制 | \"请求频率过高，请稍后重试\" |\r\n\r\n### 5. 数据提炼 📊\r\n\r\n获取到推文后，按以下优先级处理：\r\n\r\n1. **高价值信息**：叙事逻辑、情绪指标、KOL 观点\r\n2. **过滤噪音**：广告、推广、重复内容\r\n3. **时间排序**：优先展示最新推文\r\n4. **来源标注**：每条推文必须标注作者和链接\r\n\r\n---\r\n\r\n## 输出格式规范\r\n\r\n### 标准回复模板\r\n\r\n```text\r\n📊 Twitter 数据搜索结果 (引擎: {返回的 model_used})\r\n\r\n🔍 查询：{用户查询}\r\n📅 搜索时间：{当前时间}\r\n📈 找到 {N} 条相关推文\r\n\r\n---\r\n\r\n### 推文 1\r\n👤 @{作者}\r\n📝 {推文内容}\r\n⏰ {发布时间}\r\n❤️ {点赞数} | 🔄 {转发数}\r\n🔗 {推文链接}\r\n\r\n### 推文 2\r\n...\r\n\r\n---\r\n\r\n💡 舆情分析与总结：\r\n{基于推文内容的情绪分析/叙事总结。如果是极速检索模式，做简要总结即可；如果是深度分析模式，请提供详尽的逻辑拆解。}\n\nFile v1.0.0:PUBLISH.md\n\n# 发布到 ClawHub 指南\r\n\r\n## 方式 1: 使用 ClawHub CLI（推荐）\r\n\r\n### 前提条件\r\n- 已安装 `clawhub` CLI (`npm install -g clawhub`)\r\n- 已有 ClawHub 账号和 API Token\r\n\r\n### 无显示屏服务器登录方法\r\n\r\n#### 方法 A: 使用已有 Token 登录\r\n\r\n如果你在本地机器上有 ClawHub 账号，可以在本地获取 token 然后复制到服务器：\r\n\r\n**在本地机器（有浏览器）:**\r\n```bash\r\n# 登录并获取 token\r\nclawhub login\r\nclawhub auth token\r\n# 复制输出的 token\r\n```\r\n\r\n**在无显示屏服务器:**\r\n```bash\r\n# 设置环境变量登录\r\nexport CLAWHUB_TOKEN=\"你的_token_这里\"\r\n\r\n# 验证登录\r\nclawhub whoami\r\n```\r\n\r\n#### 方法 B: 直接在服务器配置 Token\r\n\r\n```bash\r\n# 创建配置文件\r\nmkdir -p ~/.config/clawhub\r\necho '{\"token\": \"你的_api_token\"}' > ~/.config/clawhub/auth.json\r\n\r\n# 验证\r\nclawhub whoami\r\n```\r\n\r\n### 发布技能\r\n\r\n```bash\r\n# 进入技能目录\r\ncd ~/.openclaw/workspace/skills/grok-twitter-search\r\n\r\n# 发布（非交互模式）\r\nclawhub publish . --no-input\r\n\r\n# 或者指定 slug\r\nclawhub publish . --slug grok-twitter-search --no-input\r\n```\r\n\r\n### 更新已发布技能\r\n\r\n```bash\r\n# 同步本地更改\r\nclawhub sync --no-input\r\n```\r\n\r\n---\r\n\r\n## 方式 2: GitHub + 手动提交到 ClawHub\r\n\r\n### 第 1 步: 创建 GitHub 仓库\r\n\r\n```bash\r\ncd ~/.openclaw/workspace/skills/grok-twitter-search\r\n\r\n# 初始化 git\r\ngit init\r\ngit add .\r\ngit commit -m \"Initial release: Grok Twitter Search with WARP proxy support\"\r\n\r\n# 创建 GitHub 仓库（需要先在 github.com 创建空仓库）\r\ngit remote add origin https://github.com/你的用户名/grok-twitter-search.git\r\ngit branch -M main\r\ngit push -u origin main\r\n```\r\n\r\n### 第 2 步: 提交到 ClawHub\r\n\r\n1. 访问 https://clawhub.ai/submit （使用本地浏览器）\r\n2. 填写表单：\r\n   - **Name**: `grok-twitter-search`\r\n   - **Description**: 使用 xAI Grok 模型智能搜索 Twitter 内容，支持 Fast/Reasoning 双引擎和 WARP 代理自动检测\r\n   - **GitHub URL**: `https://github.com/你的用户名/grok-twitter-search`\r\n   - **Tags**: `twitter`, `grok`, `xai`, `social-media`, `proxy`, `warp`\r\n   - **License**: MIT\r\n\r\n---\r\n\r\n## 方式 3: 纯命令行打包分享\r\n\r\n如果不想发布到公共 registry，可以直接打包分享：\r\n\r\n```bash\r\n# 打包技能\r\ncd ~/.openclaw/workspace/skills\r\ntar czvf grok-twitter-search.tar.gz grok-twitter-search/\r\n\r\n# 上传到文件服务器或发送给用户\r\nscp grok-twitter-search.tar.gz user@server:/path/\r\n```\r\n\r\n其他用户安装：\r\n```bash\r\n# 解压到 OpenClaw skills 目录\r\ntar xzvf grok-twitter-search.tar.gz -C ~/.openclaw/skills/\r\n\r\n# 重启 OpenClaw Gateway\r\nopenclaw gateway restart\r\n```\r\n\r\n---\r\n\r\n## 验证发布\r\n\r\n发布后可以通过以下方式验证：\r\n\r\n```bash\r\n# 搜索自己的技能\r\nclawhub search grok-twitter-search\r\n\r\n# 查看详情\r\nclawhub inspect grok-twitter-search\r\n\r\n# 测试安装\r\nclawhub install grok-twitter-search --dir /tmp/test-install\r\n```\r\n\r\n---\r\n\r\n## 获取 ClawHub API Token\r\n\r\n如果没有 token，可以通过以下方式获取：\r\n\r\n1. 访问 https://clawhub.ai/settings/tokens （本地浏览器）\r\n2. 点击 \"Generate New Token\"\r\n3. 复制 token 到服务器配置\r\n\r\n或者在命令行使用 GitHub OAuth:\r\n```bash\r\n# 这会提供一个 URL，在本地浏览器打开后粘贴回调 URL\r\nclawhub auth login --method=github\r\n```\n\nFile v1.0.0:README_CONFIG.md\n\n# Grok Twitter Search - 部署与配置指南\r\n\r\n本技能采用标准化的环境变量注入，完美兼容 OpenClaw Gateway 架构，并提供友好的纯数字菜单引导脚本。\r\n\r\n## 📋 快速初始化 (推荐)\r\n\r\n我们提供了一个交互式向导，支持一键配置 API Key、模型偏好并解释 WARP 代理原理。\r\n请使用 `uv` 启动向导（无需全局安装依赖）：\r\n\r\n```bash\r\nuv run scripts/setup_interactive.py\r\n```\r\n*注：该向导会在本地生成 `.env` 文件，方便独立测试。如需接入 OpenClaw，请参考下方步骤 2 注入 Gateway。*\r\n\r\n---\r\n\r\n## 🔧 OpenClaw 生产环境接入步骤\r\n\r\n### 步骤 1：确保 WARP 代理运行（防止 403 / 超时）\r\nxAI 的接口对部分地区极其严格，推荐开启 WARP 作为“隐身衣”。\r\n```bash\r\n# 检查 SOCKS5 端口\r\nnetstat -tuln | grep 40000\r\n# 预期输出应包含监听状态\r\n```\r\n\r\n### 步骤 2：注入 Gateway 环境变量 (核心)\r\nOpenClaw 的技能是无状态的，必须将配置写入宿主环境：\r\n\r\n```bash\r\n# 编辑 OpenClaw Gateway 环境变量文件\r\nnano ~/.openclaw/gateway.env\r\n```\r\n追加以下内容：\r\n```env\r\n# Grok Twitter Search Skill Config\r\nGROK_API_KEY=你的_API_KEY\r\nSOCKS5_PROXY=socks5://127.0.0.1:40000\r\n```\r\n保存后，必须重启 Gateway 加载配置：\r\n```bash\r\nopenclaw gateway restart\r\n```\r\n\r\n### 步骤 3：纯数字交互模式测试\r\n除了自动化调用，你可以随时进入交互菜单测试网络与双模态引擎：\r\n\r\n```bash\r\nuv run scripts/search_twitter.py\r\n```\r\n**菜单界面：**\r\n```text\r\n===============================\r\n  Grok 推特检索引擎 (多模态)\r\n===============================\r\n当前代理: socks5://127.0.0.1:40000\r\n1. 极速检索推文 (低成本，grok-4-1-fast)\r\n2. 深度舆情分析 (附带推理，grok-4-1-fast-reasoning)\r\n0. 退出程序\r\n===============================\r\n请输入数字选择功能: \r\n```\r\n\r\n---\r\n\r\n## 🧠 Agent 触发话术指南\r\n\r\n配置完成后，在 OpenClaw 前端对话框中直接下达指令。Agent 会根据你的意图**自动路由**模型：\r\n\r\n* **触发极速模式（省钱省时）**：\r\n  🗣️ *\"帮我搜索马斯克最新推文\"*\r\n  🗣️ *\"看看今天推特上关于 Solana 的最新消息\"*\r\n* **触发深度分析模式（启用 Reasoning 推理链）**：\r\n  🗣️ *\"深度分析一下推特上关于比特币突破 10 万大关的市场情绪和看涨逻辑\"*\r\n\r\n---\r\n\r\n## 🛠️ 故障排查\r\n\r\n| 错误表现 | 排查方向 | 解决方案 |\r\n|----------|----------|----------|\r\n| `Request timeout` | WARP 未启动或代理端口错误 | `sudo systemctl status warp-svc`，检查 `40000` 端口 |\r\n| `401 Unauthorized` | API Key 错误或未加载 | 运行 `openclaw gateway restart` 重载环境 |\r\n| `JSONDecodeError` | LLM 输出了冗余文本 | 确保使用最新的 `search_twitter.py` 原生拦截版代码 |","readmeExcerpt":"Skill: Grok Twitter Search Owner: tech-melon Summary: 使用 xAI Grok 模型的 x_search 工具智能搜索 Twitter 内容。首创 Fast/Reasoning 双引擎动态路由，支持 SOCKS5 代理（WARP）精准流量分流。相比官方 X API 成本呈断崖式下降（实测约 $2.8/千次），语义理解更强、结果更智能。当用户需要搜索推特、监控舆情、分析... Tags: latest:1.0.2 Version history: v1.0.2 | 2026-03-05T10:09:58.155Z | user 修复 Grok 解析逻辑，要求返回结构化 JSON，新增与 opentwitter 分工文档 v1.0.1 | 2026-03-03T15:50:38.033Z | auto - Major cleanup: removed 9 legacy and he","codeSnippets":[],"executableExamples":[{"language":"text","snippet":"Authorization: Bearer $OPENNEWS_TOKEN"},{"language":"bash","snippet":"curl -s -H \"Authorization: Bearer $OPENNEWS_TOKEN\" \\"},{"language":"bash","snippet":"curl -s -H \"Authorization: Bearer $OPENNEWS_TOKEN\" \\\n  \"https://ai.6551.io/open/news_type\""},{"language":"bash","snippet":"curl -s -X POST \"https://ai.6551.io/open/news_search\" \\\n  -H \"Authorization: Bearer $OPENNEWS_TOKEN\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\"limit\": 10, \"page\": 1}'"},{"language":"bash","snippet":"curl -s -X POST \"https://ai.6551.io/open/news_search\" \\\n  -H \"Authorization: Bearer $OPENNEWS_TOKEN\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\"limit\": 10, \"page\": 1}'"},{"language":"bash","snippet":"curl -s -X POST \"https://ai.6551.io/open/news_search\" \\\n  -H \"Authorization: Bearer $OPENNEWS_TOKEN\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\"q\": \"bitcoin ETF\", \"limit\": 10, \"page\": 1}'"}],"parameters":null,"dependencies":[],"permissions":[],"extractedFiles":[{"path":"opennews-mcp/openclaw-skill/opennews/SKILL.md","content":"---\nname: opennews\ndescription: Crypto news search, AI ratings, trading signals, and real-time updates via the OpenNews 6551 API. Supports keyword search, coin filtering, source filtering, AI score ranking, and WebSocket live feeds.\n\nuser-invocable: true\nmetadata:\n  openclaw:\n    requires:\n      env:\n        - OPENNEWS_TOKEN\n      bins:\n        - curl\n    primaryEnv: OPENNEWS_TOKEN\n    emoji: \"\\U0001F4F0\"\n    install:\n      - id: curl\n        kind: brew\n        formula: curl\n        label: curl (HTTP client)\n    os:\n      - darwin\n      - linux\n      - win32\n  version: 1.0.0\n---\n\n# OpenNews Crypto News Skill\n\nQuery crypto news from the 6551 platform REST API. All endpoints require a Bearer token via `$OPENNEWS_TOKEN`.\n\n**Get your token**: https://6551.io/mcp\n\n**Base URL**: `https://ai.6551.io`\n\n## Authentication\n\nAll requests require the header:\n```\nAuthorization: Bearer $OPENNEWS_TOKEN\n```\n\n---\n\n## News Operations\n\n### 1. Get News Sources\n\nFetch all available news source categories organized by engine type.\n\n```bash\ncurl -s -H \"Authorization: Bearer $OPENNEWS_TOKEN\" \\\n  \"https://ai.6551.io/open/news_type\"\n```\n\nReturns a tree with engine types (`news`, `listing`, `onchain`, `meme`, `market`) and their sub-categories.\n\n### 2. Search News\n\n`POST /open/news_search` is the primary search endpoint.\n\n**Get latest news:**\n```bash\ncurl -s -X POST \"https://ai.6551.io/open/news_search\" \\\n  -H \"Authorization: Bearer $OPENNEWS_TOKEN\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\"limit\": 10, \"page\": 1}'\n```\n\n**Search by keyword:**\n```bash\ncurl -s -X POST \"https://ai.6551.io/open/news_search\" \\\n  -H \"Authorization: Bearer $OPENNEWS_TOKEN\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\"q\": \"bitcoin ETF\", \"limit\": 10, \"page\": 1}'\n```\n\n**Search by coin symbol:**\n```bash\ncurl -s -X POST \"https://ai.6551.io/open/news_search\" \\\n  -H \"Authorization: Bearer $OPENNEWS_TOKEN\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\"coins\": [\"BTC\"], \"limit\": 10, \"page\": 1}'\n```\n\n**Filter by engine type and news type:**\n```bash\ncurl -s -X POST \"https://ai.6551.io/open/news_search\" \\\n  -H \"Authorization: Bearer $OPENNEWS_TOKEN\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\"engineTypes\": {\"news\": [\"Bloomberg\", \"Reuters\"]}, \"limit\": 10, \"page\": 1}'\n```\n\n**Only news with coins:**\n```bash\ncurl -s -X POST \"https://ai.6551.io/open/news_search\" \\\n  -H \"Authorization: Bearer $OPENNEWS_TOKEN\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\"hasCoin\": true, \"limit\": 10, \"page\": 1}'\n```\n\n### News Search Parameters\n\n| Parameter     | Type                      | Required | Description                                   |\n|--------------|---------------------------|----------|-----------------------------------------------|\n| `limit`      | integer                   | yes      | Max results per page (1-100)                  |\n| `page`       | integer                   | yes      | Page number (1-based)                         |\n| `q`          | string                    | no       |"},{"path":"opentwitter-mcp/openclaw-skill/opentwitter/SKILL.md","content":"---\nname: opentwitter\ndescription: Twitter/X data via the 6551 API. Supports user profiles, tweet search, user tweets, follower events, deleted tweets, and KOL followers.\n\nuser-invocable: true\nmetadata:\n  openclaw:\n    requires:\n      env:\n        - TWITTER_TOKEN\n      bins:\n        - curl\n    primaryEnv: TWITTER_TOKEN\n    emoji: \"\\U0001F426\"\n    install:\n      - id: curl\n        kind: brew\n        formula: curl\n        label: curl (HTTP client)\n    os:\n      - darwin\n      - linux\n      - win32\n  version: 1.0.0\n---\n\n# Twitter/X Data Skill\n\nQuery Twitter/X data from the 6551 platform REST API. All endpoints require a Bearer token via `$TWITTER_TOKEN`.\n\n**Get your token**: https://6551.io/mcp\n\n**Base URL**: `https://ai.6551.io`\n\n## Authentication\n\nAll requests require the header:\n```\nAuthorization: Bearer $TWITTER_TOKEN\n```\n\n---\n\n## Twitter Operations\n\n### 1. Get Twitter User Info\n\nGet user profile by username.\n\n```bash\ncurl -s -X POST \"https://ai.6551.io/open/twitter_user_info\" \\\n  -H \"Authorization: Bearer $TWITTER_TOKEN\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\"username\": \"elonmusk\"}'\n```\n\n### 2. Get Twitter User by ID\n\nGet user profile by numeric ID.\n\n```bash\ncurl -s -X POST \"https://ai.6551.io/open/twitter_user_by_id\" \\\n  -H \"Authorization: Bearer $TWITTER_TOKEN\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\"userId\": \"44196397\"}'\n```\n\n### 3. Get User Tweets\n\nGet recent tweets from a user.\n\n```bash\ncurl -s -X POST \"https://ai.6551.io/open/twitter_user_tweets\" \\\n  -H \"Authorization: Bearer $TWITTER_TOKEN\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\"username\": \"elonmusk\", \"maxResults\": 20, \"product\": \"Latest\"}'\n```\n\n| Parameter         | Type    | Default  | Description                    |\n|------------------|---------|----------|--------------------------------|\n| `username`       | string  | required | Twitter username (without @)   |\n| `maxResults`     | integer | 20       | Max tweets (1-100)             |\n| `product`        | string  | \"Latest\" | \"Latest\" or \"Top\"              |\n| `includeReplies` | boolean | false    | Include reply tweets           |\n| `includeRetweets`| boolean | false    | Include retweets               |\n\n### 4. Search Twitter\n\nSearch tweets with various filters.\n\n```bash\ncurl -s -X POST \"https://ai.6551.io/open/twitter_search\" \\\n  -H \"Authorization: Bearer $TWITTER_TOKEN\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\"keywords\": \"bitcoin\", \"maxResults\": 20, \"product\": \"Top\"}'\n```\n\n**Search from specific user:**\n```bash\ncurl -s -X POST \"https://ai.6551.io/open/twitter_search\" \\\n  -H \"Authorization: Bearer $TWITTER_TOKEN\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\"fromUser\": \"VitalikButerin\", \"maxResults\": 20}'\n```\n\n**Search by hashtag:**\n```bash\ncurl -s -X POST \"https://ai.6551.io/open/twitter_search\" \\\n  -H \"Authorization: Bearer $TWITTER_TOKEN\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\"hashtag\": \"crypto\", \"minLikes\": 100, \"maxResults\": 20}'\n```\n\n### Twitter Search Parameters\n\n| P"},{"path":"skills/four-meme-ai/SKILL.md","content":"---\r\nname: four-meme-ai\r\ndescription: |\r\n  CLI tool for creating and trading meme tokens on Four.Meme (BSC), with structured JSON outputs for config, token details, pricing quotes, on-chain events, and TaxToken fee configuration.\r\n\r\n  \r\n\r\nallowed-tools:\r\n  - Bash(fourmeme *)\r\n  - Bash(npx fourmeme *)\r\nlicense: MIT\r\nmetadata:\r\n  {\"author\":\"Four.meme AI Skill\",\"version\":\"1.0.0\",\"openclaw\":{\"requires\":{\"env\":[\"PRIVATE_KEY\"]},\"primaryEnv\":\"PRIVATE_KEY\",\"optionalEnv\":[\"BSC_RPC_URL\"]}}\r\n---\r\n\r\n## [Agent must follow] User agreement and security notice on first use\r\n\r\nWhen responding to any user request about fourmeme or this skill, **you must first** present the content below in this order: **User Agreement, then Security Notice**, and state clearly that by choosing to continue, the user agrees to the User Agreement.  \r\nUntil the user has explicitly agreed or confirmed to continue, **do not** run `create-api`, `create-chain`, `buy`, `sell`, `send`, or `8004-register` (any operation that uses the private key or writes to the chain). Read-only commands (e.g. `config`, `token-info`, `quote-buy`, `8004-balance`) may be run while or after presenting the notice.\r\n\r\n**Language selection**: Present the User Agreement and Security Notice **in the user’s language**. If the user is writing in **Traditional Chinese (繁體中文)**, use the **繁體中文** block below; otherwise use the **English** block.\r\n\r\n---\r\n\r\n### User Agreement & Security Notice (繁體中文)\r\n\r\n**用戶協議**\r\n\r\n**前情提示**：使用本插件及本 skill 所涉功能（包括但不限於代幣創建、買賣、轉帳、8004 註冊等）前，請您閱讀以下協議。**若您選擇繼續使用本插件及本 skill 功能，即表示您已閱讀、理解並同意本協議。**\r\n\r\n**本插件性質與責任限制**：本插件僅提供純本地的命令列互動能力（私鑰透過環境變數或本地設定使用），**不會收集、上傳或儲存您的私鑰**。因任何原因（包括但不限於插件被竄改、環境遭入侵、誤操作、第三方插件等）導致的私鑰洩露或資產損失，**本插件及提供方不承擔責任**。\r\n\r\n**安全警示**\r\n\r\n使用本插件進行代幣創建、買賣、轉帳等操作時，請務必注意：\r\n\r\n- **保護私鑰**：切勿在聊天對話中輸入、貼上或洩露私鑰；不要將私鑰分享給任何人或任何第三方。\r\n- **交易錢包僅存小額資金**：用於執行操作的錢包（即提供 PRIVATE_KEY 的錢包）建議只存放少量資金，以降低因洩露或誤操作導致的損失。\r\n- **及時轉出資金**：完成交易後，請及時將交易錢包中的資產轉移到您自己控制的、更安全的錢包或冷錢包中。\r\n- **謹慎安裝 Agent／插件**：下載或安裝任何 Agent、瀏覽器插件或第三方工具時，請確認來源可信，避免惡意插件竊取私鑰或助記詞。\r\n\r\n---\r\n\r\n### User Agreement & Security Notice (English)\r\n\r\n**User Agreement**\r\n\r\n**Notice**: Before using this plugin and this skill (including but not limited to token creation, buy/sell, transfers, 8004 registration), please read the following. **By choosing to continue using this plugin and this skill, you have read, understood, and agreed to this agreement.**\r\n\r\n**Plugin nature and limitation of liability**: This plugin provides local-only CLI interaction (private key is used via environment or local config). It **does not collect, upload, or store your private key**. The plugin and its providers **are not liable** for private key disclosure or asset loss due to any cause (including but not limited to tampered plugin, compromised environment, user error, or third-party plugins).\r\n\r\n**Security Notice**\r\n\r\nWhen using this plugin for token creation, trading, or transfers, please:\r\n\r\n- **Protect your private key**: Do not type, paste, or expose your private key in chat; do n"},{"path":"skills/grok-twitter-search/SKILL.md","content":"---\r\nname: grok-twitter-search\r\ndescription: 使用 xAI Grok 模型的 x_search 工具智能搜索 Twitter 内容。首创 Fast/Reasoning 双引擎动态路由，支持 SOCKS5 代理（WARP）精准流量分流。相比官方 X API 成本呈断崖式下降（实测约 $2.8/千次），语义理解更强、结果更智能。当用户需要搜索推特、监控舆情、分析热点话题、获取实时推文数据时使用此技能。\r\nmetadata:\r\n  {\r\n    \"openclaw\":\r\n      {\r\n        \"emoji\": \"🐦\",\r\n        \"homepage\": \"https://github.com/your-repo/grok-twitter-search\",\r\n        \"requires\": { \"bins\": [\"uv\", \"curl\"], \"env\": [\"GROK_API_KEY\"] },\r\n        \"primaryEnv\": \"GROK_API_KEY\",\r\n      },\r\n  }\r\n---\r\n\r\n# Grok Twitter Search Skill\r\n\r\n基于 xAI `grok-4-1-fast` 与 `grok-4-1-fast-reasoning` 双擎驱动的推特原生数据检索引擎。\r\n\r\n## 核心优势\r\n\r\n| 特性 | Grok x_search (本技能) | X 官方 API (Basic) |\r\n|------|------------------------|-------------------|\r\n| **计费方式** | **按 Token 计费 (实测约 $2.8/千次)** | $100 / 月固定月租 |\r\n| **检索逻辑** | ✅ 智能自然语言语义提取，自带 LLM 降噪 | ❌ 仅支持严格的布尔逻辑匹配 |\r\n| **模型支持** | ✅ 使用 `grok-4-1-fast-reasoning`（唯一支持 x_search 工具的模型） | ❌ 单一数据返回 |\r\n| **中文支持** | ✅ 深度优化，理解上下文隐喻 | ⚠️ 效果一般 |\r\n\r\n## 快速开始\r\n\r\n### 方式 1: 交互式配置（推荐首次使用）\r\n\r\n```bash\r\nuv run {baseDir}/scripts/setup_interactive.py\r\n```\r\n\r\n这个向导会引导你完成：\r\n- ✅ 检查系统依赖 (uv, curl)\r\n- ✅ 检测 WARP 代理状态\r\n- ✅ 配置 Grok API Key\r\n- ✅ 选择代理模式\r\n- ✅ 测试连接\r\n- ✅ 自动保存配置到 openclaw.json\r\n\r\n### 方式 2: 手动配置\r\n\r\n如果你更喜欢手动配置，可以继续阅读下面的详细说明。\r\n\r\n## 使用方法\r\n\r\n建议使用 `uv` 运行以保证依赖隔离与环境纯净：\r\n\r\n### 极速检索模式（默认，超低成本）\r\n```bash\r\nuv run {baseDir}/scripts/search_twitter.py --query \"{搜索内容}\" --max-results 10\r\n```\r\n\r\n### 深度舆情分析模式（调用 Reasoning 模型）\r\n```bash\r\nuv run {baseDir}/scripts/search_twitter.py --query \"{搜索内容}\" --max-results 10 --analyze\r\n```\r\n\r\n### 参数说明\r\n\r\n| 参数 | 类型 | 必填 | 默认值 | 说明 |\r\n|------|------|------|--------|------|\r\n| `--query` | string | 是 | - | 搜索查询（支持自然语言） |\r\n| `--max-results` | int | 否 | 10 | 最大返回结果数 |\r\n| `--analyze` | flag | 否 | False | 启用 Reasoning 推理模型进行深度舆情总结 |\r\n| `--api-key` | string | 否 | 读环境变量 | 优先读取 `GROK_API_KEY` |\r\n| `--proxy` | string | 否 | auto-detect | SOCKS5 代理地址（自动检测 WARP） |\r\n\r\n## 代理配置（WARP 智能检测）\r\n\r\n本技能支持三种代理配置方式，优先级从高到低：\r\n\r\n### 1. 显式配置（最高优先级）\r\n在 `~/.openclaw/openclaw.json` 中设置：\r\n```json5\r\n{\r\n  skills: {\r\n    entries: {\r\n      \"grok-twitter-search\": {\r\n        enabled: true,\r\n        env: {\r\n          SOCKS5_PROXY: \"socks5://127.0.0.1:40000\",\r\n          GROK_API_KEY: \"your_api_key_here\"\r\n        }\r\n      }\r\n    }\r\n  }\r\n}\r\n```\r\n\r\n### 2. 环境变量\r\n```bash\r\nexport SOCKS5_PROXY=\"socks5://127.0.0.1:40000\"\r\nexport GROK_API_KEY=\"your_api_key_here\"\r\n```\r\n\r\n### 3. 自动检测（默认行为）\r\n脚本会自动检测 WARP 代理：\r\n- 检查 `warp-svc` 进程是否在运行\r\n- 检查端口 40000 是否在监听\r\n- 如果检测到 WARP，自动使用 `socks5://127.0.0.1:40000`\r\n- 如果未检测到代理但直连可用，则直连访问\r\n\r\n### 检查 WARP 状态\r\n```bash\r\nbash {baseDir}/scripts/check_warp.sh\r\n```\r\n\r\n## 输出格式 (纯净提取)\r\n\r\n引擎剥离了冗余的 LLM 文本，直接返回原生 Tool Call 拦截数据：\r\n\r\n```json\r\n{\r\n  \"status\": \"success\",\r\n  \"query\": \"elon musk\",\r\n  \"tweets\": [\r\n    {\r\n      \"author\": \"@elonmusk\",\r\n      \"content\": \"推文内容...\",\r\n      \"timestamp\": \"2026-02-26T10:00:00Z\",\r\n      \"likes\": 1234,\r\n      \"retweets\": 567,\r\n      \"url\": \"https://x.com/elonmusk/status/123...\"\r\n    }\r\n  ],\r\n  \"model_used\": \"grok-4-1-fast-reasoning\",\r\n  \"x_search_cal"},{"path":"skills/qmd-memory/SKILL.md","content":"---\nname: qmd-memory\ndescription: |\n  QMD 本地记忆向量检索系统 - 使用 BM25 全文检索替代全量上下文注入，大幅减少 token 消耗。\n  支持记忆索引构建、检索、添加功能。\nallowed-tools:\n  - Bash(qmd-*)\n  - Bash(node qmd-*)\nlicense: MIT\nmetadata:\n  {\"author\":\"OpenClaw\",\"version\":\"1.0.0\"}\n---\n\n## QMD Memory Skill\n\n### 概述\n\nQMD (Quick Memory Database) 是一个**纯本地**的记忆检索系统，使用 BM25 全文检索算法，无需下载向量模型，无需外部 API。\n\n**优势：**\n- 🚀 速度快 - 毫秒级检索\n- 💾 纯本地 - 无需网络、无需 API\n- 📉 省 token - 只注入相关记忆 (top-k)，而非全量\n- 🔒 隐私安全 - 所有数据在本地\n\n### 命令\n\n| 命令 | 说明 | 示例 |\n|------|------|------|\n| `qmd-index` | 构建/重建记忆索引 | `cd ~/workspace/qmd && node qmd-index.js` |\n| `qmd-search <查询> [limit]` | 检索记忆 | `node qmd-search.js \"代币创建\" 5` |\n| `qmd-add <内容>` | 添加记忆并重建索引 | `node qmd-add.js \"用户喜欢喝咖啡\"` |\n\n### 工作流程\n\n```\n用户提问\n    ↓\nmemory_search (调用 qmd-search)\n    ↓\nBM25 检索 top-k 相关记忆\n    ↓\n只注入相关片段到上下文 (而非全部 MEMORY.md)\n    ↓\nLLM 回答\n```\n\n### 集成到 OpenClaw\n\n在 OpenClaw 的 `memory_search` 工具中，可以调用此 skill 进行检索：\n\n```bash\ncd /Users/ben/.openclaw/workspace/qmd && node qmd-search.js \"<查询文本>\" 5\n```\n\n返回 JSON 格式结果，解析后注入上下文。\n\n### 文件结构\n\n```\n/Users/ben/.openclaw/workspace/\n├── MEMORY.md              # 长期记忆 ( curated )\n├── memory/\n│   └── YYYY-MM-DD.md      # 每日记忆 ( raw logs )\n├── qmd/\n│   ├── qmd-index.js       # 索引构建脚本\n│   ├── qmd-search.js      # 检索脚本\n│   ├── qmd-add.js         # 添加记忆脚本\n│   └── package.json\n└── qmd-index/\n    └── bm25-index.json    # BM25 索引文件\n```\n\n### 性能对比\n\n| 方案 | Token 消耗 | 响应速度 | 网络依赖 |\n|------|-----------|---------|---------|\n| 原方案 (全量注入) | 100% | 快 | 无 |\n| QMD (top-5 检索) | ~20% | 快 | 无 |\n\n**节省约 80% token 消耗！**\n\n### 使用示例\n\n**1. 构建索引**\n```bash\ncd /Users/ben/.openclaw/workspace/qmd\nnode qmd-index.js\n```\n\n**2. 检索记忆**\n```bash\nnode qmd-search.js \"用户偏好\" 3\n```\n\n**3. 添加新记忆**\n```bash\nnode qmd-add.js \"用户说下周要去上海出差\"\n```\n\n### 注意事项\n\n- 索引文件 `bm25-index.json` 是纯文本 JSON，可版本控制\n- 每次添加记忆后会自动重建索引\n- 支持中文和英文混合检索\n- 建议定期清理过期的每日记忆文件"}],"languages":[],"docsSourceLabel":"CLAWHUB","editorialOverview":"使用 xAI Grok 模型的 x_search 工具智能搜索 Twitter 内容。首创 Fast/Reasoning 双引擎动态路由，支持 SOCKS5 代理（WARP）精准流量分流。相比官方 X API 成本呈断崖式下降（实测约 $2.8/千次），语义理解更强、结果更智能。当用户需要搜索推特、监控舆情、分析... Skill: Grok Twitter Search Owner: tech-melon Summary: 使用 xAI Grok 模型的 x_search 工具智能搜索 Twitter 内容。首创 Fast/Reasoning 双引擎动态路由，支持 SOCKS5 代理（WARP）精准流量分流。相比官方 X API 成本呈断崖式下降（实测约 $2.8/千次），语义理解更强、结果更智能。当用户需要搜索推特、监控舆情、分析... Tags: latest:1.0.2 Version history: v1.0.2 | 2026-03-05T10:09:58.155Z | user 修复 Grok 解析逻辑，要求返回结构化 JSON，新增与 opentwitter 分工文档 v1.0.1 | 2026-03-03T15:50:38.033Z | auto - Major cleanup: removed 9 legacy and he","editorialQuality":{"score":100,"threshold":65,"status":"ready","wordCount":1395,"uniquenessScore":46,"reasons":[]}},"media":{"evidence":{"source":"no-media","verified":false,"confidence":"low","updatedAt":"2026-10-11T02:17:22.276Z","emptyReason":"No screenshots, media assets, or demo links are available."},"primaryImageUrl":null,"mediaAssetCount":0,"assets":[],"demoUrl":null},"ownerResources":{"evidence":{"source":"unclaimed","verified":false,"confidence":"low","updatedAt":"2026-10-11T02:17:22.276Z","emptyReason":"This page has not been claimed by the agent owner."},"hasCustomPage":false,"customPageUpdatedAt":null,"customLinks":[],"structuredLinks":{"docsUrl":null,"demoUrl":null,"supportUrl":null,"pricingUrl":null,"statusUrl":null},"customPage":null},"relatedAgents":{"evidence":{"source":"protocol-neighbors","verified":false,"confidence":"medium","updatedAt":"2026-10-11T04:34:48.825Z","emptyReason":null},"items":[{"id":"8ebccd8e-3863-4187-8355-c3f14e1f9edf","entityType":"agent","canonicalPath":"/agent/iofficeai-aionui","slug":"iofficeai-aionui","name":"AionUi","description":"Free, local, open-source 24/7 Cowork app and OpenClaw for Gemini CLI, Claude Code, Codex, OpenCode, Qwen Code, Goose CLI, Auggie, and more | 🌟 Star if you like it!","url":"https://github.com/iOfficeAI/AionUi","homepage":"https://www.aionui.com","source":"GITHUB_REPOS","protocols":["MCP","OPENCLAW"],"capabilities":[],"safetyScore":100,"overallRank":70,"updatedAt":"2026-10-09T19:11:12.944Z","createdAt":"2026-02-25T03:38:16.584Z","downloads":null},{"id":"b917f68a-ebff-438e-84f8-3f4b2494c0bc","entityType":"agent","canonicalPath":"/agent/activepieces-activepieces","slug":"activepieces-activepieces","name":"activepieces","description":"AI Agents & MCPs & AI Workflow Automation • (~400 MCP servers for AI agents) • AI Automation / AI Agent with MCPs • AI Workflows & AI Agents • MCPs for AI Agents","url":"https://github.com/activepieces/activepieces","homepage":"https://www.activepieces.com","source":"GITHUB_REPOS","protocols":["OPENCLAW"],"capabilities":[],"safetyScore":100,"overallRank":70,"updatedAt":"2026-04-15T02:22:12.426Z","createdAt":"2026-02-25T03:38:12.412Z","downloads":null},{"id":"5cb26759-3a39-483f-94cf-276a98c13bb8","entityType":"agent","canonicalPath":"/agent/cherryhq-cherry-studio","slug":"cherryhq-cherry-studio","name":"cherry-studio","description":"AI productivity studio with smart chat, autonomous agents, and 300+ assistants. Unified access to frontier LLMs","url":"https://github.com/CherryHQ/cherry-studio","homepage":"https://cherry-ai.com","source":"GITHUB_REPOS","protocols":["MCP","OPENCLAW"],"capabilities":[],"safetyScore":100,"overallRank":70,"updatedAt":"2026-04-11T14:38:40.986Z","createdAt":"2026-02-25T03:38:19.379Z","downloads":null},{"id":"6f6582d0-5d76-4f0f-b81d-86520247950b","entityType":"agent","canonicalPath":"/agent/copilotkit-copilotkit","slug":"copilotkit-copilotkit","name":"CopilotKit","description":"The Frontend for Agents & Generative UI. React + Angular","url":"https://github.com/CopilotKit/CopilotKit","homepage":"https://docs.copilotkit.ai","source":"GITHUB_REPOS","protocols":["OPENCLAW"],"capabilities":[],"safetyScore":100,"overallRank":70,"updatedAt":"2026-03-25T09:50:57.846Z","createdAt":"2026-02-25T03:39:14.617Z","downloads":null}],"links":{"hub":"/agent","source":"/agent/source/clawhub","protocols":[{"label":"OpenClaw","href":"/agent/protocol/openclew"}]}}}