subagent-driven-development
Dispatch fresh subagents per task with two-stage review (spec compliance, then code quality) in the current session.
Twitter/X data: fetch tweets, search, user profiles, followers, replies, trends. Use for any x.com or twitter.com URL or lookup (e.g. summarize this tweet, recent posts by @vitalikbuterin, search $SOL min_faves:50).
Full skill instructions
Read-only access to twitterapi.io endpoints. 13 functions covering tweets, users, followers, replies, threads, quotes, articles, and trends.
All requests go through sc-proxy via core.http_client.proxied_get. The
TWITTER_API_KEY env var is auto-injected server-side, no local key needed
on the agent machine.
Standard invocation pattern:
python3 - <<'EOF'
import sys, json
sys.path.insert(0, "/data/workspace/skills/twitter")
from exports import twitter_user_info, twitter_user_tweets
profile = twitter_user_info(username="vitalikbuterin")
print(json.dumps(profile, indent=2))
recent = twitter_user_tweets(username="vitalikbuterin")
print(f"got {len(recent.get('tweets', []))} tweets")
EOF
Tweet ID extraction from URL: the last path segment of any
x.com/{user}/status/{id} or twitter.com/{user}/status/{id} URL is the
tweet ID. Pass it as a string (Python int will lose precision on long IDs).
All 13 functions live in exports.py. Returns are dicts straight from
twitterapi.io — keys vary per endpoint, inspect once before scripting.
| Function | Description |
|---|---|
twitter_search_tweets(query, cursor=None) | Advanced search. Operators: from:user, to:user, #tag, $cashtag, lang:en, has:media, has:links, is:reply, min_faves:N, since:YYYY-MM-DD, until:YYYY-MM-DD. |
twitter_get_tweets(tweet_ids) | Fetch one or more tweets by ID. tweet_ids = list of strings (also accepts comma-string). |
twitter_tweet_replies(tweet_id, cursor=None) | Replies to a tweet. |
twitter_tweet_retweeters(tweet_id, cursor=None) | Users who retweeted. |
twitter_tweet_thread_context(tweet_id) | Full thread context (parents + direct replies). |
twitter_tweet_quote(tweet_id, cursor=None) | Quote tweets. |
twitter_get_article(tweet_id) | Long-form X article body. |
twitter_get_trends(woeid=None, country=None, category=None, limit=None) | Trending topics; all filters optional. |
| Function | Description |
|---|---|
twitter_user_info(username) | Profile: bio, follower/following counts, tweet count, verified. |
twitter_user_tweets(username, cursor=None) | User's recent tweets. |
twitter_user_followers(username, cursor=None) | Follower list. |
twitter_user_followings(username, cursor=None) | Accounts followed. |
twitter_search_users(query, cursor=None) | Search users by name/keyword. |
username is the handle WITHOUT @ (e.g. "elonmusk", not "@elonmusk").
Pagination: when a response includes next_cursor, pass it back as cursor
on the next call.
x.com/... or twitter.com/... URL → start here, NOT web_fetch
(Twitter blocks scrapers).twitter_get_tweets([tweet_id]).twitter_user_tweets.twitter_search_tweets("$SOL min_faves:50").twitter_get_trends.twitterapi.io bills per item actually returned, not per request and NOT by any "max_results" you ask for. sc-proxy charges = returned-item-count × unit (tweets 45 / profiles 54 / followers 45 credits; 100k credits = $1; 3× upstream). Min 1 item per request.
The last_tweets / user_tweets trap: the upstream
/twitter/user/last_tweets endpoint has no page-size parameter — it always
returns up to 20 tweets per page. There is no max_results / pageSize
lever, and twitter_user_tweets() does not accept one. So "I only need 5" still
fetches and bills for ~20. Slicing the result client-side does NOT save
money — the charge is already counted at the proxy from the upstream response.
This is the biggest, most common waste. twitter_user_tweets() (upstream
last_tweets) has no page-size param and always bills a full ~20-tweet
page every call, even when nothing new was posted. The official twitterapi.io
guide recommends the advanced_search endpoint instead, which our skill
already exposes as twitter_search_tweets():
# Cheap polling pattern — bills only the tweets actually in the window.
# When NO new tweet exists, the call is billed as 1 item (not 20).
import time
since = int(last_check_unix)
until = int(time.time())
q = f"from:{handle} include:nativeretweets since_time:{since} until_time:{until}"
res = twitter_search_tweets(q) # queryType defaults to Latest
Official pricing (upstream; our proxy bills 3×):
Per-call cost in our billing makes the difference obvious:
last_tweets → ~$0.009/call (20 tweets every time)advanced_search empty window → ~$0.00045/call (1 item) — ~20× cheaperFrequency vs monthly cost (single account, upstream): hourly $0.11 · 30min $0.22 · 15min $0.43 · 5min $1.30 · 1min $6.48.
get_tweets([ids]) when IDs are known — pay only for those exact
tweets, not a 20-item page.Note: twitterapi.io also sells a managed stream/webhook product. We do NOT subscribe to it — do not use the
/oapi/x_user_stream/*or/oapi/tweet_filter/*endpoints. For any account-monitoring need, the advanced_search polling pattern above is the correct and only approach here.
402 Credits is not enough → upstream proxy credits exhausted; tell user
to top up. Don't retry.429 → rate limited; surface to user, don't auto-retry.404 user not found → suggest verifying the handle spelling.This skill is script-mode (delivery: script). It does NOT register
runtime tools — agent must read_file SKILL.md and call functions via
bash + python3. The legacy tools.py / __init__.py files are kept
for backward compatibility but are no longer the preferred entry point.
Bump rules:
Dispatch fresh subagents per task with two-stage review (spec compliance, then code quality) in the current session.
ai image generation
ai video generation
agent tools
ai avatar video
Optimize content for discovery, citation, and visibility across AI search platforms and LLM assistants.
Official skill for integrating Firebase AI Logic (Gemini API) into web applications. Covers setup, multimodal inference, structured output, and security.
Guide for creating high-quality MCP (Model Context Protocol) servers that enable LLMs to interact with external services through well-designed tools. Use when building MCP servers to integrate external APIs or services, whether in Python (FastMCP) or Node/TypeScript (MCP SDK).
Smart router across 11+ image models for text-to-image and image-to-image generation via RunComfy CLI.
Route across 10+ video models (HappyHorse, Kling, Seedance, Veo, Wan, Hailuo, Dreamina) for text-to-video, image-to-video, and video extension.
Create talking-head and avatar videos by routing audio + image across five specialized models.
Generate vocal songs, instrumentals, jingles, and game loops via smart model routing across ElevenLabs and ACE Step.
A tool to turn screen demos into automated workflows.
Automate Your Business Processes Effortlessly with Microsoft Power Automate
Deploy autonomous AI Agents effortlessly in your browser.
Automate Your Business with Cheat Layer's Cutting-Edge AI
Get sh*t done faster with AI-powered writing and task automation.
Create AI workflows with drag-and-drop simplicity.
Automate Your Tasks with AutoGPT by aliabid94
Extend your apps, accelerate work