世界を動かす技術を、日本語で。

Wacli – WhatsApp CLI

2026年4月15日原文(github.com)

概要

wacli は、 whatsmeow ベースのWhatsApp CLIツール。 ローカルでの メッセージ履歴同期高速検索送信 に特化。 連絡先・グループ管理 やメディア対応も可能。 公式WhatsApp非公認の サードパーティ製 CLI。 Homebrew または ローカルビルド で導入可能。

wacli — WhatsApp CLIの概要

  • whatsmeow を基盤とした WhatsApp用CLIツール
  • ローカルでのメッセージ履歴同期継続キャプチャ 機能
  • オフラインでも高速な全文検索
  • メッセージ送信 (テキスト・ファイル・キャプション付き対応)
  • 連絡先・グループ管理機能 (参加者管理やグループ名変更など)
  • WhatsApp Webプロトコル を利用、 公式とは無関係
  • Homebrew または Goビルド で簡単インストール

主な機能・特徴

  • 認証 :QRコード表示によるインタラクティブ認証
  • 同期 :初回同期後は非インタラクティブで自動同期
  • 検索 :メッセージ、リアクション、リプライ、メディア種別も表示対応
  • 送信 :テキスト・ファイル・ファイル名指定・キャプション対応
  • グループ :リスト表示・名称変更・参加者管理
  • ストレージ :デフォルトは~/.wacli、オプションで変更可能
  • 環境変数 でデバイスラベルやプラットフォーム指定可能

インストール方法

  • Homebrewでインストール
    • brew install steipete/tap/wacli
  • ローカルビルド
    • go build -tags sqlite_fts5 -o ./dist/wacli ./cmd/wacli

クイックスタート

  • 認証と初期同期
    • pnpm wacli auth
  • 継続同期(認証済み後)
    • pnpm wacli sync --follow
  • 診断コマンド
    • pnpm wacli doctor
  • メッセージ検索
    • pnpm wacli messages search "meeting"
  • 過去メッセージのバックフィル
    • pnpm wacli history backfill --chat 1234567890@s.whatsapp.net --requests 10 --count 50
  • メディアダウンロード
    • ./wacli media download --chat 1234567890@s.whatsapp.net --id <message-id>
  • メッセージ送信
    • pnpm wacli send text --to 1234567890 --message "hello"
  • ファイル送信・ファイル名指定
    • ./wacli send file --to 1234567890 --file /tmp/abc123 --filename report.pdf
  • グループ一覧・名称変更
    • pnpm wacli groups list
    • pnpm wacli groups rename --jid 123456789@g.us --name "New name"

利用上の注意点

  • バックフィル はベストエフォート
    • WhatsApp側の仕様で全履歴取得不可の場合あり
    • プライマリデバイス(スマホ)オンライン必須
    • 1チャットごとにリクエスト
  • 出力形式
    • デフォルトは人間可読、--jsonで機械可読に切替可能

参考・クレジット

  • whatsapp-cli (Vicente Reig氏)から着想・学習
  • 詳細設計はdocs/spec.md参照
  • ライセンス :プロジェクト内LICENSE参照

便利なスクリプト例:全チャットのバックフィル

  • ローカルDB内の全チャットをループ処理
    • pnpm -s wacli -- --json chats list --limit 100000 \
    • | jq -r '.[].JID' \
    • | while read -r jid; do pnpm -s wacli -- history backfill --chat "$jid" --requests 3 --count 50; done

環境変数設定例

  • WACLI_DEVICE_LABEL :リンクデバイスのラベル指定
  • WACLI_DEVICE_PLATFORM :デバイスプラットフォーム指定(未設定時はCHROME)

まとめ

  • wacli はWhatsAppをCLIで効率的に操作したいユーザー向け
  • 履歴同期・検索・送信・管理 がコマンドラインで完結
  • 非公式ツール のため、利用時は自己責任

Hackerたちの意見

これは本当に統合が必要なポイントだね。ピーターがまだツールを出してるのを見るのはクールだ。メタがテレグラムみたいに協力しないのは残念だな。彼らはさらに厳しくするか、もしくはWhatsAppが今後数年でAIシステムの一般的なコントロールプレーンになるって気づいてくれるといいんだけど。後者の方になることを願おう。WhatsMeowはBaileysと比べてどうなの?

WhatsMeowは安定してるけど、Baileysはメンテナンスに問題があるね。

カスタムクライアントを使ってる人を見つけたら、禁止されるんじゃないの?その件について何か読んだ気がする。

whatsmeowはBeeperのブリッジアーキテクト、Tulir Asokanによって作られ、維持されています。多くのBeeperユーザーが毎日問題なく使っています。これが私たちのWhatsAppブリッジの中心です: https://github.com/mautrix/whatsapp Baileysも素晴らしいライブラリで、大きなコミュニティがあります。その主なメンテイナーの一人も、私たちのブリッジ/whatsmeowを手伝ってくれています。私たちの古いアプリ、TextsのWhatsApp統合はこれで作られました: https://github.com/textshq/platform-whatsapp 私たちが積極的に関わっていて、完璧に動作させるためのインセンティブがあるので、Baileysよりもwhatsmeowをお勧めします。スケールでの問題を検出するためのデータポイントもたくさんありますしね。

彼らの厳しい管理が、WhatsAppをスパムのない環境にしているのです。自由な連邦プロトコルを持ちながらスパムがないというのは無理です。APIの洪水ゲートを開けると、すぐにナイジェリアの王子のエージェントが現れるでしょう。

俺はただテレグラムを使ってる。昨日、ボットを設定したんだけど、ボットファーザーを使えば簡単だし、アプリも設定したよ(クロードが作ったけど、ちょっといじらなきゃいけなかった)。これはPagerDutyみたいに動くけど、ダウンタイムやエラーをクラウドフレアワーカーを使ってプッシュするんだ(Graphanaから)ウェブフック経由で「全画面、DNDをバイパス、アラート、音楽大音量で、これだよ: https://www.youtube.com/watch?v=H0IQBWWabuU」と名付けたアプリ「サイレン」。プロダクション環境の重要なアラートを見逃さないようにするのは簡単じゃないけど、これが一銭もかからないのがいいところ。テレグラムのグループアラートは、俺のチームメンバー(小さなチームで3人)からボットを通じて来る。サイレンは俺専用で、10個のマイクロサービスを持つバックエンドを担当してるから、Graphana、アロイ、ロキを使った集中ログ、メトリクスにはPrometheusを使ってる。これがうまく機能してるから、問題が悪化する前に修正できて生活が楽になるよ。

テレグラムがE2EEをやってないのは本当に残念だ。そうじゃなければ、間違いなく最高のメッセンジャーなのに :(

これに賛成です。彼らのAPIはとても使いやすく、他のメッセンジャープラットフォームよりも自動化に優れています。採用率も良いですし、プライバシーを考慮すればSignalが本当の勝者です。

私はWhatsAppが好きで使っているわけじゃなく、単に私の国の連絡先が全員そこにいるから使っています。ここではSMSよりも公式に使われています。私の場合、選択肢はありません :/

でも気をつけてね - Telegramはかなり危険だよ。例えば、たった2日前に彼らのバックエンドが、アメリカン・エキスプレスの紹介リンクをロシアの人たちのカスタム紹介コードに置き換えてた(だから、友達に紹介リンクを送ったら、チャット履歴には別の紹介リンクが表示された)。彼らのセキュリティチームは「大丈夫」って言ってるけど、無駄な情報のために使うならともかく、他のものを使った方がいいよ。

「私はただTelegramを使ってる。」 それで、どうやって話したい人全員にTelegramを使わせるの?

「Telegramはボットに最適」って意見に賛成だね。これがOpenClawユーザーが使う理由だよ。しばらく前にOpenClawの使用をやめたけど、OpenClawで使ってた基本的な自動化をコード化したよ。Telegramと連携させるのは簡単だった。チャットにはTelegramを使ってない。実際、人とIMツールを使うのはなるべく避けてる。 ;-)

Hacker Newsで議論の続きを見る