キャリアド記事：tl;dv → GAS → Claude → Notion　配布版1.0
2026-10-01（2026-10-09 説明更新・テキスト版を追加） / この一式は自社環境に設定して使うテンプレートです。

■ 最初に
AIに相談しながら進める場合は、同梱の AI_GUIDE.md をAIに渡してください（手順・設定値・困ったときの表をまとめています）。
tl;dv・Notion以外のツールを使う場合も AI_GUIDE.md の第5章（作り替え）を参照してください。
GASに貼るのはコード本体1つだけです（5つのファイルを全部貼るのではありません）。
MeetingAutomation.gs と MeetingAutomation.txt は同じ内容です。.gs を開けるアプリがない場合は .txt を使ってください。
手順：
 1. script.google.com で新しいプロジェクトを作る。
 2. 左上の「無題のプロジェクト」を、テスト用と分かる名前（例：面談自動化テスト）に変える。
 3. MeetingAutomation.txt をテキストエディタで開き、本文をクリックして全選択・コピー
    （Mac：Command+A → Command+C／Windows：Ctrl+A → Ctrl+C）。
    コピーするのはファイル名ではなく、ファイルの中に書かれたコード全部です。
 4. GASの「コード.gs」のコード欄をクリックし、初期コードを全選択して、コピーしたコードを貼り付ける
    （Mac：Command+A → Command+V／Windows：Ctrl+A → Ctrl+V）。保存する。
 5. APIキーなどはコードに書かず、「プロジェクトの設定」のスクリプトプロパティに入力して保存する。
この記事の撮影用プロジェクトは別の検証ファイルも含みます。配布版はこの1ファイルで動きます。
本番の顧客データを使わず、架空の面談とテスト用Notionで先に確認してください。
GASをウェブアプリとして公開する必要はありません。Webhookも使いません。

■ 必要なサービス
・tl;dv：録画主催者がAPI利用可能な契約・権限を持つこと。画面で見える録画でもAPIで取得できるとは限りません。
  （記事の検証環境はProプランでAPIを利用）
・Claude API：利用登録、クレジット等の支払い設定、利用可能なモデルID。
  ChatGPTやClaudeのチャット契約とは別です。分析にはAPI利用料がかかります。
・Notion：インテグレーションを作成し、面談記録と求職者台帳の両方へアクセスを許可。
・Google：GASを実行するGoogleアカウント。実行時間やAPI利用上限があります。

■ 事前に用意するテストデータ
・テスト用の求職者台帳（Notion）と、架空の求職者ページ1件。本番の台帳は使わない。
・tl;dvで録画した架空の面談1件。文字起こしが表示されたら、録画ページURLの末尾の英数字を控える（TEST_MEETING_ID）。

■ Notionの9列（列名と種類を合わせる）
タイトル：タイトル
Claude分析結果：テキスト
TLDV_meetingId：テキスト
候補者：リレーション（求職者台帳への接続）
失注リスクスコア：数値
担当CA：セレクト（担当者名を事前に選択肢へ登録）
面談回数：数値
面談日：日付
面談種別：セレクト（通常面談、面接対策を事前登録）

■ スクリプトプロパティ
GAS「プロジェクトの設定」→「スクリプト プロパティ」に追加。
値はチャットや記事には貼らず、自分のGASに入力します。
TLDV_API_KEY：tl;dvで発行したキー
ANTHROPIC_API_KEY：Claude Consoleで発行したキー
NOTION_TOKEN：記事用Notion接続のトークン
NOTION_DATA_SOURCE_ID：面談記録のデータソースID
CANDIDATE_DATA_SOURCE_ID：求職者台帳のデータソースID
CLAUDE_MODEL：自分のアカウントで使用可能なモデルの正確なAPI ID。検証では claude-sonnet-5-5（2026年10月時点）。
  一覧：https://platform.claude.com/docs/en/about-claude/models/overview
TEST_MEETING_ID：架空の録画のID（tl;dv録画URLの末尾）
POLL_FROM：取得を始める過去の日時。例 2026-09-30T00:00:00+09:00
MODE：最初は test
TARGETS_JSON：次の対応表をJSON配列として入力

データソースIDとページIDは別です。
画面で確認する場合：データベースの設定メニュー→「データソースを管理」→対象の「…」→「データソースIDをコピー」
（表記は変わることがあります）。
GASで確認する場合：AI_GUIDE.md の「A8-2」にある showDataSourceIds を
一時的に貼り付けて実行。NOTION_TOKEN を先に登録しておきます。確認後は削除して構いません。
仕組みとしては、Notion APIのデータベース取得
GET https://api.notion.com/v1/databases/{database_id}
の data_sources から対象名の id を確認します。複数ある場合は先頭を勝手に選ばないでください。
データベースIDはNotionの元データベースを開いたURL内の32桁です（?v=の値ではありません）。
Notion APIバージョン2025-09-03を使います。API操作に不慣れなら、キーは伏せてAIへ確認手順を相談してください。
求職者のページIDは、求職者台帳で当人のページを開いたURLの32桁です。

■ 求職者と面談を間違えずにつなぐ
名前をAIに推測させず、録画IDまたは予定名の識別子と、求職者ページIDを対応付けます。
設定例は targets.example.json。REPLACE_から始まる値は全て自分の情報に置き換えてください。
まず meetingId に TEST_MEETING_ID と同じIDを指定。name は表示名、ca は担当CAの選択肢、kind は面談種別。
count は回数が確かな場合だけ整数。分からなければ null。自動加算しません。

複数の面談を自動取得したい場合：
対応表から meetingId を削除し、marker を "[CA-0001]" のように設定。
その求職者のカレンダー予定名にも同じ識別子を入れ、tl;dv側の録画名にも引き継がれたことを確認。
例： [CA-0001] 山田さん 初回面談
異なる求職者には別の識別子を割り当てます。対応がない録画は分析・保存しません。
同じ予定名が複数の対応に一致したら保留します。
面談種別・担当CAが変わる場合は、別の識別子または録画ID単位の対応を用意してください。
同じmarkerを繰り返し使う場合、面談回数は null にして手動管理してください。
この入門版の対応表は20件までです。大規模運用では予約台帳から対応を取得する実装へ拡張します。

■ 操作順と実行関数
（AI_GUIDE.md の手順A1〜A14と第4章が最新・詳細です。違いがある場合は AI_GUIDE.md を優先してください。）
1. checkConnections：モデルID・Notion列・tl;dvのテスト面談を確認。書き込みなし。
2. readTestTranscript：テスト面談の本文が取得できるか確認。文字数だけログ表示。AI送信なし。
3. runTestMeeting：Claudeで整理してNotionへ新しい記録を追加（API料金が発生）。
4. Notionで本文、候補者への紐付け、担当CA、日付を確認。
5. runTestMeeting をもう一度実行。SKIPになり記録が増えないことを確認。
6. GAS「トリガー」→追加→ runArticlePolling →時間主導型→分ベース→15分おき→保存。
7. MODE=test のまま、GAS「実行数」で種類「時間主導型」の実行結果を確認。
8. 対象範囲・対応表・費用を確認できたら MODE=live に変更。ここから対応表に一致する録画を処理。
停止は、このプロジェクトの該当トリガーだけを削除。録画やNotionページは削除しません。

■ 分析の内容
候補者の状況／面談のおさらい／面談の質／次回までにやること／失注リスクスコアの5見出し。
指示の変更場所は maProcess_ 内の prompt。自社でまとめたい項目に調整できます。
この配布版は「未採点」、数値欄は空欄です。記事の35は撮影用仮値です。
実際に採点する場合は基準・尺度・根拠を定義し、出力の数値検証と保存処理も追加してください。
対象者の評価や採否を自動決定するものではありません。

■ 実行範囲・再試行
MODE=test は指定した1件だけ。MODE=live はPOLL_FROM以降の一覧を100件ずつ全ページ確認します。
一回に分析する対象は最大3件、開始から3分で次回へ持ち越します。API待機時間により超過する場合があります。
未保存の録画は次回も対象。保存済みは面談ID照合でスキップします。
固定開始日から毎回見るため、古い未処理を勝手に捨てません。件数が増えるとAPI通信も増えます。
失敗対象が3件以上続くと後続を処理できないことがあります。実行エラーを確認して設定修正、
または問題の対応を一時的に外して原因を解消してください。解消後は再度対象に戻します。
一覧APIの上限は合計1万件。上限前に未処理・処理済みを確認して対象期間を分ける必要があります。
本文6万字超、生成2800字超、生成途中終了は切り捨てず停止。長時間面談は分割設計が必要です。
この入門版は処理対象の少ない環境向け。GASの実行制限、APIのレート制限を確認してください。
生成後に失敗すると再分析で追加料金がかかる場合があります。

■ 困ったとき
未設定：プロパティ名と値を確認。
401/403：該当サービスのキー、利用契約、対象データへの権限を確認。
Notion列不一致：列名・型・候補者リレーション・セレクト選択肢を確認。
WAIT：本文の準備待ち。次回再取得。404が続く場合は録画IDとアクセス権も確認。
SKIP：保存済み、または対応表にない面談。どちらかログで確認。
429/5xx：制限・障害の可能性。次回の結果を確認。短時間に実行を連打しない。
保存結果不明：NotionでTLDV_meetingIdを検索。存在するなら追加しない。
MA_PENDING_で始まる項目は、保存要求を送った記録。未作成を確かめた場合だけ該当項目を解除して再実行。
同じ保存先に複数のGASを動かさないでください。ロックは同じGAS内だけで有効です。
ログにキーや面談本文を貼らない。GASから来るエラー通知も確認してください。

■ 根拠資料
https://doc.tldv.io/index.html （一覧page/from/to、録画と文字起こし、利用条件）
https://developers.google.com/apps-script/guides/triggers/installable
https://developers.notion.com/reference/retrieve-a-database
https://developers.notion.com/reference/query-a-data-source
https://platform.claude.com/docs/en/api/messages

■ 確認範囲
2026年10月1日、配布ファイルと一致するコードをGASに貼り付け、実際のAPIで以下を確認しました。
・Claudeモデル、Notion列とアクセス権、tl;dv録画への接続。
・架空の実録画から912文字の文字起こし取得。
・Claude生成→独立したテスト用Notionデータベースへの新規保存→本文と求職者紐付けの読み戻し照合。
・同じ面談を再実行しても、再分析・追加・上書きをしないこと。
・liveモードの一覧APIに対象面談が含まれ、保存済みの対象をスキップすること。
・15分ごとの時間主導型トリガーで配布版が実行され、保存済み面談をスキップして完了（10月1日00:50）。
・2026年10月3日、MODE=live で未保存の面談を一覧から検出し、取得→Claude分析→新規保存・照合まで完了（新規処理対象1件）。
  続けて再実行し、保存済みとして新規処理0件になることを確認。
認証済みの検証用GASに配布ファイルを独立して追加し、既存の顧客記録は変更していません。
tests.cjsではモック通信による異常系・重複・ページ送りなど14項目を確認しています。
実行にはNode.jsが必要です（node tests.cjs）。設定の通し確認には不要で、使うかは任意です。
自分の契約・モデル・列構成で上の操作順に通し確認してから定期運用してください。
