purefeed

Monitors Twitter/X feeds with AI signal detection. Searches tweets semantically, manages signal detectors, generates human-sounding posts, checks AI detection scores, and publishes/schedules content to X via Typefully. Use when the user wants to browse their Twitter feed, find tweets about a topic, set up content monitoring, draft tweets from curated content, or publish to X/Twitter. Do NOT use for general Twitter browsing without a Purefeed account.

Safety Notice

This listing is from the official public ClawHub registry. Review SKILL.md and referenced scripts before running.

Copy this and send it to your AI assistant to learn

Install skill "purefeed" with this command: npx skills add poloniki/purefeed

Purefeed

API Base: https://purefeed.ai/api/v1 Auth: Authorization: Bearer $PUREFEED_API_KEY

Output Rules

Follow these rules for EVERY response that includes tweet data:

  1. Format ALL screen names as clickable links: [@screen_name](https://x.com/screen_name). Never output plain @screen_name.
  2. Format ALL tweet references as clickable links: [Tweet](https://x.com/screen_name/status/tweet_id).
  3. Include view count with eye emoji: 👁 81K.
  4. Sort by views or engagement descending unless user requests otherwise.

Example output line:

[@CryptoAyor](https://x.com/CryptoAyor) 👁 81K — detailed thread about $JELLY manipulation

Setup

  1. Get API key at purefeed.ai/profilePublic API KeysCreate Key
  2. Set it: openclaw config set skills.purefeed.env.PUREFEED_API_KEY "pf_live_YOUR_KEY"
  3. Verify: curl -s https://purefeed.ai/api/v1/auth/me -H "Authorization: Bearer $PUREFEED_API_KEY"

Tool Dependencies

list styles ──→ styleId ──→ generate post
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 ──→ generate post / get signal insights
generate post ──→ draft text ──→ humanize post ──→ publish / schedule / draft / queue

Always list styles before generating a post. Always list signals before signal-specific calls.

How to Find Tweets by Topic

Follow this exact sequence when the user asks "what's new about X?" or "find tweets about Y".

Step 1 — Find a matching active signal

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.

Step 2 — Get matches from that signal

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.

Step 3 — Fall back to feed search ONLY if no signal found

GET /feed?limit=20&search=TOPIC
POST /search → {"query": "topic description", "limit": 20}

Step 4 — Filter feed by signal IDs (optional)

GET /feed?signal_ids={id1},{id2}&limit=20

Use signal IDs from Step 1 (GET /signals).

Workflows

Find and share tweets

  1. Find tweets using the strategy above
  2. GET /styles — pick a writing style
  3. POST /studio/generate — generate post from tweet IDs + styleId
  4. POST /studio/humanize — if score ≤ 30 use as-is, if > 30 use rewrite
  5. POST /studio/publish — publish to X

Set up monitoring

  1. POST /signals — create signal with name + description + tags + color + cron + timezone (auto-activates)
  2. Wait up to 6 hours for processing
  3. GET /signals/{id}/matches — check results
  4. PUT /signals/{id} — refine description if too many irrelevant matches

First run

  1. GET /auth/me — verify API key
  2. GET /styles — cache writing styles
  3. GET /signals — see signal configurations
  4. GET /folders — see bookmark folders

Key Concepts

  • Signal: AI content detector with a name + description. Active if signals_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).
  • Writing Style: Named instruction set for post generation. Must call GET /styles to get valid styleId before generating.
  • Typefully: Publishing backend. Required for publish/schedule/draft/queue. If not connected, tell user to set it up in Purefeed settings.

Error Handling

ErrorAgent Action
401 UnauthorizedTell user to create new key at purefeed.ai/profile
429 Too Many RequestsWait and retry. Check Retry-After header
"No Typefully connection"Tell user to connect Typefully in Purefeed settings
"No LLM API keys configured"Tell user to add LLM API keys in Studio settings
"Writing style not found"Call GET /styles to get valid IDs
"Signal not found"Call GET /signals to get valid IDs

API Reference

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": "..." } } on error. Streaming endpoints return text/plain.

Endpoint Summary

MethodPathPurpose
GET/auth/meVerify API key
GET/feedTweets ranked by signal relevance
POST/searchFull-text search across matched tweets
GET/feed/signalsAI signal analysis for specific tweet IDs
GET/foldersList bookmark folders
POST/foldersCreate a folder ({ "name": "..." })
PATCH/folders/:idRename a folder ({ "name": "..." })
DELETE/folders/:idDelete a folder and its items
GET/folders/:id/tweetsTweets in a folder
POST/folders/:id/tweetsAdd tweet to folder ({ "tweet_id": "..." })
DELETE/folders/:id/tweets?tweet_id=XRemove tweet from folder
GET/signalsList signals (supports semantic search)
POST/signalsCreate + auto-activate a signal
GET/signals/:idSignal details
PUT/signals/:idUpdate signal
DELETE/signals/:idDelete signal (irreversible)
GET/signals/:id/matchesTweets matching a signal
GET/stylesList writing styles
POST/studio/generateGenerate tweet/thread (streaming)
POST/studio/humanizeAI detection score + rewrite (streaming)
POST/studio/publishPublish to X immediately
POST/studio/scheduleSchedule for specific time
POST/studio/draftSave as Typefully draft
POST/studio/queueAdd to next posting slot

Rate Limits

  • 60 requests/minute per API key
  • Streaming endpoints count as 1 request each
  • 429 responses include Retry-After header

Source Transparency

This detail page is rendered from real SKILL.md content. Trust labels are metadata-based hints, not a safety guarantee.

Related Skills

Related by shared tags or category signals.

General

Unified Memory

Provides a layered, atomic, and performant memory management system with structured recall, vector search, smart deduplication, compression, and lifecycle ma...

Registry SourceRecently Updated
1370Profile unavailable
General

Grok X Analyzer

Dynamic, Grok 4.3-inspired analyzer for X (Twitter) posts, threads, trends, user activity, and related data. Use when users mention X/Twitter URLs/posts, ask...

Registry SourceRecently Updated
1630Profile unavailable
General

Unified Memory V5

Provides a layered memory management system with atomic transactions, smart deduplication, vector search optimization, and lifecycle management for consisten...

Registry SourceRecently Updated
1190Profile unavailable
General

XiaChat MCP — AI Personality Matching

XiaChat MCP 集成 — AI 人格匹配、分身预聊天、Soul Square 角色聊天,Claude 直接调用 / XiaChat MCP — AI personality matching, avatar pre-chat, Soul Square persona chat in Claude. Use...

Registry SourceRecently Updated
3850Profile unavailable