360 Secure SkillHub
360 安全技能中心

Tweet Ingest

该技能通过Jina AI或Apify读取Twitter/X内容,支持单条(免费无API)、线程、主页三种模式。典型场景包括提取推特内容做总结/分析/RAG索引、获取线程上下文、收集账号近期推文。输入为推特URL及可选模式参数,输出为纯净Markdown(含错误提示),无需浏览器自动化,支持与RAG工具集成,具备优雅降级机制。

nissan
nissan
热度 33.10
最近更新 2026-05-22 04:09:04
分类:搜索依赖:代码执行 / 第三方 API应用场景:社交媒体 / 研究 / 摘要总结 / 数据处理 ...

安装技能

复制下面的话术发给你的 Agent,它会通过 secure-skills 检索并安装该技能。

执行命令安装此 skill: npx secure-skills-cli add tweet-ingest
Metadata
name
tweet-ingest
version
1.0.0
description
Read Twitter/X content (single tweet, thread, or user profile) from a URL via TwitterAPI.io. Use when a Twitter/X URL appears in conversation and you need to read its content without browser automation.
metadata
{"openclaw":{"emoji":"🐦","primaryEnv":"TWITTER_API_KEY","requires":{"env":["TWITTER_API_KEY"]},"network":{"outbound":true,"reason":"Fetches tweet content from TwitterAPI.io."}}}

Tweet Ingest Skill

Use this skill whenever a Twitter/X URL appears in conversation and you need to read its content — single tweet, thread, or user profile.

When to Use

  • A Twitter/X URL is shared and you need the text to summarise, analyse, or index
  • You want to fetch a tweet thread for context
  • You need recent tweets from a specific account for RAG or research
  • An agent needs Twitter content without an API key or paid subscription

Do NOT use for: sending/posting tweets (use Buffer — skills/buffer-publisher/SKILL.md), or monitoring streams in real-time.


Quick Reference

# Single tweet (default) — fast, free, no API key needed
python3 /Users/loki/.openclaw/workspace/scripts/tweet-ingest.py \
  https://x.com/solanamobile/status/2034675043033375103

# Thread — fetches tweet + replies by same author via Apify (costs small Apify credits)
python3 /Users/loki/.openclaw/workspace/scripts/tweet-ingest.py \
  https://x.com/solanamobile/status/2034675043033375103 --mode thread

# Profile — recent tweets from an account (requires Apify)
python3 /Users/loki/.openclaw/workspace/scripts/tweet-ingest.py \
  https://x.com/solanamobile --mode profile --max-tweets 20

# Pipe output to a file for RAG indexing
python3 /Users/loki/.openclaw/workspace/scripts/tweet-ingest.py \
  https://x.com/solanamobile/status/2034675043033375103 \
  > /Users/loki/.openclaw/workspace/content/tweets/solanamobile-grants.md

Modes

Mode Backend Cost Use Case
single (default) Jina AI (r.jina.ai) Free Grab one tweet's text + author + timestamp
thread Jina (root) + Apify Apify credits Full thread by same author
profile Apify Apify credits Recent tweets from an account

Apify credits

  • Actor: apidojo/tweet-scraper at ~$0.40/1K tweets
  • $5/mo free credit included — very low cost for occasional use
  • Key auto-loaded from env APIFY_API_KEY or 1Password op://OpenClaw/Apify API Credentials/credential

Output Format

Always clean markdown to stdout:

# Tweet Thread: @solanamobile
_Source: https://x.com/solanamobile/status/2034675043033375103_
_Fetched: 2026-03-20 09:00 AEST_

## Tweet 1 — @solanamobile (2026-03-19 21:44 UTC)
Solana Mobile Builder Grants are live...

## Tweet 2 — @solanamobile (2026-03-19 21:45 UTC)
Here's what qualifies...

Errors are also returned as markdown (never crashes):

# Tweet Ingest Error
> ❌ Jina fetch failed: ...

Graceful Degradation

  • No Apify key → thread/profile modes warn and fall back to single (or error for profile)
  • Apify returns no results → falls back to root tweet only with a warning note in the markdown
  • Jina timeout → error markdown, exit 1
  • Any unexpected error → error markdown, never a Python traceback to stdout

Integration with RAG

Pipe output directly into the RAG indexer:

python3 scripts/tweet-ingest.py https://x.com/solanamobile/status/... \
  > /tmp/tweet.md
python3 scripts/rag_index.py /tmp/tweet.md --collection agent-research-kb

Or in Python:

import subprocess
result = subprocess.run(
    ["python3", "scripts/tweet-ingest.py", url, "--mode", "single"],
    capture_output=True, text=True
)
markdown = result.stdout  # Clean markdown, ready to index

URL Formats Supported

https://x.com/username/status/TWEET_ID       → tweet, thread modes
https://twitter.com/username/status/TWEET_ID  → same (auto-normalised)
https://x.com/username                        → profile mode
https://twitter.com/username                  → same (auto-normalised)

Notes

  • Thread mode fetches the handle's recent tweets from Apify and filters to those matching the conversation. If Apify's window doesn't include the full thread (e.g., thread is old), it falls back to just the root tweet with a warning.
  • Profile mode returns tweets newest-first.
  • Jina parses tweet content as a logged-out user — no engagement metrics (likes/RTs) are returned in single mode.
  • Python path: /Users/loki/.pyenv/versions/3.14.3/bin/python3