WaCLI Skill - WhatsAppメッセージ送信と履歴同期をCLIで実現
Clawdbot向けWaCLI Skillを利用して、WhatsAppメッセージの自動送信、チャット履歴検索、バックフィル機能を実装する方法を解説します。
WaCLI Skill - WhatsAppメッセージ送信と履歴同期をCLIで実現
2026年現在、WhatsAppは世界で約30億ユーザーを抱える主要なメッセージングプラットフォームである。しかし、公式APIはビジネスアカウント向けに制限されており、個人アカウントでのプログラマティックな操作は非公式ツールに依存する必要がある。
WaCLI(https://wacli.sh)は、WhatsApp Web APIを活用し、コマンドラインからWhatsAppの送信、チャット履歴同期、メッセージ検索を可能にするオープンソースツールである。Clawdbot向けWaCLI Skillは、このツールをClawdbot環境に統合し、自動化されたメッセージング機能を提供する。
本記事では、WaCLI Skillの技術的仕様、導入方法、実装パターン、および安全な運用方法を解説する。
選定基準
本記事で解説するWaCLI Skillは、以下の特性を持つ:
- WhatsApp公式Web APIを活用(非公式だが広く利用されている実装)
- CLIベースの操作(スクリプト化・自動化が容易)
- QRコード認証による安全なログイン
- チャット履歴の検索・同期機能
技術的背景
WaCLIとは
WaCLI(https://wacli.sh)は、steipete氏が開発したWhatsApp Web APIのCLIラッパーである。Go言語で実装されており、WhatsApp WebのプロトコルをリバースエンジニアリングしてCLI操作を実現している。
GitHubリポジトリ: https://github.com/steipete/wacli
動作原理
WaCLIは、以下のステップでWhatsAppと通信する:
- QRコード認証によるセッション確立
- WhatsApp Web APIを通じたメッセージ送受信
- ローカルデータベース(
~/.wacli)へのチャット履歴保存
WhatsApp公式は非公式クライアントの使用を禁止していないが、過度な自動化はアカウント制限の対象となる可能性がある。
システム要件とインストール方法
動作環境
- OS: macOS、Linux、Windows
- Go: 1.21以上(Go経由でインストールする場合)
- Homebrew(macOS/Linux、推奨インストール方法)
インストール手順
WaCLI Skillは、以下の2つの方法でインストールできる。
方法1: Homebrew(推奨)
brew tap steipete/tap
brew install wacli
方法2: Go(クロスプラットフォーム)
go install github.com/steipete/wacli/cmd/wacli@latest
インストール後、以下のコマンドで動作確認:
wacli --version
初回認証
WaCLIを使用する前に、QRコード認証と初回同期が必要である。
wacli auth
このコマンドは、ターミナルにQRコードを表示する。WhatsAppアプリ(スマートフォン)の「リンク済みデバイス」からQRコードをスキャンし、認証を完了する。認証情報は~/.wacliに保存される。
主要機能とコマンド例
認証と同期
初回認証とチャット履歴の初回同期:
wacli auth
継続的な同期(新規メッセージの取得):
wacli sync --follow
システム診断(認証状態の確認):
wacli doctor
チャット一覧の取得
# 最新20件のチャットを表示
wacli chats list --limit 20
# 名前または電話番号で検索
wacli chats list --limit 20 --query "John"
メッセージ検索
全チャットからキーワード検索:
wacli messages search "invoice" --limit 20
特定チャット内で検索:
wacli messages search "query" --limit 20 --chat <jid>
日付範囲指定検索:
wacli messages search "invoice" --after 2025-01-01 --before 2025-12-31
メッセージ送信
テキストメッセージ送信:
# 個人チャット
wacli send text --to "+14155551212" --message "Hello! Are you free at 3pm?"
# グループチャット
wacli send text --to "1234567890-123456789@g.us" --message "Running 5 min late."
ファイル送信:
wacli send file --to "+14155551212" --file /path/to/agenda.pdf --caption "Agenda for today's meeting"
履歴バックフィル
WhatsAppのチャット履歴をローカルデータベースに取得する。
wacli history backfill --chat <jid> --requests 2 --count 50
注意: バックフィルには、スマートフォンがオンラインである必要がある。
実装例
例1: Node.jsからのメッセージ送信
Clawdbotのスキル内で、child_processを使ってメッセージを送信する。
import { exec } from 'child_process';
import { promisify } from 'util';
const execAsync = promisify(exec);
async function sendWhatsAppMessage(recipient, message) {
const command = `wacli send text --to "${recipient}" --message "${message}"`;
const { stdout, stderr } = await execAsync(command);
if (stderr) throw new Error(stderr);
return stdout;
}
// 使用例
await sendWhatsAppMessage("+14155551212", "Reminder: Meeting at 3pm");
console.log("Message sent successfully");
例2: チャット履歴検索と結果のJSON解析
async function searchMessages(query, limit = 20) {
const command = `wacli messages search "${query}" --limit ${limit} --json`;
const { stdout } = await execAsync(command);
return JSON.parse(stdout);
}
// 使用例
const results = await searchMessages("invoice", 10);
results.forEach(msg => {
console.log(`[${msg.timestamp}] ${msg.from}: ${msg.text}`);
});
例3: 送信前の確認プロンプト
安全性を確保するため、送信前にユーザー確認を実装する。
import readline from 'readline';
function askConfirmation(question) {
const rl = readline.createInterface({
input: process.stdin,
output: process.stdout
});
return new Promise(resolve => {
rl.question(question, answer => {
rl.close();
resolve(answer.toLowerCase() === 'y');
});
});
}
async function sendWithConfirmation(recipient, message) {
console.log(`Recipient: ${recipient}`);
console.log(`Message: ${message}`);
const confirmed = await askConfirmation("Send this message? (y/n): ");
if (!confirmed) {
console.log("Message sending cancelled.");
return;
}
await sendWhatsAppMessage(recipient, message);
console.log("Message sent.");
}
// 使用例
await sendWithConfirmation("+14155551212", "Test message");
例4: グループチャットへの定期通知
特定のグループに毎日の通知を送る。
#!/bin/bash
GROUP_JID="1234567890-123456789@g.us"
MESSAGE="Daily standup reminder: Please share your updates in 30 minutes."
wacli send text --to "$GROUP_JID" --message "$MESSAGE"
例5: チャット履歴のバックアップ
全チャットの履歴をJSON形式でエクスポートする。
#!/bin/bash
OUTPUT_DIR="./whatsapp_backup_$(date +%Y%m%d)"
mkdir -p "$OUTPUT_DIR"
# 全チャット一覧を取得
wacli chats list --json > "$OUTPUT_DIR/chats.json"
# 各チャットのメッセージを取得(例: 最新1000件)
cat "$OUTPUT_DIR/chats.json" | jq -r '.[].jid' | while read JID; do
wacli messages search "" --chat "$JID" --limit 1000 --json > "$OUTPUT_DIR/${JID}.json"
done
echo "Backup completed: $OUTPUT_DIR"
ユースケース
自動リマインダー送信
会議やタスクのリマインダーを自動的にWhatsAppで送信する。
カスタマーサポート自動化
特定のキーワードを検出し、自動応答を送信する(注意: WhatsApp利用規約に違反しないよう制限を設ける)。
チャット履歴の全文検索
過去のチャット履歴から重要な情報(請求書、契約内容等)を検索・抽出する。
ビジネスレポート配信
日次・週次のレポートをグループチャットに自動投稿する。
制限事項とセキュリティ考慮事項
制限事項
- 非公式APIのため、WhatsApp公式のアップデートにより動作しなくなる可能性がある
- 過度な自動送信はアカウント制限(一時的または永久的なBANの可能性)
- バックフィル機能は、スマートフォンがオンラインの場合のみ動作
- 認証セッションは定期的に再認証が必要な場合がある
セキュリティ考慮事項
認証情報の保護:
WaCLIの認証情報は~/.wacliに保存される。このディレクトリは適切なアクセス権限(600または700)で保護すること。
chmod 700 ~/.wacli
送信前の確認:
誤送信を防ぐため、必ず以下を確認する:
- 送信先の電話番号またはグループJIDが正しいか
- メッセージ内容に機密情報が含まれていないか
レート制限の遵守:
WhatsAppは過度な自動送信を検出し、アカウントを制限する。1時間あたり10-20件程度の送信に留めることを推奨する。
第三者への情報開示:
WaCLIはローカルで動作するが、チャット履歴をエクスポートする際は、個人情報保護法(GDPR、日本の個人情報保護法等)を遵守すること。
参考リンク
- WaCLI公式サイト: https://wacli.sh
- WaCLI GitHubリポジトリ: https://github.com/steipete/wacli
- Clawdbot公式サイト: https://clawdbot.com/
本記事の情報は2026年2月15日時点のものです。WaCLIの機能、WhatsApp Web APIの仕様は変更される可能性があります。最新情報は各公式サイトをご確認ください。また、WaCLIは非公式ツールであり、WhatsApp公式のサポート対象外です。利用は自己責任で行ってください。
関連記事
ClawdHub Skill - Clawdbotスキル管理を効率化
ClawdHub CLIを利用して、Clawdbotスキルの検索、インストール、更新、公開を効率化する方法を解説します。
Slack Skill - ClawdbotでSlackを自動化
Clawdbot向けSlack Skillを利用して、メッセージ送信、リアクション、ピン操作、チャンネル管理を自動化する方法を解説します。
Spotify Player Skill - ターミナルベースのSpotify再生・検索機能をClawdbotに統合
Clawdbot向けSpotify Player Skillを利用して、spogoまたはspotify_playerを通じたターミナルベースのSpotify制御を実現する方法を解説します。
人気記事
ChatGPT(OpenAI)とClaude(Anthropic)の機能比較 2026年版。コーディング・長文解析・コスト・API料金の違いを検証
ChatGPT(GPT-4o/o3)とClaude(Sonnet 4.6/Opus 4.5)を2026年時点の最新情報で比較する。コーディング能力、長文処理、日本語品質、API料金、無料プランの違いをSWE-benchなどのベンチマーク結果とともに解説する。
【2026年2月20日 所感】「AIがコードを書く」は仮説から現実になった——しかし私たちはその意味をまだ消化できていない
2026年2月20日に観測したコーディングエージェント関連ニュースの総括と所感。Anthropicの自律性研究、cmux、MJ Rathbunのエージェント事故、HN「外骨格 vs チーム」論争、Stripe Minions週1000件PR、Taalas 17k tokens/sec——朝から夜までの流れを通じて見えてきた「AIがコードを書く時代」の実相を考察する。
868のスキルをnpx 1コマンドで——「Antigravity Awesome Skills」が主要AIコーディングエージェントの共通スキル基盤になりつつある
Claude Code・Gemini CLI・Codex CLI・Cursor・GitHub Copilotなど主要AIコーディングアシスタントを横断する868以上のスキルライブラリ「Antigravity Awesome Skills」(v5.4.0)を詳細分析。Anthropic・Vercel・OpenAI・Supabase・Microsoftの公式スキルを統合した設計思想、ロール別バンドル・ワークフロー機能、SKILL.mdによる相互運用性のアーキテクチャを解説する。
最新記事
AIエージェント間通信の標準化競争が始まる——AquaとAgent Semantic Protocolが同日登場
2026年2月23日、Hacker Newsに2つのAIエージェント通信プロジェクトが同日掲載された。Go製CLI「Aqua」とセマンティックルーティングを実装する「Agent Semantic Protocol」は、MCPが解決できないP2P・非同期通信の課題に取り組む。
Claude Sonnet 4.6、無料・Proプランのデフォルトモデルに——社内テストでOpus 4.5を59%の確率で上回る
Anthropicは2026年2月17日にリリースしたClaude Sonnet 4.6を、claude.aiの無料・Proプランのデフォルトモデルに設定した。価格はSonnet 4.5と同額の$3/$15 per 1Mトークン。社内評価ではコーディングエージェント用途でOpus 4.5を上回る結果が出ている。
GoogleがOpenClaw経由のGemini利用ユーザーのアカウントを永久停止——月額$250請求継続のまま
2026年2月23日、Hacker Newsで140pt/107コメントを集めたレポートによると、GoogleはOpenClaw(サードパーティクライアント)経由でGeminiを使用していたGoogle AI Pro/Ultraユーザーを予告なしに永久停止した。技術的・経済的背景を整理する。