THTH
THTH は、自分の SNS アカウントで調べる・投稿する・予約する・振り返るためのコマンドラインツールです(Threads・Bluesky・Mastodon・X)。
CLI なので、Claude Code などの AI アシスタントがそのまま操作できます。同梱の MCP サーバーとスキルは、その操作を楽にするための補助です。THTH は何を書くかを決めません。頼まれたときだけ動きます。
THTH が断るときは、なぜ断ったか・どうすれば通るか・どうすればもっと良くなるかを、丁寧に前向きに返します(原則: 前向きな断り)。
English: README.en.md · サイト: https://thth.me · 文書の索引: docs/README.md
できること
| Threads | Bluesky | Mastodon | X | |
|---|---|---|---|---|
| 投稿・予約 | ○ | ○ | ○ | ○ |
| 削除 | ○ | ○ | ○ | ○ |
| 返信とインサイト(表示・いいね・返信などの数)の取得 | ○ | ○ | ○ | 数だけ(3.16.0・THTH から出した投稿) |
キーワード検索(thth topics --search・thth where) |
○ | ○ | ○ | - |
言及(thth mentions) |
○ | ○ | ○ | - |
| プロフィールと場所の検索 | ○ | - | - | - |
- 調べる:
thth topics <アカウント> --search <語>で、その語の件数・投稿者の数・最新の投稿を見ます。Threads では--tagを付けると、その語をトピックに付けた投稿の件数・投稿者の数・最新と最古の時刻だけを見ます(本文と投稿者は出しません。--keepで数と日付をwhere --keepと同じ project の置き場に残します・5.7.0)。thth whereは「次にどこで話すか」を、自分がすでに絡んだ相手を重ねて探します。X の行には投稿者のフォロワー数(「フォロワー 1.2 万」)と投稿数も付きます(--jsonはauthor_followers・author_posts。保存しません)。 - 出す:
thth sendで今すぐ、thth scheduleで予約、--reply-toで返信です。 - 断りの文を直し方で終える(5.11.1): 打ち消しで終わって通る道を書いていなかった断りの文 31 件を、「どうすれば通るか」で終わる文に直しました。符丁・鍵・rc は変わりません(リリースノート 5.11.1)。
- 置く前に見る・Threads のクリック・訪問を糸の一生の数に(5.11.0):
thth plaza post … --previewで、範囲を問わず置く中身(本文・観測の欄・下書き・範囲の既定)を何も書かずに見られます。置いた本人はthth plaza hide <id> --as <account>で自分の 1 件を隠せます。糸・seeds・広場の観測に Threads のリンクのクリック(投稿から 72h・訪問とは別の欄・言える本数/Threads の本数)を、project のダッシュボードにサイトへの参照元(host と数だけ)を出します。hub が 1 日 1 ファイルで送る訪問の控えを、糸の期間(seeds は--daysの窓)に重なる日だけ足し、欠けた日は 0 と混ぜず日の数で言います(リリースノート 5.11.0)。 - 済んだ糸と返信の段(5.10.0): 糸の段に
replies_within_hours=を書けば、段の名が何でも返信を数えます(告知の本数では済みになりません)。全部の段を満たした糸は「済んだ」になり、動かなくても停滞と言いません。済んだ糸は閉じる(任意)か広場に置く候補として出ます。ダッシュボードの要対応に、時刻を過ぎて出ていない原稿も並びます。媒体で取れない数(Bluesky・Mastodon の views)は「取れない」と言います(リリースノート 5.10.0)。 - 次の糸の種(5.9.0):
thth scenario seeds <project>が、直近 28 日(--days)の自分の投稿と糸から、次の糸の種を 4 つの列で並べます——返信の多かった投稿・訪問の多かった告知(GA4 の数を取り込んでいなければ「言えない」)・よく見られた投稿・閉じた糸で宣言にあって使わなかった媒体。数の多い順に並べるだけで、選ぶのは窓口と人です。媒体をまたいで比べず、5 本に満たない群は比べを言いません。他人の返信の本文と名前は出ません(リリースノート 5.9.0)。 - 効いたかをプラザに置く(5.8.0):
thth plaza post <アカウント> --kind measure --from scenario <project> <糸の id>で、閉じた糸 1 本の段ごとの本数・媒体ごとの反応(thth afterと同じ計算)・本記事への訪問・広告の段(始めた本数と予算。使った額とリンクのクリックは記録に無いので「言えない」)を、道具が観測として付けて置きます。人や LLM の解釈は--body-fileで、観測の欄には入りません。糸を閉じるとthth observeの次の一手にこの命令が出て、同じ持ち主のほかの project はthth plaza digestの「糸の結果」で、使った媒体と試していない媒体つきで読めます(リリースノート 5.8.0)。 - 糸の段の語彙と本記事への訪問(5.7.0): キャンペーンの宣言に広告の段(
- boost: ads・広告の口座の記録を読むだけ)とセルクマの段(- selfbm: hatena_bookmark target=own・自分の記事か他人のページかを分けて数える)が書けます。段の日本語の名(告知・セルクマ・広告)も出ます。thth scenario site-import <project> --file <json>が hub の GA4 の数(hub.site_visits/1)を受け取り、原稿の名前とthread:で糸に結んで、thth scenario show・thth dashboard <project> campaign <id>に「本記事への訪問(GA4・hub 経由)」を出します。結ばれない campaign は数だけ、取れない数は 0 と言いません。thth scenario・show・dashboard campaignの 1 行目は流れの型の skillthth-flow(thth scenario skill --print)です(リリースノート 5.7.0)。 - 広告の成績と手順の skill(5.6.3):
thth ads insightsが反応の内訳(いいね・リアクション/コメント/シェア/写真を開いた/ページへのいいね)・サイトへの誘導(リンククリック・サイトへ出たクリック・頁が開いた)・1 件あたりの額・効率(frequency・cpm・ctr・cpc ほか Meta の計算済みの値)・動画の見られた深さを出します。clicksはリンクのクリックではありません。数が 0 か、計測が無くて分からないかを分けて書きます(site.why)。--by age-gender|region|country|placement|device|hourで内訳、thth ads estimateで出す前の見積もり、thth ads doctor・showでピクセルの有無と最後に動いた時刻を読みます(読むだけ)。thth ads boost --utm-campaign <原稿のファイル名>でリンクに有機の投稿と同じ campaign の UTM(utm_medium=paid)を付けます。広告を出す LLM 向けの手順は skillthth-ads(skills/thth-ads/・thth ads skill --print)で、広告の命令の次の一手(next_steps)とエラーの文は先頭でそれを示します(リリースノート 5.6.3)。 - Meta の広告(5.6.2):
thth ads boostは全部 PAUSED で作り、始めるのはthth ads activateの 2 段だけです。thth ads watchは成績を読み続け、指定の額か表示数に達したらthth ads stopと同じに止めます(--untilで必ず終わる)。spend_cap・月の上限・旗を上げる命令はありません。例外は 1 つで、止めた印を外すthth ads resumeは 2 段+hub の承認の番号が必須です(masaru 11/02・外すのは印だけで、広告は PAUSED のまま)(リリースノート 5.6.2)。 - ブックマークの連投は記事と別に数える(4.0.1): はてなブックマークは主体の別の窓(既定 10 分に 10 件)で数え、超えても主体を止めずにその 1 件だけ断ります。1 日 30 件・同じホストへ 1 日 3 件(自分の記事は 1 日 1 件のまま)。記事の連投で止める作りは変わりません(リリースノート 4.0.1)。
- X の全期間の検索(4.5.0):
thth archive <口座> --from <handle> --title <曲名> [--max-total 20] [--json]で 2006 年からの他人の公開投稿を読みます(id・URL・時刻・本文・handle・保存しない)。--count-onlyは件数だけ(1 回 0.010 USD)。返った本数で月の X 予算に数え、1 日の本数はx_archive_daily_reads(既定 0=読まない)で別に縛ります。timer からは叩きません(リリースノート 4.5.0)。 - push した直後の lint・approve(4.5.1): パスが VM に無ければ、その repo を取り込んで 1 回だけ探し直します。取り込んでも無ければ VM と remote の commit を並べます(リリースノート 4.5.1)。
- 承認は利用者の repo に commit を積まない(4.4.1):
thth approve --confirm・thth revoke・thth.me の予約と取り消しは、VM の承認の台帳(state/<口座>/approvals.json)に書き、repo の原稿は書き換えません(thth approvals <口座>で見られます)。口座の台帳をrequire_gate: trueにすると、hub の承認の番号(--approval A261021-25)の無い確定を断ります(リリースノート 4.4.1)。 - 会話の続く投稿は 20 分おきに返信を取り直す(4.4.0): 投稿から 48 時間以内か、直近 48 時間に返信が付いた投稿は、刻みとは別に timer が会話を取り直します(1 回 10 本まで・刻みと数の記録は変えない・X は既定で外す・台帳の
reply_followで変えられる)(リリースノート 4.4.0)。 - 止めた口座では timer は何も出さない(4.3.1): 安全装置か持ち主が止めた口座では、予約の投稿・返信を queue に残し、
thth account resumeで戻せば次の timer で出ます(リリースノート 4.3.1)。 - 返信はまとめて出す(4.3.0): 時刻の過ぎた返信は承認したその場で、timer では 1 回でまとめて出します(返信の窓は返信だけで 10 分に 10 件・投稿の窓に数えない・投稿の間隔を掛けない)。使い方は「
publish_atを今か過去にしてまとめて承認する」だけです(リリースノート 4.3.0)。 - 1 件の断りでまとめを止めない(4.2.2): はてなに 1 件だけ断られた札は token を確かめてその札だけ外し、まとめを進めます。断られそうな札(半角の「%」・タグとコメントの長いもの)は 1 段目と lint で予告します(断りません)。止まったまとめは 60 分ごとにしか打たず、
thth bookmark batch-resumeで今すぐ見直せます。sparse-checkout の定義の外には記録を書かず、直し方を言います(リリースノート 4.2.2)。 - ブックマークの直しとタグの長さの柵(4.2.0):
thth bookmark editで THTH が付けたブックマークのコメントとタグを 2 段の承認で直す。31 バイトを超えるタグは予告して断る。上限の設定は台帳のlimitsと別名で書け、断りに根拠と通し方が付きます(リリースノート 4.2.0)。 - ブックマークを 1 日分まとめて承認する(4.1.0): 札を JSON Lines に並べ、
thth bookmark batchの 1 段目で全件の一覧と digest を見て 2 段目で確定。timer が上限の中で時刻を散らして付けます(口座ごと)。あわせて、上限と連投の柵の土台(媒体の特性の台帳)を入れました(リリースノート 4.1.0)。 - 記事をはてなへ届けて、直したら反映(4.0.0): repo の記事を承認してはてなブログへ公開・予約し(画像はフォトライフへ)、SNS の告知(
announces・{article_url})とはてなブックマークを記事に結びます。記事を直せばthth article diffで差分を見て、承認して更新します。はてなの画面で手直しされていれば上書きせずthth conflictで止まります。反応はthth article reactionsで記事ごとに。SNS だけの口座の動きと承認の指紋は変わりません(リリースノート 4.0.0)。 - 返信の連投は止めずに順番待ち(3.25.0):
thth send --reply-to(thth.me のsend_requestも)が急な連投(burst)を超えるとき、口座を止めずにその 1 件を窓が空く時刻の順番待ちに並べ、timer が出します。止めるのは返信でない投稿の連投だけです(リリースノート 3.25.0)。 - 予約も
--productionで(3.24.0): thth.me の鍵の道のthth scheduleは、--productionが無ければ下書きを置いて lint だけにします(sendと同じ)。過去の時刻の予約はサーバも断ります(リリースノート 3.24.0)。 - 出来事と数の要約(3.23.0):
thth events <口座|project> --after <next_cursor> --jsonで出来事(公開・返信・言及・止まり・予算)を取りこぼさず読み直し、thth summaryで数を 1 つにまとめます。observe --jsonはsections_by_nameで節を名前で引けます(リリースノート 3.23.0)。 - 本文は全文で(3.21.0): 検索(
topics --search・where)・thread・mentionsは他人の投稿の本文を切らずに画面と--jsonに出します(保存はしません)。Threads の検索は--since・--until・--mediaで絞れます。thth.me の鍵でもthread・where・whoが使えます。VM で打つthth sendにも安全装置(間隔・1 日の上限・連投)が掛かります(リリースノート 3.21.0)。 - 振り返る:
thth collectが投稿後 1 時間〜30 日の決まった時点で返信とインサイトを取得し、thth replies・thth measuredで読みます。 - 再投稿といいね:
thth repost・unrepost・like・unlike(3.15.0 から)。Threads は再投稿だけ(Threads の API にいいねが無い)。Bluesky は両方。Mastodon と X のいいねは、そのアカウントを認可し直してから(リリースノート 3.15.0)。 - 検索の語ごとの数を残す・絞る(3.18.0):
thth where … --also|--aggregate --keepで語ごとの数だけを日付つきで残し(5 未満は欠測・本文や名前は残さない)、thth where-log <project> [--budget N --medium x]で当たり率と翌日の配り直しを見ます。--ja・--question・--no-repliesで表示を絞ります(X の--jaは検索にlang:jaを足して読む本数を減らす)(リリースノート 3.18.0)。 - X の非公開リスト:
thth list create|add|remove|show(3.17.0 から・X だけ)。公開のリストは作らない。足す・外すは人が選んだ少数だけ(1 回 10 人まで)。アカウントを認可し直してから(リリースノート 3.17.0)。 - X のコミュニティ:
thth community search <account> <語…>で探し、thth send <account> --community <id>か queue の front-mattercommunity_id:で出す(3.19.0 から・X だけ)。参加は X の画面で先に(API に参加の口は無い)。返信とは同時に使えない。各コミュニティの規則は人が読んで守る(リリースノート 3.19.0)。 - X のトレンドと語ごとの投稿数:
thth trends <account> [--woeid N] [--max N](既定は日本)とthth counts <account> <語> [--granularity hour|day](直近 7 日)(3.19.0 から・X だけ・1 回の有償の読み取り・保存しない)。
はじめ方
招待された人
運営(gotoq)から届いた招待リンクを開き、Threads で認可します。そのあとターミナルで次を打ちます。
pip install thth
thth login
ブラウザが開くので、アカウント名とアカウントのシークレットを入れて許可します。以後は自分のアカウントにそのまま使えます。
thth posts <アカウント>
thth topics <アカウント> --search コーヒー
thth send <アカウント> --text "こんにちは"
サーバーも Meta アプリも git も要りません。手順の全体は 招待されたら にあります。
自分の機械で運用する人(運営者)
アカウントの台帳を自分の機械に置き、下書きのファイルを承認してから timer で出す運用もできます。承認は 2 段(本文と digest を見せる → その digest で確定)で、記録は VM の承認の台帳に残ります(4.4.1 から利用者の repo には書きません)。準備は 統一ガイド、日々の使い方は プロジェクトのセッション向け にあります。
AI アシスタントから使う
claude mcp add thth -- thth-mcp
MCP の道具は CLI の写しで、同じ thth コマンドを呼ぶだけです。スキル(skills/thth/)は「投稿する前に何を見るか」「返信をどう扱うか」をアシスタントに教えます。記事を軸に告知・セルクマ・広告までつなぐ流れと、印(UTM)・測り方は skills/thth-flow/ が教えます。広告を出すときの手順は別のスキル(skills/thth-ads/・pip で入れた場合は thth ads skill が場所を出します)です。キーはアシスタントに渡しません。thth login が手元に置いたキーを thth コマンドが使います。
ガード
アシスタントが誤って走っても、アカウントごとのガードで止まります。
| ガード | 既定 |
|---|---|
| 投稿の最短間隔(返信には掛けない) | 6 時間 |
| 1 日の投稿 | 8 件 |
| 1 日の削除 | 5 件 |
| 急な連投 | 10 分に 3 件を超えたらアカウントを止める |
| 夜間 | 22:00〜07:00 は今すぐの投稿をしない |
夜間でも出したい原稿(運休・中止などの緊急の知らせ)は、queue の front-matter に urgent: true を書いて承認します。timer は夜間だけを越えて出し、最短間隔・1 日の本数・停止は今までどおり守ります。札は承認の対象に入るので、承認のあとに付けた原稿は出ません。
アシスタントが変えられるのは、厳しくする向きだけです。緩める・止まったアカウントを戻す・キーを発行し直すのは、オーナーが https://thth.me/activity でアカウントのシークレットを使って行います。
保存しないもの
- 検索結果(
topics --search・where・thread・who)の本文と投稿者は、その場で見せるだけで保存しません。where … --keepのときだけ、語ごとの数(件数・問いの形・分類・also の当たり)を日付つきで project の私有の置き場に残します(5 未満は欠測・thth where-logで読む・3.18.0)。topics --search <語> --tag --keep(5.7.0)も同じ置き場・同じ決まりで、その語をトピックに付けた投稿の件数・投稿者の数・最新と最古の日付だけを残します(5 未満は欠測・正確な時刻は残さない・thth where-logで読む)。 - ダイレクトメッセージは読みません。
- トークンとシークレットは、ログと出力から伏せます。
詳しくは プライバシーポリシー にあります。
コマンドの一覧
thth --help で各コマンドの説明が出ます。
動くもの(thth --help の全サブコマンド): lint・preview・approve・approvals・account・revoke・posts・replies・measured・threads・after・analytics-report・study-report・study・unanswered・handoff-report・observe・morning・events・summary・scenario・dashboard・deliveries・media・article・conflict・hatena・bookmark・serve-reports・worker・topics・forms・queue・schedule・throw・run・systemd・board・collect・pull・auth・refresh・maintain・send・doctor・app・token・ask・mentions・profile・thread・where・where-log・who・retract・edit・reply・comments・quota・repost・unrepost・like・unlike・list・community・trends・counts・archive・principal・ads・webhook・fotolife・inflight・location・notifications・report・plaza・map・admin・login・logout。
版と配布
- 版の正本は
thth/VERSIONです。手元の版はthth --versionで確かめます。 mainへの push は保存だけです。releaseを進めると運営のサーバーに出て、版の tag を push すると PyPI と MCP registry に出ます。- 依存は 0 です。入口は
ththとthth-mcpの 2 つです。 - AI エージェント向けの試用の記録: headlesson の THTH のページ(THTH と同じ運営)。3.15.0 の導入と
--helpを 2026-10-11 に確かめた記録で、投稿と予約は試していません。
ライセンス
MIT。
MCP registry
registry は「この PyPI の名前を名乗ってよいのは誰か」を、配布物の README にある次の 1 行で確かめます。消さないでください。
mcp-name: io.github.aokings/thth
Metadata
Release files for thth 5.11.1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| thth-5.11.1.tar.gz | 3.5 MB | With provenance | Details for thth-5.11.1.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| thth-5.11.1-py3-none-any.whl | Python 3 | none | any | Details for thth-5.11.1-py3-none-any.whl |
Total release size: 5.6 MB
Release files / thth-5.11.1.tar.gz
| Download URL | thth-5.11.1.tar.gz |
|---|---|
| Size | 3.5 MB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
0b18b7a3027cdb6bd6fd27ac2092e86e8d582d079abf7d5630869cab19faab11
|
|
BLAKE2b-256 checksum How to use checksums |
71133bb03e54b74cb21331bbabb4e505946af058d12e562772867abfbe9fa10c
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.16
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Nov 4, 2026.
Transparency logRelease files / thth-5.11.1-py3-none-any.whl
| Download URL | thth-5.11.1-py3-none-any.whl |
|---|---|
| Size | 2.1 MB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
a124a0fbb7db439c0333a0c87f88329f4eff075f9dc6ea189b6aa77244f10216
|
|
BLAKE2b-256 checksum How to use checksums |
b2973fba9c0be4b68cba1b2cfc84c07aa80b50865d64f64667c85f0be77a0677
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.16
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Nov 4, 2026.
Transparency logSecurity for thth 5.11.1
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
Full provenance
All 2 files in this release have been uploaded with provenance metadata.
Attestation for thth-5.11.1.tar.gz
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Nov 4, 2026.
Transparency logA note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.