[ChatGPT]ChatGPTでブログ下書きを自動化しよう

ChatGPT2ChatGPT

どうも。つじけ(tsujikenzo)です。このシリーズでは、「ChatGPTで業務効率化」についてお届けしています。今回は2回目です。

前回のおさらい

前回は、「プログラミングはChatGPTを活用しながら」をお届けしました。

引き続き、ChatGPTにキーワードを渡すと、ブログの下書きを書くアプリを作成したいと思います。

今回は、「ChatGPTでブログ下書きを自動化しよう」です。

今日のアジェンダ

  • OPEN AIのAPI Keyを取得する
  • ChatGPTで返答をもらうGAS
  • Googleドキュメントの選択範囲を取得する
  • Googleドキュメントに貼り付ける

OpenAIのAPI Keyを取得する

GASでChatGPTから返答をもらうためには、API keyが必要です。

API KeyはOpenAIのWebサイトから取得します。

まず、こちらのWebサイトの「API」をクリックします。

「LOG IN」をクリックします。

お好きな方法で、ログインします。(アカウント登録方法は割愛します)

もし、「あなたは人間ですか?」という質問が出たら、チェックをいれます。

ログインできたら、右上のプロフィールメニューをクリックして、「View API Keys」をクリックします。

Create New seacret keyをクリックします。

API Keyが発行されたら、コピーをクリックします。画面を閉じてしまうと2度と確認できませんので、メモ帳にコピペしておきましょう。

ChatGPTで返答をもらうGAS

新規Googleドキュメントを用意して、コンテナバインドスクリプトを用意します。(手順は割愛します)

このようなソースコードを記述します。

変数apiKeyには、先ほどのAPI Keyをコピペします。

/** ChatGPTに質問する関数 */
  function askChatGPT() {
 
  // API Key
  const apiKey = "API Keyを入力";

  //キーワード
  const word = "ゲーム理論とは?"

  //エンドポイントとパラメータ
  const endpoint = 'https://api.openai.com/v1/completions';
  const params = {
    'prompt': word,
    'model': 'text-davinci-002',
    'max_tokens': 1000,
    'temperature': 0.8
  };

  //ヘッダーとオプション
  const headers = {
    'Content-Type': 'application/json',
    'Authorization': 'Bearer ' + apiKey
  };

  const options = {
    'method': 'post',
    'headers': headers,
    'payload': JSON.stringify(params)
  };
  const response = UrlFetchApp.fetch(endpoint, options);

  //レスポンスのオブジェクト化
  const data = JSON.parse(response.getContentText());

  //オブジェクトからテキスト抽出
  const answer = data.choices[0].text;
  console.log(answer);
  return answer
}

max_tokensとは

max_tokensは、ChatGPTのモデルによって生成される、文章の最大トークン数を指定するパラメーターです。

これは、生成される文章の長さを制限するために使用されます。

max_tokensの値が小さいほど、生成される文章は短くなります。

temperatureとは

Temperatureは、生成モデル(たとえばGPT-3)が生成する、文章の多様性を調整するためのパラメーターです。

Temperatureは、確率分布からサンプリングする際に使用され、値が大きいほど、生成される文章は多様性が高くなります。

逆に、値が小さいほど、生成される文章は多様性が低くなります。

数値をいろいろ変更して、試してみましょう。

Googleドキュメントの選択範囲を取得する

GASでChatGPTから返答をもらえるということは、Googleドキュメントからキーワードを指定すると、ChatGPTからの返答をGoogleドキュメントに貼り付けるアプリを作成できそうです。

Googleドキュメントからキーワードを指定する方法は、キーワードの選択(文字列の色が反転する状態)です。 

この選択範囲を、GASで取得してみましょう。

/**
 * 選択した範囲の単語を取得する関数
 * @return  {string} 単語
*/
 function getTargetWord() {
  const doc = DocumentApp.getActiveDocument();
  const word = doc.getSelection().getRangeElements()[0].getElement().getText();
  console.log(word);
  return word;
}

関数を実行すると、選択範囲を取得できていればOKです。

Googleドキュメントに貼り付ける

Googleドキュメントに、文字列を貼り付けるメソッドはこちらです。

/**
 * テキストを受け取ってドキュメントに貼り付ける関数
 * @param {string} 文字列
*/
 function setText(text) {
  const doc = DocumentApp.getActiveDocument();
  const paragraph = doc.getParagraphs()[0];
  paragraph.appendText(`${text}\n\n`); //\nは改行
}

実行結果は、割愛します。

onOpen関数とエントリーポイント

Googleドキュメントから実行できるように、カスタムメニューを作成しましょう。

function onOpen() {

  const ui = DocumentApp.getUi(); 
  ui.createMenu('🌈カスタムメニュー')
    .addItem('🚀教えて!ChatGPT!', 'main')
    .addToUi();
}

/** 実行されるエントリーポイント */
 function main() {
  const word = getTargetWord();
  const text = askChatGPT(word)
  setText(text);
}

askChatGPT()関数に、引数を渡せるように設定し、完成したコード全文はこちらです。

GitHub - tsujike/-Blog-ChatGPT_GoogleDocument: 【ブログ】ChatGPTでブログ下書きを自動化しようのソースコードです
【ブログ】ChatGPTでブログ下書きを自動化しようのソースコードです. Contribute to tsujike/-Blog-ChatGPT_GoogleDocument development by creating an account on GitHub.

キーワードを選択して、カスタムメニューから実行してみましょう。

Googleドキュメントに反映されれば、成功です。

まとめ

以上で、「ChatGPTでブログ下書きを自動化しよう」をお届けしました。

このアプリで、ブログ執筆の完全自動化は、まだまだむずかしいと思います。

しかしながら、かんたんな下書きを作成するときなどは、確実に業務効率化の手助けをしてくれると感じました。

みなさんの現場でも、どんどん活用事例が生まれてくると思います。

このシリーズの目次

タイトルとURLをコピーしました