ワンクリックで
Interact with Twitter/X -- fetch bookmarks, categorize content, draft tweets, post, and search.
Codex または Claude でインストール この Prompt をコピーして Codex、Claude、または他のアシスタントに貼り付けると、Skill ページを確認してインストールできます。
メニュー
Interact with Twitter/X -- fetch bookmarks, categorize content, draft tweets, post, and search.
Codex または Claude でインストール この Prompt をコピーして Codex、Claude、または他のアシスタントに貼り付けると、Skill ページを確認してインストールできます。
SOC 職業分類に基づく
Authoritative design discipline for WeftOS surfaces — tokens, composer-primitive usage, surface archetypes, empty/loading/offline contract, a11y floor, and OOB stock-desktop manifest. Use whenever creating, reviewing, or modifying a TOML surface fixture, the egui theming layer, or any user-visible WeftOS pane. Codifies docs/DESIGN.md and provides scaffold + audit scripts.
Authoritative Plane work-tracker discipline for WeftOS / clawft. Use whenever you create, claim, finish, or defer a meaningful unit of work, or when triaging audits / TODOs / FIXMEs / orphans into Plane work items. Codifies the lifecycle (Backlog → Todo → In Progress → Done | Cancelled), the cycle taxonomy (0.7.x must-ship, 0.8.x / 0.9.x / 1.0.x deferred), and the HTTP API workaround for the partially-broken MCP server.
Deploy Fumadocs site to Vercel at weftos.weavelogic.ai (always run after docs/src changes)
Generate rustdoc API reference and deploy to weftos.weavelogic.ai/api
Build, test, publish, and deploy WeftOS across all channels (GitHub Releases, crates.io, npm, Docker, Homebrew)
Route tasks to external agents via MCP (preferred) or CLI fallback. LightLLM translation layer with intelligent routing based on task complexity, cost, and agent capabilities.
| name | |
| description | Interact with Twitter/X -- fetch bookmarks, categorize content, draft tweets, post, and search. |
| version | 1.0.0 |
| variables | ["action","topic"] |
| allowed-tools | ["Bash","Read","Write","Glob"] |
| user-invocable | true |
| argument-hint | <action> [options] (e.g., bookmarks, draft "topic", categorize) |
You interact with the Twitter/X API v2 through clawft's OAuth2 plugin. All
authenticated requests use weft tool rest_request --provider twitter which
auto-injects the Bearer token from ~/.clawft/tokens/twitter.json.
The user must have authorized Twitter via /social-auth twitter authorize
before using any action. If a request returns 401, call
weft tool oauth2_refresh --provider twitter and retry once.
Fetch the authenticated user's bookmarks with pagination.
# First page
weft tool rest_request --provider twitter --method GET \
--url "https://api.x.com/2/users/me/bookmarks?tweet.fields=created_at,author_id,text,public_metrics&max_results=100"
For pagination, use the next_token from the response:
weft tool rest_request --provider twitter --method GET \
--url "https://api.x.com/2/users/me/bookmarks?tweet.fields=created_at,author_id,text,public_metrics&max_results=100&pagination_token=<next_token>"
Store results to the workspace:
~/.clawft/workspace/social/twitter/bookmarks/YYYY-MM-DD.json
Create parent directories as needed. Each file contains the full API response
for that fetch. Append paginated results into the same date file by merging
the data arrays.
Rate limits: Twitter allows 180 requests per 15 minutes for bookmark reads.
If you receive HTTP 429, extract the x-rate-limit-reset header and inform the
user when they can retry.
Read stored bookmarks and classify each into categories.
Categories: tech, news, personal, reference, career, entertainment, other
Read the bookmarks file:
~/.clawft/workspace/social/twitter/bookmarks/YYYY-MM-DD.json
If no date is specified, use the most recent file (find via Glob).
For each bookmark, classify it by analyzing the tweet text. Assign:
category: One of the categories above.confidence: High, medium, or low.tags: 1-3 descriptive tags.text_preview: First 100 characters of the tweet.Process in batches of 20 tweets. After each batch, append results to:
~/.clawft/workspace/social/twitter/bookmarks/categorized/YYYY-MM-DD.json
Output format per entry:
{
"id": "tweet_id",
"text_preview": "First 100 chars...",
"category": "tech",
"confidence": "high",
"tags": ["rust", "programming", "performance"],
"author_id": "author_id",
"created_at": "ISO timestamp"
}
After processing, print a summary: count per category, total processed.
Draft a tweet or thread on a given topic.
~/.clawft/workspace/social/twitter/drafts/<slug>.json
where <slug> is a URL-safe version of the topic (lowercase, hyphens).Draft format:
{
"topic": "original topic",
"tweets": [
{ "text": "Tweet content here #hashtag", "index": 1 }
],
"hashtags": ["#hashtag1", "#hashtag2"],
"created_at": "ISO timestamp",
"status": "draft"
}
Present the draft to the user for review before saving. Ask if they want edits.
Post a draft or compose and send immediately.
weft tool rest_request --provider twitter --method POST \
--url "https://api.x.com/2/tweets" \
--body '{"text": "Tweet content here"}'
For threads, post sequentially, using reply.in_reply_to_tweet_id for each
subsequent tweet:
weft tool rest_request --provider twitter --method POST \
--url "https://api.x.com/2/tweets" \
--body '{"text": "Next tweet", "reply": {"in_reply_to_tweet_id": "<previous_id>"}}'
"posted" with the tweet ID(s).Search recent tweets matching a query.
weft tool rest_request --provider twitter --method GET \
--url "https://api.x.com/2/tweets/search/recent?query=<encoded_query>&tweet.fields=created_at,author_id,text,public_metrics&max_results=10"
Present results in a readable format: author, text preview, metrics (likes, retweets, replies).
If any API call returns HTTP 401:
weft tool oauth2_refresh --provider twitter./social-auth twitter authorize.bookmark.read for bookmarks).x-rate-limit-reset header.
Do not retry automatically.