Communityライティング&編集github.com

guanxiong/VibeSMS

AndroidスマートフォンをAIエージェント向けのSMSおよび通話ゲートウェイに変換します。

VibeSMS とは?

VibeSMSは、AIエージェントがユーザー所有のAndroidスマートフォンとSIMにアクセスできるようにするツールです。エージェントは、SMS受信箱全体を公開することなく、指定された電話番号に対して4つの集中した操作(端末のバインド状態確認、イベントカーソル取得、検証コード待機、メッセージ読み取り)を実行できます。Android端末は別のデバイス認証情報を使用してアップロードするため、エージェントキーはイベントをアップロードしたり他の番号を読み取ったりすることができません。VibeSMSはClaude Code、Cursor、CodexなどのAIエージェントプラットフォームと連携し、`scripts/vibesms.py`スクリプトを使用して決定論的なAPI呼び出しを提供します。主な用途は、外部サービスがSMSを送信した後の検証コードの受信であり、カーソルを事前に取得することで新しいコードと古いメッセージを区別します。

対応✓Claude Code~Codex CLI✓Cursor
npx skills add guanxiong/VibeSMS

Installed? Explore more ライティング&編集 skills: steipete/notion, langchain-ai/langchain, bytedance/podcast-generation · View all 6 →

お気に入りのAIに質問する

このエージェントスキルを事前に読み込んだ状態で新しいチャットを開きます。

ドキュメント

VibeSMS は何をしますか?

AIエージェントをユーザー所有のAndroidスマートフォンおよびSIMに接続し、SMS受信箱全体を公開せずに利用できるようにします。単一の VIBESMS_KEY により、エージェントは割り当てられた電話番号のみにアクセスし、以下の4つの集中的なアクションをサポートします。

  • Android端末がバインドされオンラインであるかを確認する。
  • 外部サービスがメッセージを送信する前にイベントカーソルを取得する。
  • そのカーソル以降に受信した新しい4~8桁の確認コードを待機する。
  • キー分離されたSMSおよび着信通話イベントを読み取る。

Android端末は別のデバイス認証情報を使用してアップロードするため、エージェントキーはイベントをアップロードしたり他の番号を読み取ったりすることはできません。決定論的なAPI呼び出しにはバンドルされたクライアントを使用してください。 scripts/vibesms.py はこの SKILL.md からの相対パスで解決してください。カレントワーキングディレクトリにスキルが含まれていると想定しないでください。

前提条件

  • 環境変数またはエージェントのシークレットストアに VIBESMS_KEY が必要です。
  • セルフホストインスタンスの場合のみ VIBESMS_BASE_URL を使用します。デフォルトは https://sms.shareapi.ai です。
  • ユーザーにキーをチャット、コマンド引数、ソースコード、ログに貼り付けるよう依頼しないでください。
  • キーを出力に露出しないでください。キーがない場合は、シークレットを設定するようユーザーに依頼してください。

確認コードを受信する

  1. 外部SMSをトリガーする直前にカーソルを取得します。

    python3 <skill-directory>/scripts/vibesms.py status
    
  2. JSONレスポンスから cursor 値を読み取ります。

  3. SMSを送信するユーザー認可済みアクションをトリガーします。

  4. そのカーソル以降に受信した最初の4~8桁のコードを待機します。

    python3 <skill-directory>/scripts/vibesms.py wait-otp --after-id <cursor> --timeout 60
    
  5. コードはユーザーが認可したタスクにのみ使用し、完了後は保持しないでください。

常に最初にカーソルを取得してください。カーソルがないと、古いメッセージが新しい確認コードと誤認される可能性があります。

端末の状態を確認する

次を実行します:

python3 <skill-directory>/scripts/vibesms.py status

bound が false の場合、キーがAndroid SIMとペアリングされていないことをユーザーに伝えます。online が false の場合、端末が再接続してオフラインキューを再生した後でもメッセージが到着する可能性があることを説明します。

受信箱イベントを読み取る

次のいずれかを実行します:

python3 <skill-directory>/scripts/vibesms.py inbox --after-id <cursor>
python3 <skill-directory>/scripts/vibesms.py inbox --type sms --limit 20
python3 <skill-directory>/scripts/vibesms.py inbox --type call --limit 20

タスク固有の読み取りには after-id を推奨します。ユーザーのタスクに必要なフィールドのみを返し、無関係なメッセージ内容や電話番号を繰り返さないでください。

エラー

  • 401: キーが無効、無効化、またはローテーションされています。ユーザーにシークレットの更新を依頼してください。
  • status=timeout: 該当するOTPが期限までに到着しませんでした。端末の状態を確認し、ユーザーがまだ待機を希望する場合にのみ再試行してください。
  • ネットワーク/TLS障害: ヘッダーやキーを表示せずに、エンドポイントと障害内容を報告してください。

生のエンドポイントスキーマやセルフホスト統合の詳細が必要な場合のみ、references/api.md を参照してください。

関連スキル