
Thth
io.github.aokingsPublished by GitHub account aokingsv5.12.6Updated Nov 5, 2026
Call before you post: ships a draft to Threads/Bluesky/Mastodon only after a person approved it.
Overview
Local MCP server for THTH, a CLI that lets an assistant research, draft, schedule and review posts on Threads, Bluesky, Mastodon and X.
- What you can do
- Research topics, keywords, mentions, profiles and places across supported networks, and read trends and post counts on X
- Draft, send, schedule and reply to posts, with preview and two-step approval before anything is published
- Delete, edit, repost, like and manage X lists and communities
- Collect replies and insights after posting, and review threads, campaigns, dashboards and summaries
- Publish articles to Hatena Blog and manage Hatena Bookmarks, plus read Meta ads insights and estimates
- When to use it
- Useful when you run your own social accounts and want an assistant to help research what to post about, prepare drafts, and publish or schedule them under human approval, with guardrails and post-hoc measurement.
- Requirements
- Runs locally as a Python package (thth, started with uvx or pip install, entry point thth-mcp) on a desktop machine. Accounts are authorized through thth login in a browser; the CLI uses the keys stored locally, and keys are not passed to the assistant. No server, Meta app or git is required for invited users.
Installation
In SourceWeft
- Open Thth in the dashboard and add it to a workspace.
- Enable the server for the chats that should use its tools.
Desktop only via STDIO. STDIO servers start a local process, so they need the SourceWeft desktop host.
Other MCP clients
Follow the launch instructions in the repository.
README
THTH
THTH は、自分の SNS アカウントで調べる・投稿する・予約する・振り返るためのコマンドラインツールです(Threads・Bluesky・Mastodon・X)。
CLI なので、Claude Code などの AI アシスタントがそのまま操作できます。同梱の MCP サーバーとスキルは、その操作を楽にするための補助です。THTH は何を書くかを決めません。頼まれたときだけ動きます。
THTH が断るときは、なぜ断ったか・どうすれば通るか・どうすればもっと良くなるかを、丁寧に前向きに返します(原則: 前向きな断り)。
English: README.en.md · サイト: https://thth.me · 文書の索引: docs/README.md
できること
- 調べる:
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で返信です。 - privacy に Meta の通知の保持(5.12.6): thth.me に置く Meta からの通知(最長 7 日)を頁に書きました(リリースノート 5.12.6)。
- privacy に命令の控えの 14 日(5.12.5): 口座ごとの命令の控えの保持を頁に書きました(リリースノート 5.12.5)。
thth boardを速く(5.12.4): 原稿 1 本ごとの git をまとめ、原稿が増えても遅くならなくなりました(リリースノート 5.12.4)。- 止まりを
thth board --jsonで言う(5.12.3): 投稿や鍵の止まりを各口座のstuckに出します。何も試みなかった回で「復旧」と言わなくなりました(リリースノート 5.12.3)。 - X の予算の台帳が大きくなっても止まらない(5.12.2): 台帳が 256 KiB を超えると鍵の更新まで止まっていた不具合を直しました(リリースノート 5.12.2)。
- 同期が自分で解ける(5.12.1): 書き戻しの push が落ちたあと origin が進んでも、手元に残った THTH 自身の commit だけなら載せ直して push します。人の commit は書き換えずに止まります(リリースノート 5.12.1)。
- 断りに「なぜ・通すには・もっと良く」(5.12.0): 目録にある断りは、CLI の文・
--json・MCP・thth.me の答えのどれでも、理由と、その口で本当に打てる直し方と、より良くする一手を返します。招待で入った口座には最初の 14 日の慣らし(1 日の公開の上限が半分)が掛かります(リリースノート 5.12.0)。 - 断りの文を直し方で終える(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・Mastodon・Facebook ページ・Instagram)で認可します。そのあとターミナルで次を打ちます。
ブラウザが開くので、アカウント名とアカウントのシークレットを入れて許可します。以後は自分のアカウントにそのまま使えます。
Facebook ページと Instagram では thth doctor・thth dm・thth live・thth page cta・thth like・thth edit・thth reply hide も同じように使えます(書く命令は手元と同じ二段確認)。広告(thth ads)はまだこの道にありません。
サーバーも Meta アプリも git も要りません。手順の全体は 招待されたら にあります。
自分の機械で運用する人(運営者)
アカウントの台帳を自分の機械に置き、下書きのファイルを承認してから timer で出す運用もできます。承認は 2 段(本文と digest を見せる → その digest で確定)で、記録は VM の承認の台帳に残ります(4.4.1 から利用者の repo には書きません)。準備は 統一ガイド、日々の使い方は プロジェクトのセッション向け にあります。
AI アシスタントから使う
MCP の道具は CLI の写しで、同じ thth コマンドを呼ぶだけです。スキル(skills/thth/)は「投稿する前に何を見るか」「返信をどう扱うか」をアシスタントに教えます。記事を軸に告知・セルクマ・広告までつなぐ流れと、印(UTM)・測り方は skills/thth-flow/ が教えます。広告を出すときの手順は別のスキル(skills/thth-ads/・pip で入れた場合は thth ads skill が場所を出します)です。キーはアシスタントに渡しません。thth login が手元に置いたキーを thth コマンドが使います。
ガード
アシスタントが誤って走っても、アカウントごとのガードで止まります。
夜間でも出したい原稿(運休・中止などの緊急の知らせ)は、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で読む)。 - Instagram のハッシュタグと Facebook のページの検索(
where)・他のプロ口座とページの公開の数(who --profile)は、本文も画像も頼みません。数と id とリンクを見せるだけで保存しません。Instagram の 7 日 30 種を数えるために、調べたタグと時刻だけを 7 日間残します(Meta の機能の審査が通るまでは自分の口座の範囲です)。embed・upcoming・ads catalog・ads leads・ads network・ads shopも見せるだけで保存しません。 - ダイレクトメッセージは、
thth dmを打ったときだけ読みます(Facebook ページと Instagram の受信箱)。本文と相手は画面に出すだけで保存せず、返事は人が二段確認で送ります(自動の返信はしません・相手の最後の通から 24 時間の内だけ)。thth live createが返す配信の宛先も画面に出すだけです。 - トークンとシークレットは、ログと出力から伏せます。
詳しくは プライバシーポリシー にあります。
コマンドの一覧
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・embed・upcoming・retract・edit・reply・comments・page・live・dm・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
Source: README.md at commit e8d2ba1
Tools
0Version history
61- v5.12.6LatestNov 5, 2026
- v5.12.5Nov 5, 2026
- v5.12.3Nov 5, 2026
- v5.12.1Nov 5, 2026
- v5.12.0Nov 4, 2026
- v5.11.1Nov 4, 2026
- v5.11.0Nov 4, 2026
- v5.10.0Nov 3, 2026
- v5.8.0Nov 3, 2026
- v5.6.1Nov 1, 2026
- v5.6.0Oct 31, 2026
- v5.5.0Oct 30, 2026
- v5.4.0Oct 29, 2026
- v4.5.6Oct 24, 2026
- v4.5.5Oct 23, 2026
- v4.5.4Oct 23, 2026
- v4.5.3Oct 22, 2026
- v4.5.0Oct 21, 2026
- v4.4.1Oct 21, 2026
- v4.3.1Oct 19, 2026
- v4.2.2Oct 18, 2026
- v4.2.1Oct 18, 2026
- v4.1.0Oct 17, 2026
- v4.0.1Oct 17, 2026
- v3.25.0Oct 16, 2026
- v3.23.0Oct 15, 2026
- v3.22.1Oct 15, 2026
- v3.20.1Oct 15, 2026
- v3.19.3Oct 15, 2026
- v3.19.2Oct 14, 2026
- v3.19.1Oct 13, 2026
- v3.19.0Oct 13, 2026
- v3.18.1Oct 12, 2026
- v3.18.0Oct 12, 2026
- v3.15.0Oct 9, 2026
- v3.14.3Sep 27, 2026
- v3.14.2Sep 27, 2026
- v3.14.1Sep 26, 2026
- v3.14.0Sep 26, 2026
- v3.13.0Sep 26, 2026
- v3.12.0Sep 26, 2026
- v3.11.1Sep 25, 2026
- v3.11.0Sep 25, 2026
- v3.9.1Sep 24, 2026
- v3.9.0Sep 24, 2026
- v3.6.0Sep 23, 2026
- v3.5.0Sep 23, 2026
- v3.4.0Sep 23, 2026
- v3.1.2Sep 23, 2026
- v3.1.0Sep 23, 2026
- v2.14.0Sep 22, 2026
- v2.13.2Sep 22, 2026
- v2.12.1Sep 20, 2026
- v2.12.0Sep 20, 2026
- v2.11.0Sep 20, 2026
- v2.10.0Sep 20, 2026
- v2.9.0Sep 19, 2026
- v2.7.0Sep 18, 2026
- v2.4.0Sep 18, 2026
- v2.3.3Sep 16, 2026
- v2.3.2Sep 16, 2026
Score
50% of the applicable checks met
How complete this listing is, computed from the registry entry, the endpoint and public sources. Not a rating of the server and not a statement that it is safe or working today: reachability is a dated check, and no installs or reviews go into the score.
- Reached in the last 30 days25 pts
Keep the endpoint answering the MCP handshake; SourceWeft probes it every 30 days.
- Auth declared10 pts
Declare the credential headers in the registry entry, or keep the endpoint answering the probe so its auth can be classified.
- Tools listed15 pts
Answer tools/list without a credential, or ship a package that starts in a sandbox without one.
- DescriptionRequired15 pts
- Logo10 pts
- Documentation15 pts
- License10 pts