X (旧 Twitter) の公開ポストを API キー不要で JSON として取得する Go 製 CLI。Twitter Syndication CDN (cdn.syndication.twimg.com/tweet-result) を叩くだけなので、認証も rate limit のセットアップも要りません。
Claude Code / Codex 用の Agent Skill を CLI 自身が書き出せるので、エージェントから「このツイート取って」で呼ばせる用途にも使えます。
Go 1.26.4+ が入っていれば:
go install github.com/sh1ma/get-tweet/cmd/get-tweet@latest$GOBIN (未設定なら $(go env GOPATH)/bin) に PATH を通してください。
get-tweet <URL or tweet ID> # 1 行の raw JSON (stdout)
get-tweet <URL or tweet ID> --pretty # 整形出力URL でも数値 ID でも OK:
get-tweet https://x.com/jack/status/20
get-tweet https://twitter.com/jack/status/20?s=20
get-tweet 20パイプ処理を前提にしているので、デフォルト出力は 1 行 raw JSON です。人間確認用に整形したいときだけ --pretty を付けてください。
jq と組み合わせる例:
# 本文と投稿者
get-tweet <url> | jq '{text, user: .user.screen_name, created_at}'
# 動画の最高画質 mp4 URL
get-tweet <url> | jq -r '[.mediaDetails[]?.video_info.variants[]? | select(.content_type=="video/mp4")] | sort_by(-.bitrate) | .[0].url'
# 画像 URL 一覧
get-tweet <url> | jq -r '[.mediaDetails[]? | select(.type=="photo") | .media_url_https][]'Syndication API のレスポンスは投稿種別 (画像 / 動画 / 返信 / 引用 RT / リンクカード) によってキーが増減するので、初見の投稿に対しては先にフル JSON を確認してから jq を書くことを推奨します。
| code | 意味 |
|---|---|
| 0 | 成功 |
| 1 | 引数エラー / URL 解決失敗 |
| 2 | ツイートが存在しない (404) |
| 3 | Syndication API のエラー |
| 4 | 内部エラー |
get-tweet update # latest
get-tweet update v0.2.0 # 指定バージョン内部で go install github.com/sh1ma/get-tweet/cmd/get-tweet@<version> を実行します。Go toolchain が必要です。
Claude Code / Codex から呼び出せる Skill を CLI 自身が書き出せます。
# プロジェクト直下 (./.claude/skills/get-tweet/ など) に配置 (デフォルト)
get-tweet agent-skill create claude
get-tweet agent-skill create codex
# ホーム配下 (~/.claude/skills/get-tweet/ など)
get-tweet agent-skill create claude --scope=user--scope=user はホームに対応 agent のディレクトリ (~/.claude や ~/.codex) が既に存在することが前提です。無ければメッセージを出して何も作らずに終了します (未導入の agent 用ディレクトリを勝手に生やさない)。
削除:
get-tweet agent-skill remove claude # デフォルトは project スコープ
get-tweet agent-skill remove claude --userget-tweet <URL or post ID> [--pretty]
get-tweet update [version]
get-tweet agent-skill create <claude|codex> [--scope=user|project]
get-tweet agent-skill remove <claude|codex> [--user | --project]
get-tweet help | --help | --version
- ツイート取得は認証不要。非公開・保護アカウントのポストは取得不可。
- レスポンスは Syndication API の raw JSON をそのままリレー (CLI 側でフィールドは削らない)。
- Skill テンプレートはバイナリに
embed済み。ネットワーク越しに fetch しないので、CLI 単体で完結する。
go build -o get-tweet ./cmd/get-tweet # ローカルビルド
go run ./cmd/get-tweet <url> # 開発中の実行
go test ./... # テスト
go vet ./... # 静的解析パッケージ構成:
cmd/get-tweet/— cobra ベースの CLI エントリinternal/resolve/— URL / 数値 ID の正規化internal/token/— Syndication API 用の擬似トークン算出 (JS のNumber()の精度損失を再現)internal/twitter/— Syndication CDN クライアントinternal/skill/— Agent Skill 生成 (テンプレはembed.FSで内包)
MIT