WhatsAppをターミナルから操作!メッセージの同期・検索・送信をコマンド一発で — wacli

steipete/wacliGo1.8k

wacliは、人気メッセージアプリ「WhatsApp」をパソコンのコマンドライン(黒い画面に文字を打ち込む操作画面)から操作できるツールです。WhatsAppのメッセージ履歴をパソコンに保存・同期し、過去のメッセージを高速に検索したり、テキストやファイルを送信したりできます。WhatsApp Webと同じ通信方式を使った非公式ツールで、Go言語で構築されています。連絡先やグループの管理も可能で、日常的なメッセージ管理を自動化・効率化したいエンジニアや上級ユーザーに向いています。

🔥 なぜ話題?

WhatsAppは世界で20億人以上が使うメッセージアプリですが、公式にはCLI(コマンドライン)からの操作手段がありません。メッセージ履歴のバックアップや検索を自動化したいエンジニア層のニーズに応えるツールとして、またGo言語ベースで軽量に動作する点が注目を集めています。

💡 こう使える!

例えば、仕事のWhatsAppグループで過去に共有された『議事録』を探したいとき、`wacli messages search "議事録"` と打つだけで、ローカルに保存した全メッセージから瞬時に該当する会話を見つけ出せます。スマホで延々とスクロールして探す手間がなくなります。

ユースケース: WhatsAppのメッセージ履歴をパソコンにバックアップし、キーワードで素早く検索したり、コマンドでメッセージやファイルを送信したりする。

  • WhatsAppのメッセージ履歴をローカルに同期・保存し、オフラインでも高速検索できる
  • コマンドラインからテキストやファイルの送信、グループ管理が可能
  • Homebrewで簡単にインストールでき、JSON出力にも対応しスクリプトとの連携も容易

技術情報

言語

Go

ライセンス

NOASSERTION

最終更新

2026-04-15

スター数

1,793

フォーク数

216

Issue数

130

トピック

cligowhatsapp

技術詳細

アーキテクチャ・仕組み

  • whatsmeow ライブラリを基盤としており、WhatsApp Webプロトコルを利用してメッセージの送受信・同期を行う
  • Go言語で実装されており、SQLite(FTS5拡張付き)をローカルストレージとして使用
  • WhatsApp公式とは無関係のサードパーティツール

主要な機能一覧

  • 認証(auth): QRコード表示によるインタラクティブログイン + 初期データ同期
  • 同期(sync): 非インタラクティブな同期ループ(--follow で継続実行)
  • メッセージ検索: オフラインでのフルテキスト検索(SQLite FTS5使用)
  • メッセージ送信: テキスト送信、ファイル送信(キャプション付き、表示ファイル名のオーバーライド対応)
  • メディアダウンロード: 同期済みメッセージのメディアファイルをダウンロード
  • グループ管理: グループ一覧、リネーム、参加者管理
  • 履歴バックフィル: チャットごとに古いメッセージの取得リクエストを送信(ベストエフォート)
  • 診断(doctor): 動作状況の確認
  • リアクション・返信・メディアタイプの表示テキスト対応(v0.2.0)

出力形式

  • デフォルトは人間が読みやすいテキスト形式
  • --json フラグで機械可読なJSON形式に切り替え可能(スクリプトやパイプラインとの連携に便利)

ストレージ

  • デフォルトのデータ保存先: ~/.wacli
  • --store DIR オプションで変更可能

環境変数による設定

環境変数説明
WACLI_DEVICE_LABELWhatsApp上に表示されるリンクデバイスのラベル
WACLI_DEVICE_PLATFORMリンクデバイスのプラットフォーム(デフォルト: CHROME

履歴バックフィルの制約・注意点

  • ベストエフォート方式: WhatsAppが完全な履歴を返す保証はない
  • プライマリデバイス(スマートフォン)がオンラインである必要がある
  • リクエストはチャット単位(DM/グループごと)で行う
  • ローカルに保存された最も古いメッセージを基準点として使用
  • 推奨設定: --count 50(1リクエストあたり50件)
  • 全チャット一括バックフィルはシェルスクリプトで jq と組み合わせて実現可能

対応環境

  • Go言語のビルド環境、またはHomebrewが使えるmacOS
  • ビルド時に sqlite_fts5 タグが必要

先行プロジェクト

  • Vicente Reig氏の whatsapp-cli にインスパイアされている

ライセンス

  • リポジトリ内の LICENSE ファイルを参照(README上では種別の明記なし)

インストール・クイックスタート

方法A: Homebrewでインストール(macOS)

brew install steipete/tap/wacli

方法B: ソースからビルド(Go言語が必要)

go build -tags sqlite_fts5 -o ./dist/wacli ./cmd/wacli
./dist/wacli --help

クイックスタート

# 1) 認証(QRコードが表示される)→ 初期同期
wacli auth

# 2) 継続的に同期
wacli sync --follow

# メッセージ検索
wacli messages search "meeting"

# テキスト送信
wacli send text --to 1234567890 --message "hello"

# ファイル送信
wacli send file --to 1234567890 --file ./pic.jpg --caption "hi"

参考になる外部の関連記事

関連リポジトリ