ChatGPT APIでWordPressの記事の要約を表示する
2025/02/05 (水) - 09:00 PHP&CMS
WordPressの記事をAIを使いざっくりと要約したい…という場合の簡単な実装方法です。WordPressからChatGPT APIにアクセスし、記事の要約を自動化を行いました。実装する前に予めOpenAI developer platformからAPI Keysを取得しておきましょう。
まず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が記事を要約する命令が実行されます。
おしまい♥
おすすめ記事
- WordPress 記事のタグで絞り込み検索を実装
- microCMS&Astroで記事のページネーションを実装
- WordPressのショートコードで他の記事情報を表示する
- EC-CUBE4でヘッダー等にログインユーザーの氏名や所持ポイントを表示させる
- EC-CUBE4で会員情報と注文(受注)情報をリセットする
トラックバック & ピンバック
- この記事へのトラックバックURI:
- https://weblog.walk-life.me/wp_chatgpt_summary/trackback/