Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

get-tweet

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 が必要です。

Agent Skill の生成

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 --user

仕様の全体像

get-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

About

mClaude Code and Codex skill for retrieving X (Twitter) post without API Keys.

Topics

Resources

Stars

3 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages