Purefeed
API Base: https://purefeed.ai/api/v1
Auth: INLINECODE1
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. - Format ALL tweet references as clickable links:
[Tweet](https://x.com/screen_name/status/tweet_id). - Include view count with eye emoji:
👁 81K. - Sort by views or engagement descending unless user requests otherwise.
Example output line:
CODEBLOCK0
Setup
- 1. Get API key at purefeed.ai/profile → Public API Keys → Create Key
- Set it: INLINECODE6
- Verify: INLINECODE7
Tool Dependencies
CODEBLOCK1
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
CODEBLOCK4
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
- INLINECODE12 — pick a writing style
- INLINECODE13 — generate post from tweet IDs + styleId
- INLINECODE14 — if score ≤ 30 use as-is, if > 30 use rewrite
- INLINECODE15 — publish to X
Set up monitoring
- 1.
POST /signals — create signal with name + description + tags + color + cron + timezone (auto-activates) - Wait up to 6 hours for processing
- INLINECODE17 — check results
- INLINECODE18 — refine description if too many irrelevant matches
First run
- 1.
GET /auth/me — verify API key - INLINECODE20 — cache writing styles
- INLINECODE21 — see signal configurations
- INLINECODE22 — 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
| 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 |
| "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
| 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 |
| GET | /styles | List writing styles |
| POST | /studio/generate | Generate tweet/thread (streaming) |
| POST | /studio/humanize | AI detection score + rewrite (streaming) |
| POST | /studio/publish | Publish to X immediately |
| POST | /studio/schedule | Schedule for specific time |
| POST | /studio/draft | Save as Typefully draft |
| POST | /studio/queue | Add 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
Purefeed
API 基础地址: https://purefeed.ai/api/v1
认证方式: Authorization: Bearer $PUREFEEDAPIKEY
输出规则
对于每条包含推文数据的响应,请遵循以下规则:
- 1. 将所有屏幕名称格式化为可点击链接:@screenname。切勿直接输出纯文本的 @screenname。
- 将所有推文引用格式化为可点击链接:Tweet。
- 使用眼睛表情符号包含查看次数:👁 81K。
- 除非用户另有要求,否则按查看次数或参与度降序排序。
示例输出行:
@CryptoAyor 👁 81K — 关于 $JELLY 操纵的详细讨论
设置
- 1. 在 purefeed.ai/profile → 公共 API 密钥 → 创建密钥 获取 API 密钥
- 设置密钥:openclaw config set skills.purefeed.env.PUREFEEDAPIKEY pfliveYOURKEY
- 验证:curl -s https://purefeed.ai/api/v1/auth/me -H Authorization: Bearer $PUREFEEDAPI_KEY
工具依赖关系
列出风格 ──→ styleId ──→ 生成帖子
列出信号 ──→ signal_id ──→ 获取/更新/删除信号,获取信号匹配结果
列出文件夹 ──→ folder_id ──→ 获取/创建/重命名/删除文件夹,添加/移除推文
获取信息流 / 搜索 / 信号匹配结果 ──→ tweet_ids ──→ 生成帖子 / 获取信号洞察
生成帖子 ──→ 草稿文本 ──→ 人性化处理帖子 ──→ 发布 / 定时发布 / 保存草稿 / 加入队列
在生成帖子之前始终先列出风格。在调用特定信号相关接口之前始终先列出信号。
如何按主题查找推文
当用户询问关于 X 有什么新消息?或查找关于 Y 的推文时,请严格遵循以下顺序。
步骤 1 — 查找匹配的活跃信号
GET /signals?search=TOPIC&active=true
search 参数使用语义/向量搜索 — search=ai 可以找到人工智能、AI 研究等。如果结果为空,尝试更宽泛的术语或使用 GET /signals?active=true 查看所有活跃信号。
步骤 2 — 从该信号获取匹配结果
GET /signals/{id}/matches?limit=20
信号匹配结果是主要数据来源。它们包含 AI 生成的分析(情感、类别、洞察)。不要跳过此步骤直接进行信息流搜索。
步骤 3 — 仅在未找到信号时回退到信息流搜索
GET /feed?limit=20&search=TOPIC
POST /search → {query: topic description, limit: 20}
步骤 4 — 按信号 ID 过滤信息流(可选)
GET /feed?signal_ids={id1},{id2}&limit=20
使用步骤 1(GET /signals)中的信号 ID。
工作流程
查找并分享推文
- 1. 使用上述策略查找推文
- GET /styles — 选择写作风格
- POST /studio/generate — 从推文 ID + styleId 生成帖子
- POST /studio/humanize — 如果分数 ≤ 30 则直接使用,如果 > 30 则使用改写版本
- POST /studio/publish — 发布到 X
设置监控
- 1. POST /signals — 创建信号,包含名称 + 描述 + 标签 + 颜色 + cron 表达式 + 时区(自动激活)
- 等待最多 6 小时进行处理
- GET /signals/{id}/matches — 检查结果
- PUT /signals/{id} — 如果无关匹配过多,优化描述
首次运行
- 1. GET /auth/me — 验证 API 密钥
- GET /styles — 缓存写作风格
- GET /signals — 查看信号配置
- GET /folders — 查看书签文件夹
关键概念
- - 信号: 具有名称和描述的 AI 内容检测器。如果 signalssubscriptions 非空则为活跃状态,如果为 [] 则为非活跃状态。创建时:始终设置 tags 和 color,除非用户明确要求,否则不要设置 includekeywords(该参数限制性很强)。
- 写作风格: 用于帖子生成的命名指令集。必须在生成前调用 GET /styles 获取有效的 styleId。
- Typefully: 发布后端。发布/定时发布/保存草稿/加入队列功能需要此服务。如果未连接,告知用户在 Purefeed 设置中进行配置。
错误处理
| 错误 | 代理操作 |
|---|
| 401 未授权 | 告知用户在 purefeed.ai/profile 创建新密钥 |
| 429 请求过多 |
等待并重试。检查 Retry-After 响应头 |
| 未连接 Typefully | 告知用户在 Purefeed 设置中连接 Typefully |
| 未配置 LLM API 密钥 | 告知用户在 Studio 设置中添加 LLM API 密钥 |
| 未找到写作风格 | 调用 GET /styles 获取有效 ID |
| 未找到信号 | 调用 GET /signals 获取有效 ID |
API 参考
阅读 API_REFERENCE.md 获取完整的端点文档、参数、curl 示例和响应格式。
所有端点成功时返回 { data: ..., error: null },错误时返回 { data: null, error: { message: ..., code: ... } }。流式端点返回 text/plain。
端点汇总
| 方法 | 路径 | 用途 |
|---|
| GET | /auth/me | 验证 API 密钥 |
| GET |
/feed | 按信号相关性排序的推文 |
| POST | /search | 对匹配的推文进行全文搜索 |
| GET | /feed/signals | 针对特定推文 ID 的 AI 信号分析 |
| GET | /folders | 列出书签文件夹 |
| POST | /folders | 创建文件夹({ name: ... }) |
| PATCH | /folders/:id | 重命名文件夹({ name: ... }) |
| DELETE | /folders/:id | 删除文件夹及其内容 |
| GET | /folders/:id/tweets | 文件夹中的推文 |
| POST | /folders/:id/tweets | 向文件夹添加推文({ tweet_id: ... }) |
| DELETE | /folders/:id/tweets?tweet_id=X | 从文件夹移除推文 |
| GET | /signals | 列出信号(支持语义搜索) |
| POST | /signals | 创建并自动激活信号 |
| GET | /signals/:id | 信号详情 |
| PUT | /signals/:id | 更新信号 |
| DELETE | /signals/:id | 删除信号(不可逆) |
| GET | /signals/:id/matches | 匹配信号的推文 |
| GET | /styles | 列出写作风格 |
| POST | /studio/generate | 生成推文/讨论串(流式) |
| POST | /studio/humanize | AI 检测分数 + 改写(流式) |
| POST | /studio/publish | 立即发布到 X |
| POST | /studio/schedule | 定时发布到指定时间 |
| POST | /studio/draft | 保存为 Typefully 草稿 |
| POST | /studio/queue | 添加到下一个发布时段 |
速率限制
- - 每个 API 密钥每分钟 60 次请求
- 流式端点每次计为 1 次请求
- 429 响应包含 Retry-After 响应头