広告

【Googleドキュメント】Claude APIで長文要約!長文耐性のあるAI連携

【Googleドキュメント】Claude APIで長文要約!長文耐性のあるAI連携
🛡️ 超解決

Googleドキュメントで作成した長文を効率的に要約したいと考えたことはありませんか。手動で要約するには時間がかかり、要点を見落とすことも多いものです。Claude APIを活用すれば、最大100,000トークン以上の長文でも正確に要約できます。この記事では、GoogleドキュメントとClaude APIを連携し、長文要約を自動化する具体的な手順を解説します。

【要点】Claude APIで長文要約を自動化する流れ

  • Apps ScriptでAPI連携: Googleドキュメント内のスクリプトエディタからClaude APIを呼び出し、長文を自動で要約します。
  • 100Kトークン対応: Claudeの長文耐性を活かし、分割処理を実装せずとも大半のドキュメントを一度で要約できます。
  • スクリプトプロパティにAPIキー: キーを安全に管理し、スクリプト内で参照する方法を採用します。

ADVERTISEMENT

Claude APIとGoogleドキュメント連携の仕組み

Claude APIは、Anthropic社が提供する大規模言語モデルで、特に長文処理に優れています。最大100,000トークン(約75,000単語)のコンテキストを一度に入力でき、長大なドキュメントでも要約や分析が可能です。Googleドキュメントのスクリプトエディタ(Apps Script)を使うと、ドキュメントの内容を取得し、それをClaude APIに送信して、結果をドキュメントに挿入する処理を自動化できます。前提として、Claude APIのAPIキーが必要です。また、Apps Scriptの基本的な操作方法(スクリプトエディタの開き方、実行と承認)を理解しておくとスムーズです。

長文要約を自動化する具体的な手順

ステップ1: スクリプトエディタを開く

  1. Googleドキュメントを開く
    要約したい長文が含まれたドキュメントを開いてください。
  2. 拡張機能メニューを選択
    メニューバーの「拡張機能」をクリックし、表示された一覧から「Apps Script」を選択します。スクリプトエディタが新しいタブで開きます。

ステップ2: スクリプトコードを記述する

  1. デフォルトのコードを削除
    エディタに表示されているコードをすべて削除します。
  2. 以下のコードを貼り付ける
    下のサンプルコードをコピーしてエディタに貼り付けてください。
function summarizeDocument() {
  var doc = DocumentApp.getActiveDocument();
  var body = doc.getBody();
  var text = body.getText();
  
  // テキストが空の場合は終了
  if (text.length === 0) {
    DocumentApp.getUi().alert('ドキュメントにテキストがありません。');
    return;
  }
  
  var apiKey = PropertiesService.getScriptProperties().getProperty('CLAUDE_API_KEY');
  if (!apiKey) {
    DocumentApp.getUi().alert('APIキーが設定されていません。スクリプトプロパティに設定してください。');
    return;
  }
  
  var url = 'https://api.anthropic.com/v1/messages';
  var payload = {
    model: 'claude-3-5-sonnet-20241022',
    max_tokens: 1500,
    messages: [
      {
        role: 'user',
        content: '次の文章を簡潔に要約してください。\n\n' + text.substring(0, 95000)
      }
    ]
  };
  
  var options = {
    method: 'post',
    headers: {
      'Content-Type': 'application/json',
      'x-api-key': apiKey,
      'anthropic-version': '2023-06-01'
    },
    payload: JSON.stringify(payload)
  };
  
  try {
    var response = UrlFetchApp.fetch(url, options);
    var result = JSON.parse(response.getContentText());
    var summary = result.content[0].text;
    
    // 要約結果を新しい段落として挿入
    body.appendParagraph('【自動要約】');
    body.appendParagraph(summary);
    DocumentApp.getUi().alert('要約が完了しました。');
  } catch (e) {
    DocumentApp.getUi().alert('エラーが発生しました: ' + e.message);
  }
}

上記のコードは、アクティブなドキュメントのテキストを取得し、Claude APIに送信して要約を生成し、ドキュメントの末尾に挿入します。APIキーはスクリプトプロパティから読み込むため、コード内に直接書く必要はありません。

ステップ3: APIキーを設定する

  1. スクリプトエディタで「プロジェクトの設定」を開く
    左側のメニューから「プロジェクトの設定」(歯車アイコン)をクリックします。
  2. 「スクリプトプロパティ」を追加
    「スクリプトプロパティ」セクションで「プロパティを追加」をクリックし、プロパティ名に「CLAUDE_API_KEY」、値にあなたのClaude APIキーを入力して「保存」します。キーは外部に漏れないよう厳重に管理してください。

ステップ4: スクリプトを実行する

  1. 関数を選択して実行
    エディタ上部の関数ドロップダウンから「summarizeDocument」を選択し、再生ボタン(▶)をクリックします。
  2. 承認を求めるダイアログに応答
    初回実行時には権限の承認が必要です。「確認」をクリックし、表示されるアカウント選択と許可の画面で「許可」を押します。承認が完了するとスクリプトが実行されます。
  3. 結果を確認
    実行が成功すると、ドキュメントの末尾に「【自動要約】」という段落と共に要約文が挿入されます。ポップアップで「要約が完了しました。」と表示されます。

応用: 長文を分割して要約する

ドキュメントが極端に長く、一度のAPI呼び出しでトークン制限を超える場合は、テキストを分割して要約する処理が有効です。以下のコードは、テキストを5000文字ごとに分割し、それぞれを要約してから結合する例です。

function summarizeLongDocument() {
  var doc = DocumentApp.getActiveDocument();
  var body = doc.getBody();
  var text = body.getText();
  var chunkSize = 5000;
  var summaries = [];
  var apiKey = PropertiesService.getScriptProperties().getProperty('CLAUDE_API_KEY');
  if (!apiKey) return;
  var url = 'https://api.anthropic.com/v1/messages';
  
  for (var i = 0; i < text.length; i += chunkSize) {
    var chunk = text.substring(i, i + chunkSize);
    var payload = {
      model: 'claude-3-5-sonnet-20241022',
      max_tokens: 500,
      messages: [{ role: 'user', content: '次の文章を要約してください。\n\n' + chunk }]
    };
    var options = {
      method: 'post',
      headers: {
        'Content-Type': 'application/json',
        'x-api-key': apiKey,
        'anthropic-version': '2023-06-01'
      },
      payload: JSON.stringify(payload)
    };
    var response = UrlFetchApp.fetch(url, options);
    var result = JSON.parse(response.getContentText());
    summaries.push(result.content[0].text);
  }
  
  var finalSummary = summaries.join('\n\n');
  body.appendParagraph('【分割要約】');
  body.appendParagraph(finalSummary);
  DocumentApp.getUi().alert('分割要約が完了しました。');
}

この関数は、ドキュメントを5000文字ずつに区切って個別に要約し、それらを連結してドキュメントに挿入します。文字数やモデルは必要に応じて調整してください。

注意点とエラー対処法

APIキーの管理に注意する

スクリプトプロパティに保存しても、スクリプトエディタを共同編集できるユーザーにはキーが見える可能性があります。公開するスクリプトでは、キーを直接コードに書かないよう徹底しましょう。また、APIキーは第三者に共有しないでください。

実行時間制限を考慮する

Apps Scriptの1回の実行には6分という制限があります。長文の分割処理やAPIの応答が遅い場合、タイムアウトする可能性があります。その場合は、さらに細かく分割するか、処理を複数回に分けて実行すると良いでしょう。

APIのトークン制限を超えた場合

Claude APIのモデルごとに最大トークン数が決まっています。Claude 3.5 Sonnetは200Kトークンまで入力可能ですが、送信するテキストがこれを超えるとエラーになります。上記のコードでは最初の95,000文字だけを送信するようにしていますが、実際のトークン数は文字数より多くなることがあるため、安全率を見て80,000文字程度に抑えると確実です。分割処理を利用することをお勧めします。

ネットワークエラーやAPIエラーへの対応

APIの呼び出しが失敗した場合、コード内のtry-catchでエラーメッセージを表示しています。よくあるエラーとして、APIキーの誤り、リクエスト形式の誤り、サーバー側の制限などがあります。エラーメッセージを確認し、適宜修正してください。

ADVERTISEMENT

Claude APIと他の要約方法の比較

比較項目 Claude API 手動要約 他のAI(ChatGPT等)
長文対応 最大200Kトークン(約15万単語) 制限なし(時間と労力次第) 通常4K〜32Kトークン(GPT-4は128K)
自動化の容易さ Apps Scriptで簡単に連携可能 自動化不可、完全手作業 API連携は可能だがトークン制限が厳しい
要約品質 高い、特に長文でも一貫性あり 個人のスキルに依存 長文では細部を落としがち
コスト 利用料金が発生(従量課金) 人件費 API利用料金(同程度)

まとめ

今回は、GoogleドキュメントとClaude APIを連携して長文を自動要約する方法を紹介しました。Apps Scriptを使うことで、ドキュメント内のテキストを取得し、APIで要約して結果を自動挿入できます。特にClaudeの長文耐性により、分割処理を最小限に抑えられるのが強みです。応用として、分割要約や他のモデルへの切り替えも可能です。APIキーを適切に管理し、大量の文書を効率的に処理してみてください。次のステップとして、要約結果を別のドキュメントに保存する機能や、定期的に自動実行するトリガーを設定することも検討すると良いでしょう。


ADVERTISEMENT

📄
Googleドキュメントトラブル完全解決データベースこの記事以外にも、書式・共有・Apps Script・引用など様々な困りごとへの解決策をまとめています。逆引きに活用してください。
この記事の監修者
✍️

超解決 第一編集部

疑問解決ポータル「超解決」の編集チーム。正確な検証と、現場視点での伝わりやすい解説を心がけています。

SPONSORED