mcpField
A
american-airlines

american-airlines

github.com/borski生産性78078 回インストール2 日前に更新
リポジトリ

american-airlines について

American Airlines AAdvantageのアカウント情報をブラウザー操作で確認するスキルです。マイルやステータスを追跡する旅行者向けで、JSONを出力しますが、航空券の予約は行いません。

主な機能

  1. 01交換可能マイル残高の確認
  2. 02エリートステータスとロイヤリティポイントの表示
  3. 03Million Milerマイルの確認
  4. 042FAと永続プロファイルへの対応
  5. 05JSON形式での結果出力

活用シーン

  1. 01AAdvantageマイル残高の照合
  2. 02ロイヤリティポイントとステータス進捗の追跡
  3. 03エリートランクと有効期限の確認

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/borski/travel-hacking-toolkit --skill american-airlines

インストール後、Claude Code で/american-airlinesを入力して読み込まれたか確認します。

同梱ファイルDockerfilescripts/check_balance.py

詳細

American Airlines AAdvantage

AAdvantageの特典マイル残高、エリートステータス(Gold/Platinum/Platinum Pro/Executive Platinum)、ロイヤルティポイント、Million Milerステータスを確認します。AAは標準的なブラウザー自動化をブロックするため、Patchright(検出を回避するPlaywrightフォーク)を使用します。

Patchrightが必要です。 AA.comは、通常のPlaywrightとagent-browserをブロックします。

前提条件

pip install patchright && patchright install chromium

またはDockerを使用します(ローカルへのインストールは不要です):

docker pull ghcr.io/borski/aa-miles-check:latest
# or build locally:
docker build -t aa-check skills/american-airlines/

使用方法

認証情報は環境変数またはフラグで渡します。シークレットマネージャー(1Password、Vaultなど)を使用している場合は、通常の方法で注入してください。

# Environment variables
AA_USERNAME=your_aa_number AA_PASSWORD=your_password \
  python3 scripts/check_balance.py --json

# Flags
python3 scripts/check_balance.py --username YOUR_AA_NUMBER --password YOUR_PASSWORD --json

# Docker
docker run --rm -e AA_USERNAME=your_aa_number -e AA_PASSWORD=your_password aa-check --json

2FAの処理

AAでは、新しいデバイスから初めてログインする際にメール認証が必要です。スクリプトはコードを最大120秒間待機します。

あなた(エージェント)は、ユーザーのメールにアクセスできません。 AAは、2FAコードをアカウント所有者のメールアドレスに送信します。スクリプトが2FAに達したら、必ずユーザーに6桁のコードを尋ねてください。これは任意ではありません。メールを読もうとしないでください。推測しないでください。スキップしないでください。ユーザーに尋ね、回答を待ってから、コードファイルに書き込んでください。

エージェントのワークフロー
  1. スクリプトをバックグラウンドで実行します(nohup ... &、disown)
  2. stderrをポーリングして "2FA REQUIRED" を確認し、コードが送信されたことを確かめます
  3. AAからメールで届いた6桁のコードをユーザーに尋ねます
  4. コードファイルにコードを書き込みます:echo "123456" > /tmp/aa-2fa-code.txt
  5. スクリプトが完了するまで待ち、stdoutからJSONの結果を読み取ります
永続プロファイル(再実行時に2FAをスキップ)

--profile nameを使用してブラウザーのCookieを保存します。最初の2FAが正常に完了した後は、同じプロファイルで再実行すると2FAが完全にスキップされます。プロファイルは~/.aa-browser-profiles/{name}/に保存されます。セッションの有効期間は数日ではなく、数時間です。

# First run: will need 2FA
python3 scripts/check_balance.py --profile user1 --json

# Later runs: same profile, no 2FA
python3 scripts/check_balance.py --profile user1 --json
コードの入力方法
  • コマンドフック: AA_2FA_COMMANDに、コードを取得するまで待機してから標準出力に出力するコマンドを設定します。スクリプトはファイルのポーリングにフォールバックする前に、まずこのコマンドを実行します。
  • ファイル(デフォルト): スクリプトは2秒ごとに/tmp/aa-2fa-code.txtをポーリングします。6桁のコードをここに書き込みます。
  • 直接指定: 実行前にコードをすでに入手している場合は、--code 123456を指定します。
  • カスタムファイルパス: --code-file /path/to/code.txt

出力

{
  "username": "XXXXXXX",
  "status": "completed",
  "miles": 123425,
  "elite_status": "Platinum Pro",
  "loyalty_points": 180,
  "name": "John Doe",
  "aadvantage_number": "XXXXXXX",
  "million_miler": 19328,
  "member_since": "Aug 23, 2011"
}
項目説明
miles特典マイル残高(交換可能)
elite_statusGold、Platinum、Platinum Pro、またはExecutive Platinum(該当なしの場合はnull)
loyalty_points当年のロイヤルティポイント(3月1日にリセット)
million_milerMillion Milerステータスに向けた生涯マイル
member_sinceアカウント作成日

使用する場合

  • AAのマイル残高を確認する場合(AwardWalletはAAに対応していません)
  • エリートステータスのランクと有効期限を確認する場合
  • 次のステータスレベルに向けたロイヤルティポイントを追跡する場合
  • AAの特典航空券の空席状況を残高と照合する場合(seats-aeroと組み合わせます)

使用しない場合

  • フライトの予約。 読み取り専用です。何も変更しません。
  • その他の航空会社。 対応する航空会社にはAwardWalletを使用してください。

実装に関する注意

  • AAは2FAコードの入力に6つの独立した入力欄を使用します(1つの欄につき1桁)。スクリプトは各桁を個別に入力し、自動で次の欄に進みます。
  • Cookie同意バナーは、Verifyボタンを操作する前にJSで削除されます。
  • Verifyボタンの送信にはTab+Enterが必要です(JSの.click()もPlaywrightの.click()も、AAのReactアプリが受け付ける信頼済みのポインターイベントを生成しません)。
  • headless=Falseが必要です。AAはPatchrightを使用していてもヘッドレスブラウザーを検出します。Dockerでは仮想ディスプレイにxvfbを使用します。

制限事項

  • プロファイルごとに初回利用時は2FAが必要です。 回避する方法はありません。AAはメールでコードを送信します。コード取得を自動化するには、AA_2FA_COMMANDを設定してください。
  • セッションの有効期限。 永続プロファイルの有効期間は数日ではなく、数時間です。実行間隔が長いと、再度2FAが必要になる場合があります。
  • ヘッドありモードが必要です。 ローカルでChromeウィンドウが開きます。ポップアップを表示しない場合はDockerを使用してください。

コメント