mtb とは
mtb(Movable Type Builder CLI)は、Movable Type のサイトをコマンドラインから 組み立てる Go 製の CLI です。 Movable Type の Data API v7 を通じて操作し、 接続先はプロファイルで切り替えます。一度サインインすれば、以後はトークンを 自動で取得し直します。
mtb profile add prod --base-url https://example.com/cgi-bin/mt/mt-data-api.cgi
mtb auth login
mtb sites entries list --site-id 1 --status Publish --limit 203つの成り立ち
公式定義から生成したコマンド
コマンドツリーは手書きではありません。 Movable Type が公開している Data API v7 の OpenAPI 定義 から、226 のエンドポイントすべてに対応するコマンドを生成しています。 --help の説明文も公式の定義をそのまま表示します。
GET /v7/sites/{site_id}/entries mtb sites entries list
POST /v7/sites/{site_id}/entries mtb sites entries create
GET /v7/sites/{site_id}/entries/{entry_id} mtb sites entries get規則はコマンドの命名規則にまとめてあります。 手書きのコマンドは auth / profile / api / llm の4つだけです。
API に無い操作の追加
Data API の操作だけでは、サイトの構築を最後まで済ませられません。 そこで、 Data API に無い操作を mtb 側に実装しています。
| API に無いもの | なぜ mtb が持つか | |
|---|---|---|
--all | 全ページの取得 | ページ送りの処理を利用者に書かせない |
--fields | GET 以外での属性の絞り込み | 同じフラグがコマンドによって使えたり使えなかったりしないようにする |
--dir / --replace | 一括アップロードと差し替え | デザインのファイルは1枚ずつアップロードするものではない |
--set / --extract | 本体の組み立てと取り出し | JSON を手で書かせない。jq も不要 |
templates pull / push | テンプレートの往復 | Git で管理するために必要 |
dump | 環境どうしの差分 | どこが違うか分からなければ同期を始められない |
追加するかどうかの基準は「サイトを1つ最後まで構築できるか」です。API に無いという 理由だけで追加を断ることはしませんが、サイト構築に関係ないもの(画像処理など)は、 実装できても追加しません。
同梱のリファレンス
mtb llm を実行すると、詳細なリファレンスを1つの Markdown として出力します。 認証、接続先の切り替え、命名規則、代表的なワークフロー、失敗モードまでを収録しており、 バイナリに埋め込まれているのでオフラインでも読めます。 AIに任せるときは、 これを読ませるところから始めます(エージェントに渡す)。
mtb llm # Markdown
mtb llm --format json # 章ごとのJSON配列Claude Code なら、プラグインをインストールするだけで 6つのスキルを使えます。
次に読むもの
- インストール — バイナリを PATH に置く
- 接続先(プロファイル) — 複数の MT を切り替える
- 認証 — Webサービスパスワードの話
- エージェントに渡す — AIに任せるときの準備
- ユースケース — 何を任せられるか
対象と前提
- Movable Type 7 以降(Data API v7)。MT 9 でも動作します
- サーバ側で Data API が有効になっていること
- 操作するユーザーに
sign_in_data_api権限とWebサービスパスワードがあること
mtb は実在のサイトを書き換えます。 DELETE は取り消せません。 はじめは検証用の MT か、複製したサイトで試してください。