claude/skills/xurl/SKILL.md
X (Twitter) API read-only CLI. Bookmarks retrieval, tweet search, engagement analytics (likes/RT aggregation), mentions, user lookup. Use when: reading X bookmarks, searching tweets, aggregating likes/retweets, checking mentions, looking up users. Triggers: bookmark, bookmarks, X search, Twitter search, likes count, RT count, engagement, tweet analytics.
npx skillsauth add kazuph/dotfiles xurlInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
xurl is a read-only fork of the official X CLI tool (kazuph/xurl-readonly). Write operations (post, like, repost, etc.) are intentionally blocked at the OAuth scope level for security.
# Build from source (read-only fork)
cd /Users/kazuph/src/github.com/kazuph/xurl-readonly
go build -o xurl-readonly .
cp xurl-readonly /opt/homebrew/bin/xurl
# Verify
xurl version
If the binary is missing or outdated, rebuild from the fork above. Do NOT use the upstream xdevplatform/xurl — it requests write scopes.
~/.xurl (YAML)kazuph-cli (Pay Per Use plan on console.x.com)offline.access scope69535135 (kazuph)If token expires and refresh fails, tell the user to run: xurl auth oauth2
tweet.read, users.read, bookmark.read, follows.read, list.read, block.read, mute.read, like.read, space.read, offline.access
Write scopes are NOT included. This is intentional — if the token leaks, no damage can be done.
Bookmarks are used as a read-later / triage queue. The workflow:
# Latest bookmarks
xurl bookmarks
# More results
xurl /2/users/69535135/bookmarks?max_results=100
For each bookmark, check if it references a repo, article, or idea:
entities.urls[].expanded_urlWebFetch to read the linked content (GitHub repos, blog posts, etc.)1 bookmark = 1 Obsidian note. This is NOT transcription — it's agentic knowledge production. The agent reads, researches, synthesizes, and writes a note in its own words.
This is agentic knowledge production, not transcription. A note that just summarizes the tweet is WORTHLESS — the user can read the tweet themselves. The value is: AI read every link, cloned repos, read source code, and synthesized real insights.
The note must be something the user CANNOT get by just reading the tweet.
Phase 1: Gather ALL raw material
# 1a. Full tweet text
xurl read TWEET_ID
# 1b. Thread detection + full thread
xurl search -n 30 "from:AUTHOR_ID conversation_id:CONVERSATION_ID"
# 1c. Replies & quotes for reputation
xurl search -n 20 "conversation_id:CONVERSATION_ID"
Phase 2: DEEP investigation of every link This is where the real value is created:
git clone → read README, main source files, understand architecture, key design decisions. Read at least 3-5 important source files. Report: what it does, how it works, tech stack, code quality, limitationsWebFetch full text → read carefully → extract the ARGUMENT, not just facts. What's the author's thesis? What evidence? What counter-arguments exist?WebFetch → methodology, results, significance, limitationsWebFetch → what problem it solves, how it works technically, pricing, alternativesPhase 3: Community reaction analysis
Phase 4: Write the Obsidian note
Structure: Top = original tweet (raw) → Middle = deep investigation → Bottom = synthesis & analysis
The reader should be able to:
---
tweet_id: "TWEET_ID"
source: https://x.com/AUTHOR/status/TWEET_ID
author: "@username (Display Name)"
date: YYYY-MM-DD
tags: [topic1, topic2]
type: tool/idea/technique/library/opinion
---
## Original Tweet
> @username (YYYY-MM-DD)
> Full original tweet text here, verbatim, including URLs.
> If thread, include ALL tweets in order.
**Engagement**: N♥ / N RT / N BM / N impressions
---
## Linked Content Investigation
### [Title of linked content](URL)
(Deep investigation of the linked content. For repos: architecture analysis
from actually reading source code. For articles: the full argument structure.
This section should be LONG and substantive — it's the core value of the note.)
---
## Community Reaction
(What are people actually saying in replies? Quote specific interesting replies.
What's the consensus? Any expert opinions or criticisms?)
---
## Synthesis & Analysis
(Agent's own analysis connecting everything together.
What's the significance? How does this relate to other things the user cares about?
What are the implications? What should the user DO with this information?)
# Check if already processed (tweet_id in frontmatter)
ob search query="TWEET_ID" matches
# If found → skip
xurl bookmarks (up to 100)
↓ for each tweet
ob search query="TWEET_ID" matches → skip if exists
↓ if new
Phase 1: gather raw (tweet + thread + replies)
↓
Phase 2: deep-dive every URL (clone repos, read articles, etc.)
↓
Phase 3: community reaction
↓
Phase 4: write substantive Obsidian note via ob create
direction LR)。subgraphで各フェーズを囲み、中身をLRにするのが最も見やすい。全ステップが縦1列に並ぶ図は避けるob search for related topics first# Get your recent tweets with metrics
xurl search -n 100 "from:kazuph"
Each tweet includes public_metrics:
{
"retweet_count": 5,
"reply_count": 2,
"like_count": 42,
"quote_count": 1,
"bookmark_count": 3,
"impression_count": 1200
}
# Users who liked tweet ID 123456
xurl /2/tweets/123456/liking_users
# Users who retweeted tweet ID 123456
xurl /2/tweets/123456/retweeted_by
xurl search -n 100 "from:kazuph" (last 7 days)created_at for today / this weeklike_count, retweet_count, reply_count, impression_countxurl bookmarks
xurl /2/users/69535135/bookmarks?max_results=100
xurl search "keyword"
xurl search -n 50 "keyword"
xurl search "from:kazuph"
xurl search "@kazuph"
xurl search "to:kazuph"
xurl search "Claude Code lang:ja"
# IMPORTANT: queries starting with - need quoting
xurl search "-from:kazuph to:kazuph"
xurl whoami
xurl user kazuph
xurl /2/tweets/TWEET_ID/liking_users
xurl /2/tweets/TWEET_ID/retweeted_by
xurl likes # Your liked posts
xurl mentions # Recent mentions
xurl followers
xurl following
xurl timeline
xurl read <tweet_id>
xurl /2/users/me
xurl /2/tweets/search/recent?query=keyword&max_results=10
By design, all write operations return 403: post, reply, quote, repost, like, unlike, follow, unfollow, bookmark, unbookmark, block, unblock, mute, unmute, dm, delete
/Users/kazuph/src/github.com/kazuph/xurl-readonly/opt/homebrew/bin/xurlxdevplatform/xurl (requests write scopes)testing
単体テスト方針の要約。Kiro流で使うときは本文を必ず参照・展開する。
tools
Send prompts to other AI CLIs (Codex, Claude Code) running in sibling tmux panes and receive results back. Use this skill when the user asks to send a question or task to Codex or another Claude Code instance in a tmux pane. Handles pane discovery, CLI startup if needed, prompt delivery with proper Enter timing, delivery verification, and result return via tmux send-keys.
data-ai
TAKT ピースエンジン。Agent Team を使ったマルチエージェントオーケストレーション。ピースYAMLワークフローに従ってマルチエージェントを実行する。
tools
Send messages and files to Slack using the existing bot token and the single configured channel. Never use browser automation for this skill. Do not send to any other channel.