Install
openclaw skills install purefeedMonitors Twitter/X feeds with AI signal detection. Searches tweets semantically, manages signal detectors, and organizes curated tweets into bookmark folders. Use when the user wants to browse their Twitter feed, find tweets about a topic, set up content monitoring, or organize bookmarks. Do NOT use for general Twitter browsing without a Purefeed account.
openclaw skills install purefeedAPI Base: https://purefeed.ai/api/v1
Auth: Authorization: Bearer $PUREFEED_API_KEY
Follow these rules for EVERY response that includes tweet data:
[@screen_name](https://x.com/screen_name). Never output plain @screen_name.[Tweet](https://x.com/screen_name/status/tweet_id).👁 81K.Example output line:
[@CryptoAyor](https://x.com/CryptoAyor) 👁 81K — detailed thread about $JELLY manipulation
openclaw config set skills.purefeed.env.PUREFEED_API_KEY "pf_live_YOUR_KEY"curl -s https://purefeed.ai/api/v1/auth/me -H "Authorization: Bearer $PUREFEED_API_KEY"list signals ──→ signal_id ──→ get/update/delete signal, get signal matches
list folders ──→ folder_id ──→ get/create/rename/delete folder, add/remove tweets
get feed / search / signal matches ──→ tweet_ids ──→ get signal insights
Always list signals before signal-specific calls.
Follow this exact sequence when the user asks "what's new about X?" or "find tweets about Y".
GET /signals?search=TOPIC&active=true
The search parameter uses semantic/vector search — search=ai finds "Artificial intelligence", "AI Research", etc. If empty, try broader terms or GET /signals?active=true to see all active signals.
GET /signals/{id}/matches?limit=20
Signal matches are the primary data source. They include AI-generated analysis (sentiment, category, insights). Do NOT skip to feed search.
GET /feed?limit=20&search=TOPIC
POST /search → {"query": "topic description", "limit": 20}
GET /feed?signal_ids={id1},{id2}&limit=20
Use signal IDs from Step 1 (GET /signals).
POST /signals — create signal with name + description + tags + color + cron + timezone (auto-activates)GET /signals/{id}/matches — check resultsPUT /signals/{id} — refine description if too many irrelevant matchesGET /folders — list foldersPOST /folders — create a folderPOST /folders/:id/tweets — add a tweet to a folderGET /folders/:id/tweets — review folder contentsGET /auth/me — verify API keyGET /signals — see signal configurationsGET /folders — see bookmark folderssignals_subscriptions is non-empty; inactive if []. When creating: always set tags and color, never set include_keywords unless user explicitly asks (they are very restrictive).POST /folders, populated via POST /folders/:id/tweets.| Error | Agent Action |
|---|---|
| 401 Unauthorized | Tell user to create new key at purefeed.ai/profile |
| 429 Too Many Requests | Wait and retry. Check Retry-After header |
| "Signal not found" | Call GET /signals to get valid IDs |
4xx responses may include an error.hint.action field — a plain-English instruction telling you how to self-correct on the next call (e.g. "List current signals via GET /api/v1/signals to refresh cached IDs"). When present, follow hint.action directly. hint.docs_url points to the canonical API docs for deeper context.
Read API_REFERENCE.md for full endpoint documentation, parameters, curl examples, and response shapes.
All endpoints return { "data": ..., "error": null } on success and { "data": null, "error": { "message": "...", "code": "...", "hint"?: { "action": "...", "docs_url"?: "..." } } } on error.
| Method | Path | Purpose |
|---|---|---|
| GET | /auth/me | Verify API key |
| GET | /feed | Tweets ranked by signal relevance |
| POST | /search | Full-text search across matched tweets |
| GET | /feed/signals | AI signal analysis for specific tweet IDs |
| GET | /folders | List bookmark folders |
| POST | /folders | Create a folder ({ "name": "..." }) |
| PATCH | /folders/:id | Rename a folder ({ "name": "..." }) |
| DELETE | /folders/:id | Delete a folder and its items |
| GET | /folders/:id/tweets | Tweets in a folder |
| POST | /folders/:id/tweets | Add tweet to folder ({ "tweet_id": "..." }) |
| DELETE | /folders/:id/tweets?tweet_id=X | Remove tweet from folder |
| GET | /signals | List signals (supports semantic search) |
| POST | /signals | Create + auto-activate a signal |
| GET | /signals/:id | Signal details |
| PUT | /signals/:id | Update signal |
| DELETE | /signals/:id | Delete signal (irreversible) |
| GET | /signals/:id/matches | Tweets matching a signal |
Retry-After headerThese are web-app features not exposed via the public REST API — mention them only if the user is logged into purefeed.ai and asks about post curation:
/channels/{channelId}. Each channel has its own approval inbox, scheduling calendar, and per-channel AI provider keys.