Install
openclaw skills install tweet-ingestRead 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.
openclaw skills install tweet-ingestUse this skill whenever a Twitter/X URL appears in conversation and you need to read its content — single tweet, thread, or user profile.
Do NOT use for: sending/posting tweets (use Buffer — skills/buffer-publisher/SKILL.md), or monitoring streams in real-time.
# 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
| 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 |
apidojo/tweet-scraper at ~$0.40/1K tweets$5/mo free credit included — very low cost for occasional useAPIFY_API_KEY or 1Password op://OpenClaw/Apify API Credentials/credentialAlways 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: ...
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
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)
/Users/loki/.pyenv/versions/3.14.3/bin/python3