# Edocode Monthly Accounting

> EDOCODE 株式会社の毎月の経理処理（証憑ファイル回収）を行うスキル。ユーザーから「EDOCODE の経理処理を始めよう」「EDOCODE の月次精算をお願い」などの依頼があった場合に使用する。Claude Code（`claude --chrome`）または Cowork 環境で、Claude in Chrome を使ったブラウザ操作により、各サービスの管理画面から請求書・領収書 PDF を自動回収する。ログイン等ユーザーにしかできない操作は都度依頼する。

- Skill: `diegosouzapw/edocode-monthly-accounting` (Agent Skill, multi-file: 2 files)
- Install (CLI): `npx skillmds@latest add diegosouzapw/edocode-monthly-accounting`
- Raw SKILL.md: https://api.skillmd.com/api/skills/diegosouzapw/edocode-monthly-accounting/raw
- Safety review: pending (external: skill-scanner PASS, skillspector PASS)
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Docs & Writing
- Author: diegosouzapw (https://skillmd.com/u/diegosouzapw)
- Updated: 2026-09-08
- Page: https://skillmd.com/skills/diegosouzapw/edocode-monthly-accounting

---


# EDOCODE Monthly Accounting v1

EDOCODE 株式会社で共通利用しているサービスのうち、管理画面から請求書・領収書 PDF を直接ダウンロードする必要があるものについて、Claude が主導して証憑ファイルを回収する。

## Prerequisites（前提条件）

- Claude Code（`claude --chrome` で起動）または Cowork 環境で実行すること
- Claude in Chrome 拡張機能が有効であること
- Keeper Fill が Chrome にインストール済みであること
- Google Workspace（`yamada.k@edocode.co.jp`）にログイン済みであること
- Cowork 環境の場合：ネットワーク allowlist に各サービスのドメインが追加されていること

## Preflight Checks（事前チェック）

Phase 1 に入る前に、以下のチェックを順番に実行する。すべてクリアしてから処理を開始する。

### Check 1: Chrome Connection（Chrome 接続確認）

Claude in Chrome との接続状態を確認する。

- 接続済みの場合 → Check 2 に進む
- 未接続の場合 → ユーザーに「Claude in Chrome が接続されていません。Chrome で Claude 拡張機能が有効になっていることを確認し、接続してください。」と依頼する。接続が確認できるまで待機する。

### Check 2: Downloads Folder Access（ダウンロードフォルダのアクセス確認）

このワークフローでは PDF をダウンロードするため、ダウンロードフォルダへのアクセスが必要。

- Claude Code の場合：ダウンロードフォルダ（通常 `~/Downloads`）にアクセスできることを確認する
- Cowork の場合：ダウンロードフォルダを作業フォルダとして追加するようユーザーに依頼する
- アクセスが確認できたら → Preflight Complete に進む

### Preflight Complete

すべてのチェックが完了したら：

1. 対象月の確認を行う（Common: Month Calculation 参照）
2. 作業フォルダを作成する（Common: Workspace Setup 参照）
3. 監査ログを初期化する（Common: Audit Log 参照）
4. 「事前チェック完了。証憑ファイルの回収を開始します。」と通知し、Phase 1 に進む

---

## Target Services（対象サービス）

| # | Service | Type | Login Method | Login ID | Billing URL |
|---|---------|------|-------------|----------|-------------|
| 1 | fondesk | 電話代行 | メール + パスワード（Keeper Fill） | `service-account@edocode.co.jp` | `https://www.fondesk.jp/app/account/invoices` |
| 2 | Figma | デザインツール | Google SSO（ポップアップ型） | `yamada.k@edocode.co.jp` | `https://www.figma.com/files/team/690131495837577799/team-admin-console/billing/invoices` |
| 3 | TimeRex | 日程調整 | Google SSO（ページ遷移型） | `yamada.k@edocode.co.jp` | `https://timerex.net/user/team/1/billing` |
| 4 | Bitly | URL短縮 | メール + パスワード（Keeper Fill） | `service-account@edocode.co.jp` | `https://app.bitly.com/settings/organization/Okbk5aX3uEc/billing` |
| 5 | Krisp | ノイズキャンセル | Google SSO（ページ遷移型） | `yamada.k@edocode.co.jp` | `https://account.krisp.ai/billing-team/details` |
| 6 | n8n | ワークフロー自動化 | メール + パスワード（2段階ログイン） | `yamada.k@edocode.co.jp` | `https://app.n8n.cloud/manage/billing` |
| 7 | Microsoft | クラウドサービス | Microsoft SSO（ユーザー操作） | `yamada.k@edocode.co.jp` | `https://admin.cloud.microsoft/#/billoverview/invoice-list` |
| 8 | OpenAI | AI サービス | Google SSO（ページ遷移型）+ MFA | `yamada.k@edocode.co.jp` | `https://chatgpt.com/admin/billing?tab=invoices` |

## Execution Order（実行順序）

上記の番号順に実行する。各サービスの開始時にユーザーに「Service {#}: {サービス名} を開始します」と通知する。

---

## Common: Login Handling（共通：ログイン処理）

各サービスのページを開いた際、以下の判定を行う：

1. ページ内容からログイン状態を判定する
2. **ログイン済みの場合** → そのままデータ取得を続行
3. **未ログイン（ログインページにリダイレクトされた等）の場合：**

### Pattern A: メール + パスワード（Keeper Fill）

fondesk, Bitly など、メールアドレスとパスワードでログインするサービス。

1. ログインページが表示されたら、メールアドレス欄にスキルに登録された ID が入力されているか確認する
2. Keeper Fill がパスワードを自動入力しているか確認する
3. **正しい ID と Keeper Fill のパスワードが入力されている場合：**
   - `find` ツールでログインボタンを検索する（例：`find "続ける submit button"`、`find "Log in button"`）
   - `ref` でボタンをクリックしてログインを完了する
4. **Keeper Fill が自動入力していない、または複数アカウントが候補に出ている場合：**
   - ユーザーに「{サービス名} に {メールアドレス} でログインが必要です。Keeper Fill でログイン情報を入力してください。完了したら OK と教えてください。」と伝える
   - ユーザーの「OK」を待つ

### Pattern B: Google SSO（ページ遷移型）

TimeRex など、Google ログインが同じタブ内でページ遷移するサービス。

1. ログインページで「Google でログイン」ボタンを `find` ツールで検索する（例：`find "Googleでログイン link"`）
2. `ref` でクリックする
3. Google アカウント選択画面が表示されたら、スキルに登録されたアカウントを `find` ツールで検索する（例：`find "yamada.k@edocode.co.jp account option"`）
4. `ref` でクリックしてログインを完了する
5. サービスのページに自動リダイレクトされることを確認する

### Pattern C: Google SSO（ポップアップ型）

Figma など、Google ログインが別ウィンドウのポップアップで開くサービス。

1. Claude からはポップアップウィンドウを操作できないため、ユーザーに依頼する
2. ユーザーに「{サービス名} に Google アカウント（{メールアドレス}）でログインしてください。完了したら OK と教えてください。」と伝える
3. ユーザーの「OK」を待つ

### Pattern D: Microsoft SSO（ユーザー操作）

Microsoft 365 Admin Center など、Microsoft アカウントでログインするサービス。

1. Microsoft SSO（`login.microsoftonline.com`）はポップアップやリダイレクトの挙動が環境依存であり、Claude からの操作が不安定なため、ユーザーに依頼する
2. ユーザーに「{サービス名} に Microsoft アカウント（{メールアドレス}）でログインしてください。完了したら OK と教えてください。」と伝える
3. ユーザーの「OK」を待つ

### Pattern E: Google SSO（ページ遷移型）+ MFA

OpenAI など、Google SSO 後にサービス独自の多要素認証（MFA）が求められるサービス。

1. Pattern B と同様に Google SSO でアカウント選択まで完了する
2. Google SSO 完了後、サービス独自の MFA ページ（`auth.openai.com/mfa-challenge` 等）にリダイレクトされる
3. MFA（ワンタイムパスワード入力）は Claude では操作できないため、ユーザーに依頼する：
   - ユーザーに「{サービス名} の多要素認証（MFA）が求められています。認証アプリのワンタイムコードを入力して『続行』をクリックしてください。完了したら OK と教えてください。」と伝える
4. ユーザーの「OK」を待つ

**重要：ログインフォームにパスワードを直接入力してはならない。Keeper Fill がフォームを自動入力する。**

## Common: Month Calculation（共通：対象月の計算）

経理処理は月初に前月分を処理する。現在日付から前月を自動計算する。

- 現在が 2026年2月 → 対象月は 2026年1月
- 処理開始時にユーザーに「対象月: {YYYY年M月} で処理します。変更する場合は教えてください。」と確認する

## Common: Workspace Setup（共通：作業フォルダ）

対象月の確定後、プロジェクトディレクトリ内に作業フォルダを作成する。

```
{プロジェクトディレクトリ}/
└── {YYYY-MM}/              ← 作業フォルダ（対象月）
    ├── downloads/          ← ダウンロードファイル保管
    └── audit.log           ← 監査ログ
```

- フォルダ名は対象月の `YYYY-MM` 形式（例：`2026-01`）
- `downloads/` サブフォルダを作成する
- 作業中にダウンロードした PDF はすべて `~/Downloads` から `downloads/` フォルダに移動して保管する
- ファイル名は `{YYYY-MM}_{サービス名}.pdf` の形式にリネームする（例：`2026-01_fondesk.pdf`）

## Common: Audit Log（共通：監査ログ）

作業の監査・追跡を目的として、作業フォルダ内に `audit.log` を作成する。後から「何をどう判断し、何をダウンロードしたか」を辿れることが目的。

### ログフォーマット

```
[YYYY-MM-DD HH:MM:SS] CATEGORY: message
```

CATEGORY は以下のいずれか：
- `INIT` — 作業開始・パラメータ確定
- `SELECT` — データ選択の判断根拠
- `DOWNLOAD` — ファイルダウンロード実行
- `COMPLETE` — Phase/作業完了

### 記録タイミングと内容

**INIT（Preflight Complete 時）:**
```
[timestamp] INIT: target_month=2026-01, workspace={作業フォルダパス}
```

**SELECT（各サービスで対象月の請求書を特定した時）:**
```
[timestamp] SELECT: {サービス名} invoice found, date={日付}, amount={金額}
```

**DOWNLOAD（PDF ダウンロード完了時）:**
```
[timestamp] DOWNLOAD: {サービス名} file={ファイル名}, saved_as={保存先パス}
```

**COMPLETE（全サービス完了時）:**
```
[timestamp] COMPLETE: all services finished, files_downloaded={件数}
```

---

## Service 1: fondesk

### Login

- **Login ID**: `service-account@edocode.co.jp`
- **Login Method**: Pattern A（メール + パスワード / Keeper Fill）
- **Login URL**: `auth.fondesk.jp/u/login`（`fondesk.jp/app/*` にアクセスすると自動リダイレクト）
- **Login Page判定**: ページタイトルに「ログイン」を含む、または URL が `auth.fondesk.jp` を含む場合はログインが必要
- **Login手順**:
  1. メールアドレス欄に `service-account@edocode.co.jp` が入力されているか確認
  2. Keeper Fill がパスワードを自動入力しているか確認
  3. `find "続ける submit button"` でログインボタンを取得
  4. `ref` でクリック

### Download手順

1. Claude in Chrome で以下の URL を開く：
   ```
   https://www.fondesk.jp/app/account/invoices
   ```
2. ログイン判定を行い、必要であればログイン処理を実施する
3. 請求書一覧が表示される。各行は「{YYYY}年{M}月10日 発行分 #{番号}」の形式。対象月分を特定する
   - 例：対象月が 2026年1月 → 「2026年1月10日 発行分」を探す
4. 対象月の行の右端にある「請求書」リンクをクリックする
   - `find "請求書 link near {対象年}年{対象月}月10日"` で要素を取得
   - `ref` でクリック
5. **新しいタブ**で Stripe の請求書ページ（`invoice.stripe.com`）が開く
6. 新しいタブに切り替える（`tabs_context_mcp` でタブ一覧を取得し、Stripe のタブ ID を確認）
7. 「請求書をダウンロード」ボタンをクリック：
   - `find "請求書をダウンロード button"` で要素を取得
   - `ref` でクリック
8. `~/Downloads` に `Invoice-{番号}.pdf` がダウンロードされる
9. ダウンロードしたファイルを作業フォルダの `downloads/` に移動しリネーム

### Download対象

- **請求書**をダウンロードする（領収書ではない）

---

## Service 2: Figma

### Login

- **Login ID**: `yamada.k@edocode.co.jp`
- **Login Method**: Pattern C（Google SSO / ポップアップ型）
- **Login URL**: `figma.com/login`（請求書ページからリダイレクト）
- **Login Page判定**: ページタイトルに「ログイン」を含む、または URL が `figma.com/login` を含む場合はログインが必要
- **Login手順**:
  1. ユーザーに「Figma に Google アカウント（`yamada.k@edocode.co.jp`）でログインしてください。完了したら OK と教えてください。」と伝える
  2. ユーザーの「OK」を待つ

### Download手順

1. Claude in Chrome で以下の URL を開く：
   ```
   https://www.figma.com/files/team/690131495837577799/team-admin-console/billing/invoices
   ```
2. ログイン判定を行い、必要であればログイン処理を実施する
3. Billing > Invoices ページが表示される。各行は「{Month} {DD}, {YYYY}」形式の Due date で表示される。毎月12日に Monthly invoice が発行される
4. 対象月の行をクリックする（行のどこでもクリック可能）
   - 例：対象月が 2026年1月 → 「January 12, 2026」の行をクリック
5. 右側に請求書詳細パネルが開く
6. パネルの下部までスクロールする（右側パネル内をスクロール）
7. 「Download PDF」リンクをクリック：
   - `find "Download PDF link"` で要素を取得
   - `ref` でクリック
8. **新しいタブ**が一瞬開いてすぐ閉じ、PDF がダウンロードされる
9. `~/Downloads` に `Invoice-{番号}.pdf` がダウンロードされる
10. ダウンロードしたファイルを作業フォルダの `downloads/` に移動しリネーム

---

## Service 3: TimeRex

### Login

- **Login ID**: `yamada.k@edocode.co.jp`
- **Login Method**: Pattern B（Google SSO / ページ遷移型）
- **Login URL**: `timerex.net/auth/login`（`timerex.net/user/*` にアクセスすると自動リダイレクト）
- **Login Page判定**: ページタイトルに「ログイン」を含む、または URL が `timerex.net/auth/login` を含む場合はログインが必要
- **Login手順**:
  1. `find "Googleでログイン link"` でボタンを取得
  2. `ref` でクリック → Google アカウント選択画面にページ遷移
  3. `find "yamada.k@edocode.co.jp account option"` でアカウントを取得
  4. `ref` でクリック → TimeRex にリダイレクトされログイン完了

### Download手順

1. Claude in Chrome で以下の URL を開く：
   ```
   https://timerex.net/user/team/1/billing
   ```
2. ログイン判定を行い、必要であればログイン処理を実施する
3. 請求履歴が表示される。各行は「決済日時 / オーダー番号 / 金額（税込）/ 領収書・明細」のカラム。**一覧は古い順**なので、ページ最下部までスクロールが必要
4. 対象月分の行を特定する（決済日時の月で判断。毎月14日頃に決済）
   - 例：対象月が 2026年1月 → 「2026/1/14」の行を探す
5. 「表示する」リンクをクリック：
   - `find "表示する link near {YYYY/M/14}"` で要素を取得
   - `ref` でクリック
6. **新しいタブ**で「利用明細書・領収書」HTML ページが開く
7. このページは PDF ダウンロードボタンがないため、ユーザーに手動保存を依頼する：
   - ユーザーに「TimeRex の領収書ページが開きました。ブラウザで Cmd+P → 『PDF として保存』でダウンロードしてください。ファイル名は `TimeRex_{オーダー番号}.pdf` にしてください。完了したら OK と教えてください。」と伝える
   - ユーザーの「OK」を待つ
8. ダウンロードしたファイルを作業フォルダの `downloads/` に移動しリネーム

---

## Service 4: Bitly

### Login

- **Login ID**: `service-account@edocode.co.jp`
- **Login Method**: Pattern A（メール + パスワード / Keeper Fill）
- **Login URL**: `app.bitly.com`（ログインページにリダイレクト）
- **Login Page判定**: URL が `bitly.com/a/sign_in` または `bitly.com/a/oauth` を含む場合はログインが必要
- **Login手順**:
  1. メールアドレス欄に `service-account@edocode.co.jp` が入力されているか確認
  2. Keeper Fill がパスワードを自動入力しているか確認
  3. `find "Log in submit button"` でログインボタンを取得
  4. `ref` でクリック

### Download手順

1. Claude in Chrome で以下の URL を開く：
   ```
   https://app.bitly.com/settings/organization/Okbk5aX3uEc/billing
   ```
2. ログイン判定を行い、必要であればログイン処理を実施する
3. Billing and usage ページが表示される。下にスクロールすると請求一覧がある
4. 請求一覧は新しい順で表示される。各行は「{MM/DD/YYYY} / Basic Subscripti... / ${金額} USD / ...」の形式
5. 対象月の行の「...」メニューボタンをクリックする
   - 対象月の日付は毎月20日（例：01/20/2026）
   - `...` ボタンは行の右端にある
6. ドロップダウンメニューが表示されたら「Download PDF」をクリック：
   - `find "Download PDF menu option"` で要素を取得
   - `ref` でクリック
7. `~/Downloads` に `bitly-invoice-{YYYY-MM-DD}.pdf` がダウンロードされる
8. ダウンロードしたファイルを作業フォルダの `downloads/` に移動しリネーム

---

## Service 5: Krisp

### Login

- **Login ID**: `yamada.k@edocode.co.jp`
- **Login Method**: Pattern B（Google SSO / ページ遷移型）
- **Login URL**: `https://account.krisp.ai/login`
- **Login Page判定**: URL が `account.krisp.ai/login` を含む場合はログインが必要
- **Login手順**:
  1. `find "Continue with Google button"` でボタンを取得
  2. `ref` でクリック → Google アカウント選択画面にページ遷移
  3. `find "yamada.k@edocode.co.jp account option"` でアカウントを取得
  4. `ref` でクリック → Krisp にリダイレクトされログイン完了

### Logout手順（参考）

1. 左サイドバー最下部の「Kyo Yamada」ユーザーメニューをクリック
   - `find "Kyo Yamada user menu or profile button"` で取得 → `ref` でクリック
2. メニューから「サインアウト」をクリック
   - `find "サインアウト link"` で取得 → `ref` でクリック
3. ログインページにリダイレクトされる

### Download手順

1. Claude in Chrome で以下の URL を開く：
   ```
   https://account.krisp.ai/billing-team/details
   ```
2. ログイン判定を行い、必要であればログイン処理を実施する
3. Billing ページが表示される。「Invoice history」セクションに請求履歴がある
4. 対象月の「請求書を見る」リンクをクリック：
   - `find "請求書を見る link for {対象月の英語名} {対象日} {対象年}"` で要素を取得（例：`find "請求書を見る link for Jan 25 2026"`）
   - `ref` でクリック
5. **新しいタブ**で Stripe の領収書ページ（`pay.stripe.com`）が開く
6. 新しいタブに切り替える（`tabs_context_mcp` でタブ一覧を取得し、Stripe のタブ ID を確認）
7. 「Download invoice」リンクをクリック：
   - `find "Download invoice link"` で要素を取得
   - `ref` でクリック
8. `~/Downloads` に `Invoice-{番号}.pdf` がダウンロードされる
9. ダウンロードしたファイルを作業フォルダの `downloads/` に移動しリネーム

### Download対象

- **請求書（Invoice）** をダウンロードする

---

## Service 6: n8n

### Login

- **Login ID**: `yamada.k@edocode.co.jp`
- **Login Method**: 2段階ログイン（Cloud Admin Panel → Instance）
- **Login URL（Stage 1）**: `https://app.n8n.cloud/login`（Cloud Admin Panel）
- **Login URL（Stage 2）**: `https://edocode.app.n8n.cloud/signin`（Instance）
- **Login Page判定**: URL が `app.n8n.cloud/login` を含む場合はログインが必要

**重要**: n8n は Cloud Admin Panel（`app.n8n.cloud`）と Instance（`edocode.app.n8n.cloud`）の2つのポータルがあり、認証セッションが別々。Billing は Cloud Admin Panel 側にある。

- **Login手順（Stage 1 - Cloud Admin Panel）**:
  1. `https://app.n8n.cloud/login` が表示される
  2. アカウント名入力欄に `edocode` を入力する。**重要：フィールドに値がプリフィルされている場合でも、JSフレームワーク（Nuxt.js）が値を認識しないことがある。以下の手順で確実に入力する：**
     - `find "account name input field"` で入力欄を取得
     - `ref` でトリプルクリック（`triple_click`）して既存のテキストを全選択
     - `type` アクションで `edocode` を入力
     - `key` アクションで `Return` を押す（Enter で Submit）
  3. Instance のログインページ（`edocode.app.n8n.cloud/signin`）にリダイレクトされる

- **Login手順（Stage 2 - Instance）**:
  1. メールアドレス欄とパスワード欄が表示される
  2. Keeper Fill がパスワードを自動入力しているか確認する
  3. **正しい ID と Keeper Fill のパスワードが入力されている場合：**
     - `find "Sign in button"` でログインボタンを取得
     - `ref` でクリック
  4. **Keeper Fill が自動入力していない場合：**
     - ユーザーに「n8n に `yamada.k@edocode.co.jp` でログインが必要です。Keeper Fill でログイン情報を入力してください。完了したら OK と教えてください。」と伝える
  5. ログイン完了後、Instance のダッシュボードにリダイレクトされる
  6. **Billing ページに移動するため** `https://app.n8n.cloud/manage/billing` にナビゲートする。Instance にログイン済みであれば Cloud Admin Panel も自動認証される

### Logout手順（参考）

n8n は Cloud Admin Panel と Instance で別々にログアウトが必要：

**Cloud Admin Panel のログアウト:**
1. 右上の「Sign out」ボタンをクリック

**Instance のログアウト:**
1. 左下の「Kyo Yamada」ユーザーメニューボタンをクリック
   - `find "Kyo Yamada user menu button"` で取得 → `ref` でクリック
2. メニューから「Sign out」をクリック
   - `find "Sign out menu item"` で取得 → `ref` でクリック

### Download手順

1. Claude in Chrome で以下の URL を開く：
   ```
   https://app.n8n.cloud/manage/billing
   ```
2. ログイン判定を行い、必要であればログイン処理を実施する
3. Cloud Admin Panel の Billing ページが表示される。「Transaction history」セクションに取引履歴がある
4. 対象月の行をクリックする（行のどこでもクリック可能）
   - 行が展開され「Open」ボタンが表示される
5. 「Open」ボタンをクリック：
   - `find "Open button"` で要素を取得
   - `ref` でクリック
6. **新しいタブ**で Paddle.com の領収書ページ（`my.paddle.com/invoice/...`）が開く
7. **Paddle の領収書ページは HTML 表示であり、PDF ダウンロードボタンがない**ため、ユーザーに手動保存を依頼する：
   - ユーザーに「n8n の Paddle.com 領収書ページが開きました。ブラウザで Cmd+P → 『PDF として保存』でダウンロードしてください。ファイル名は `n8n_receipt_{YYYY-MM}.pdf` にしてください。完了したら OK と教えてください。」と伝える
   - ユーザーの「OK」を待つ
8. ダウンロードしたファイルを作業フォルダの `downloads/` に移動しリネーム

### Download対象

- **領収書（Receipt）** を PDF 保存する（Paddle.com は HTML のみ提供）

---

## Service 7: Microsoft

### Login

- **Login ID**: `yamada.k@edocode.co.jp`
- **Login Method**: Pattern D（Microsoft SSO / ユーザー操作）
- **Login URL**: Microsoft 365 Admin Center（`admin.cloud.microsoft`）は通常 Microsoft SSO で自動ログインされる
- **Login Page判定**: URL が `login.microsoftonline.com` を含む場合はログインが必要
- **Login手順**:
  1. ユーザーに「Microsoft 365 Admin Center に Microsoft アカウント（`yamada.k@edocode.co.jp`）でログインしてください。完了したら OK と教えてください。」と伝える
  2. ユーザーの「OK」を待つ

### Download手順

1. Claude in Chrome で以下の URL を開く：
   ```
   https://admin.cloud.microsoft/#/billoverview/invoice-list
   ```
2. ログイン判定を行い、必要であればログイン処理を実施する
3. 「請求と支払い」ページが表示される。請求書の一覧が表示される
4. 対象月の請求書 ID リンクをクリックする：
   - `find "{請求書ID} invoice link"` で要素を取得（例：`find "G139153324 invoice link"`）
   - `ref` でクリック
5. 請求書の詳細ページが開く
6. 「ダウンロード」ドロップダウンボタンをクリック：
   - `find "ダウンロード dropdown button"` で要素を取得
   - `ref` でクリック
7. ドロップダウンメニューから「請求書をダウンロード」をクリック：
   - `find "請求書をダウンロード menu option"` で要素を取得
   - `ref` でクリック
8. `~/Downloads` に `{請求書ID}_{ハッシュ}.pdf` がダウンロードされる
9. ダウンロードしたファイルを作業フォルダの `downloads/` に移動しリネーム

### 請求書一覧ページへの到達方法（代替）

Billing URL で直接請求書一覧が表示されない場合：
1. `https://admin.cloud.microsoft/` を開く
2. 左サイドバーの「課金情報」を展開
3. `find "請求と支払い menu item"` で要素を取得 → `ref` でクリック

### Download対象

- **請求書** をダウンロードする

---

## Service 8: OpenAI (ChatGPT)

### Login

- **Login ID**: `yamada.k@edocode.co.jp`
- **Login Method**: Pattern E（Google SSO / ページ遷移型 + MFA）
- **Login URL**: `https://chatgpt.com/` → 右上「ログイン」ボタン
- **Login Page判定**: ページ右上に「ログイン」ボタンが表示されている場合はログインが必要
- **Login手順**:
  1. `chatgpt.com` のトップページで右上の「ログイン」ボタンをクリック：
     - `find "ログイン button"` で取得 → `ref` でクリック
  2. 「ログインまたはサインアップ」モーダルが表示される
  3. 「Google で続行」ボタンをクリック：
     - `find "Google で続行 button"` で取得 → `ref` でクリック
  4. Google アカウント選択画面にページ遷移する
  5. `find "yamada.k@edocode.co.jp account option"` でアカウントを取得
  6. `ref` でクリック
  7. **MFA ページ**（`auth.openai.com/mfa-challenge`）にリダイレクトされる
  8. ユーザーに「OpenAI の多要素認証（MFA）が求められています。認証アプリのワンタイムコードを入力して『続行』をクリックしてください。完了したら OK と教えてください。」と伝える
  9. ユーザーの「OK」を待つ

### Logout手順（参考）

1. ChatGPT メイン画面の左下「Kyo Yamada / EDOCODE Inc.」をクリック
   - `find "Kyo Yamada user menu or profile button"` で取得 → `ref` でクリック
2. メニューから「ログアウト」をクリック
   - `find "ログアウト menu item"` で取得 → `ref` でクリック
3. 確認ダイアログ「ログアウトしますか？」が表示される
4. 「ログアウト」ボタンをクリック：
   - `find "ログアウト confirm button in dialog"` で取得 → `ref` でクリック

### Download手順

1. Claude in Chrome で以下の URL を開く：
   ```
   https://chatgpt.com/admin/billing?tab=invoices
   ```
2. ログイン判定を行い、必要であればログイン処理を実施する
3. EDOCODE Inc. の管理者 > 請求 > 請求書タブが表示される。請求書一覧が表示される
4. 対象月の請求書の行にある外部リンクアイコン（緑色の矢印アイコン）をクリック：
   - `find "external link icon for {対象年}年{対象月}月{日}日 invoice"` で要素を取得（例：`find "external link icon for 2026年1月31日 invoice"`）
   - **注意**: 行自体をクリックすると次ページに遷移してしまうので、必ず外部リンクアイコン（`<a>` タグ）を `find` で正確に検索すること
   - `ref` でクリック
5. **新しいタブ**で Stripe の請求書ページ（`invoice.stripe.com`）が開く
6. 新しいタブに切り替える（`tabs_context_mcp` でタブ一覧を取得し、Stripe のタブ ID を確認）
7. 「請求書をダウンロード」ボタンをクリック：
   - `find "請求書をダウンロード button"` で要素を取得
   - `ref` でクリック
8. `~/Downloads` に `Invoice-{番号}.pdf` がダウンロードされる
9. ダウンロードしたファイルを作業フォルダの `downloads/` に移動しリネーム

### Download対象

- **請求書** をダウンロードする（領収書ではない）

---

## Completion（完了処理）

全サービス完了後、ユーザーに以下のサマリーを表示する：

```
## EDOCODE 月次証憑ファイル回収 完了サマリー

対象月: {YYYY年M月}

### 回収ファイル一覧
| # | サービス | ファイル名 | ステータス |
|---|---------|----------|----------|
| 1 | fondesk | {ファイル名} | 完了 |
| 2 | Figma | {ファイル名} | 完了 |
| 3 | TimeRex | {ファイル名} | 完了 |
| 4 | Bitly | {ファイル名} | 完了 |
| ... | ... | ... | ... |

保存先: {作業フォルダ}/downloads/
```

## Security Notes（セキュリティに関する注意事項）

- **パスワードやログイン認証情報を会話コンテキストに出力してはならない**
- ログインは必ず Keeper Fill 経由で行い、Claude がフォームに直接入力しない
- Google SSO のアカウント選択のみ Claude が操作する（パスワード入力は発生しない）
- 各サービスの URL やデータ内容は業務上必要な範囲でのみ表示する
- PDF に含まれる個人情報・機密情報は必要最小限の抽出にとどめる

## Click Operation Guidelines（クリック操作の指針）

Web ページのクリック操作は失敗しやすいため、以下のルールを厳守する：

1. **座標クリックではなく、必ず `find` → `ref` クリックを使う**
   - まず `find` ツールで対象要素を自然言語で検索する
   - 取得した `ref_xxx` を使って `ref` パラメータでクリックする
2. **`find` の検索キーワードは具体的に書く**
   - 良い例：`find "Download PDF menu option"`, `find "続ける submit button"`, `find "表示する link near 2026/1/14"`
   - 悪い例：`find "button"`, `find "link"`
3. **新しいタブが開くケースに注意する**
   - fondesk の Stripe ページ、TimeRex の領収書ページなど、リンクが新タブで開くケースがある
   - `tabs_context_mcp` でタブ一覧を更新し、正しいタブ ID で操作する
4. **スクロールが必要なケースに注意する**
   - Figma の詳細パネル内スクロール、TimeRex の古い順リスト最下部など

