ChatGPT APIでWordPressの記事の要約を表示する

2025/02/05 (水) - 09:00 PHP&CMS

WordPressの記事をAIを使いざっくりと要約したい…という場合の簡単な実装方法です。WordPressからChatGPT APIにアクセスし、記事の要約を自動化を行いました。実装する前に予めOpenAI developer platformからAPI Keysを取得しておきましょう。

ChatGPTが要約した内容を実際に表示させた例

まずfunction.phpに、ChatGPTに記事の要約を生成させるためのプロンプトを指定しAPIにリクエストします。今回は適当に「記事を100文字で要約して」という旨のプロンプトにしました。

正常にレスポンスが返ってきたら、その要約された文面をWordPressが取得して処理する…という流れです。

define('API_URL', 'https://api.openai.com/v1/chat/completions');
define('API_KEY', '【取得したAIキーを入れる】');
function get_summary_text() {
 $post_id = get_the_ID();
 $post_summary = '';
 if( get_post_meta($post_id, 'post_summary') ) {
  $post_summary = get_post_meta($post_id, 'post_summary',true);
 } else {
  $API = curl_init(API_URL);
  $content = wp_strip_all_tags(get_the_content());
  $content = str_replace(['\n','\r','\t'], '', $content);
  $prompt_text = "次の文章を100文字で要約にしてください。\n{$content}";
  $prompt_text_short = mb_substr($prompt_text, 0, 1000);
  $header = array(
   'Authorization: Bearer '.API_KEY,
   'Content-type: application/json',
  );
  $prompt = [
   [
    'role' => 'user',
    'content' => $prompt_text_short
   ]
  ];
  $params = json_encode([
   'messages' => $prompt,
   'model' => 'gpt-3.5-turbo' //モデルの指定(gpt-3.5-turbo,gpt-4-turbo等)
  ]);
  $options = array(
   CURLOPT_POST => true,
   CURLOPT_HTTPHEADER =>$header,
   CURLOPT_POSTFIELDS => $params,
   CURLOPT_RETURNTRANSFER => true,
  );
  curl_setopt_array($API, $options);
  $httpResponse = curl_exec($API);
  $httpCode = curl_getinfo($API,CURLINFO_RESPONSE_CODE);
  if($httpCode === 200){
   $jsonArray = json_decode($httpResponse, true);
   $post_summary = nl2br($jsonArray['choices'][0]['message']['content']);
  }
  curl_close($ch);
  update_post_meta($post_id, 'post_summary', $post_summary );
 }
 return $post_summary;
}

フロント表示部分。記事詳細画面(single.php)の任意の場所に要約を表示する記述します。すぐ読めるように記事の文頭に置くと良いかと思われます。

AIによる要約:<?php echo get_summary_text(); ?>

表示はHTMLやCSSで適当に整形してください。

カスタムフィールドを使ってキャッシュ化

記事の要約が実行されるタイミングは、初めて記事にアクセスした時です。従って初回はGPTからのレスポンスを待っているので、記事が表示されるまで少し時間がかかります。要約された文面は自動でカスタムフィールドpost_summaryというフィールドに登録しキャッシュ化します。

  • カスタムフィールドに値がない場合はGPTの要約を取得し、カスタムフィールドに登録して表示する
  • カスタムフィールドに値がある場合はカスタムフィールドの要約を取得して表示する

つまり、2回以降アクセスした際は自動登録されたカスタムフィールドの要約文を取得します。このときはAPIにリクエストしないので、過剰なAPIへのリクエストやパフォーマンスの低下、課金を抑えることが出来ます。

要約した文章はカスタムフィールドに登録される

もし要約の文章を少し変えたい…といった場合はWordPressの編集画面からカスタムフィールドの値を変更してもいいですし、値を削除してしまえば、再度GPTが記事を要約する命令が実行されます。

おしまい

タグ:

記事をシェアする

  • facebookでシェアする
  • twitter(X)でシェアする
  • LINEでシェアする
  • はてなブックマークでシェアする
  • Threadsでシェアする
  • Pocketでシェアする
  • Pinterestでシェアする

おすすめ記事

トラックバック & ピンバック

この記事へのトラックバックURI
https://weblog.walk-life.me/wp_chatgpt_summary/trackback/

コメント

コメントは下記からどうぞ

ページの先頭へ