【WordPress】初心者でもできる!文章校正の方法(ChatGPT編)

chagpt

ChatGPTとは

ChatGPTは、OpenAIによって開発された大規模な言語モデルで、人間と同様の自然な対話を生成することが目的です。GPTは「Generative Pretraining Transformer」の略で、これはその学習方法と使用されるニューラルネットワークのタイプを示しています。

ChatGPTは非常に大きなテキストデータベースから学習しており、その結果として、多くの種類の質問に対する答えを生成することができます。しかし、ChatGPTは人間のように考えたり感じたりする能力はなく、あくまでテキストパターンを予測する機械学習モデルです。

また、GPT-4とはOpenAIが開発した最新のGPTモデルで、その前バージョンであるGPT-3よりもさらに大規模で高性能です。ChatGPTはGPT-4アーキテクチャを使用しているため、その応答は非常に洗練され、人間の対話に近い形になります。

今回の記事で使うツール

  • pythonが実行できる環境(私はVisual Studio Codeでローカルで実施しています)
  • OpenAIのAPIキー
  • WordPressのログイン情報
  • ラッコキーワード

まずはキーワード生成

今回自分が試したのは対象キーワードから記事を生成する試みをしたので、まずは対象キーワードをリストアップすることから始めます。(もうすでにキーワードがリスト化されている方はここはスキップしてもらったokです)

STEP

ラッコキーワードでキーワード入力

ラッコキーワードでキーワードリサーチツールを使います。(これほんと便利なんで良く使います)。利用回数に制限があるので会員登録(無料)しておいた方が良いと思います。

https://googleads.g.doubleclick.net/pagead/ads?client=ca-pub-1185966924266239&output=html&h=579&adk=4191128642&adf=3275859708&pi=t.aa~a.942905885~rp.4&w=812&lmt=1697119706&nsk=ea6b450d&rafmt=11&pwprc=2158584418&ad_type=text_image&format=812×579&url=https%3A%2F%2Fojimoney.com%2Fblog%2Fchatgpt-python-wordpress%2F&pra=3&wgl=1&fa=26&uach=WyJtYWNPUyIsIjEyLjYuMyIsIng4NiIsIiIsIjExNi4wLjU4NDUuMTg3IixbXSwwLG51bGwsIjY0IixbWyJDaHJvbWl1bSIsIjExNi4wLjU4NDUuMTg3Il0sWyJOb3QpQTtCcmFuZCIsIjI0LjAuMC4wIl0sWyJHb29nbGUgQ2hyb21lIiwiMTE2LjAuNTg0NS4xODciXV0sMF0.&dt=1697119706226&bpp=4&bdt=4937&idt=-M&shv=r20231004&mjsv=m202310040101&ptt=9&saldr=aa&abxe=1&cookie=ID%3Da408c1bb5bb05929-22ccf7dddbe4009f%3AT%3D1697119704%3ART%3D1697119704%3AS%3DALNI_Ma3o5ZPYw7SnL2WkR8nbM8QuZYl4A&gpic=UID%3D00000d98f39c106e%3AT%3D1697119704%3ART%3D1697119704%3AS%3DALNI_MY4s_VyZ4KOlLa5Vi0_lO59xvF0aw&prev_fmts=0x0%2C812x280&nras=2&correlator=4821419749255&frm=20&pv=1&ga_vid=1407805197.1697119703&ga_sid=1697119704&ga_hid=1903143969&ga_fc=1&u_tz=540&u_his=5&u_h=900&u_w=1440&u_ah=815&u_aw=1440&u_cd=24&u_sd=1&dmc=8&adx=136&ady=3848&biw=1440&bih=698&scr_x=0&scr_y=2826&eid=44759876%2C44759927%2C44759837%2C44801484%2C44804783%2C44805098%2C44804939%2C31078663%2C31078665%2C31078668%2C31078670&oid=2&pvsid=2359981964085602&tmod=635064754&uas=0&nvt=1&ref=https%3A%2F%2Fwww.google.com%2F&fc=1792&brdim=0%2C25%2C0%2C25%2C1440%2C25%2C1440%2C815%2C1440%2C698&vis=1&rsz=%7C%7Cs%7C&abl=NS&fu=128&bc=31&td=1&nt=1&ifi=6&uci=a!6&btvi=1&fsb=1&xpc=yKq06Cmtze&p=https%3A//ojimoney.com&dtd=36

STEP

生成されたキーワードをコピー

そうするとキーワードリストが出るので、赤枠の部分の全キーワードをコピーでキーワードをコピーします。(のちのステップで利用します)

https://googleads.g.doubleclick.net/pagead/ads?client=ca-pub-1185966924266239&output=html&h=585&adk=3540976010&adf=3848977720&pi=t.aa~a.942905300~rp.4&w=812&lmt=1697119706&nsk=2f236d2d&rafmt=11&pwprc=2158584418&ad_type=text_image&format=812×585&url=https%3A%2F%2Fojimoney.com%2Fblog%2Fchatgpt-python-wordpress%2F&pra=3&wgl=1&fa=26&uach=WyJtYWNPUyIsIjEyLjYuMyIsIng4NiIsIiIsIjExNi4wLjU4NDUuMTg3IixbXSwwLG51bGwsIjY0IixbWyJDaHJvbWl1bSIsIjExNi4wLjU4NDUuMTg3Il0sWyJOb3QpQTtCcmFuZCIsIjI0LjAuMC4wIl0sWyJHb29nbGUgQ2hyb21lIiwiMTE2LjAuNTg0NS4xODciXV0sMF0.&dt=1697119706226&bpp=3&bdt=4937&idt=4&shv=r20231004&mjsv=m202310040101&ptt=9&saldr=aa&abxe=1&cookie=ID%3Da408c1bb5bb05929-22ccf7dddbe4009f%3AT%3D1697119704%3ART%3D1697119704%3AS%3DALNI_Ma3o5ZPYw7SnL2WkR8nbM8QuZYl4A&gpic=UID%3D00000d98f39c106e%3AT%3D1697119704%3ART%3D1697119704%3AS%3DALNI_MY4s_VyZ4KOlLa5Vi0_lO59xvF0aw&prev_fmts=0x0%2C812x280%2C812x579&nras=3&correlator=4821419749255&frm=20&pv=1&ga_vid=1407805197.1697119703&ga_sid=1697119704&ga_hid=1903143969&ga_fc=1&u_tz=540&u_his=5&u_h=900&u_w=1440&u_ah=815&u_aw=1440&u_cd=24&u_sd=1&dmc=8&adx=136&ady=5027&biw=1440&bih=698&scr_x=0&scr_y=2826&eid=44759876%2C44759927%2C44759837%2C44801484%2C44804783%2C44805098%2C44804939%2C31078663%2C31078665%2C31078668%2C31078670&oid=2&pvsid=2359981964085602&tmod=635064754&uas=0&nvt=1&ref=https%3A%2F%2Fwww.google.com%2F&fc=1792&brdim=0%2C25%2C0%2C25%2C1440%2C25%2C1440%2C815%2C1440%2C698&vis=1&rsz=%7C%7Cs%7C&abl=NS&fu=128&bc=31&td=1&nt=1&ifi=7&uci=a!7&btvi=2&fsb=1&xpc=rEeDZ6I0ZW&p=https%3A//ojimoney.com&dtd=51

STEP

任意)キーワードプランナーでボリューム確認&スプレッドシート出力

それぞれのキーワードボリュームが気になるのであれば、Googleのキーワードプランナーに入れて数字を付与したスプレッドシートを出力して精査するのがおすすめです。

STEP

不要なものを精査し、一旦完了

キーワード生成したらどんな小さいキーワードでも対象とするのでボリュームに関係なく全く関係ないものを精査するだけでokです。

これで今回対象とするキーワードリストが作成されました。のちのコードに使います。

記事生成のためのプロンプト

実際はコードに埋め込んでいる(URL生成以外)のですが、どのようなプロンプトで生成しているかを紹介いたします。基本的に記事作成に必要なものを生成しています。

プロンプトとは

タイトル生成

プロンプト

「{keyword}」のキーワードで上位表示するための記事のタイトルを作成してください。出力はタイトル1つのみで、文章ではなくタイトルだけでokです。

{keyword}は変数になります。

記事のコンテンツ

プロンプト

「{生成されたタイトル}」のキーワードで上位表示するための記事を作成してください。(後述の制約を守って)
■制約
・全体の文字数は3000文字程度になる想定
・見出しはh2、h3を使用する
・マークダウン形式で

{生成されたタイトル}には上で生成されたタイトルが入るイメージです。

URL生成

プロンプト

「{生成されたタイトル}」という記事のURL候補を5個提案してください。

URL生成に関しては、良い感じのものができなかったので今回のコードには含んでいません。また、記事IDをURLにしている方はここは完全に不要です。

WordPressに自動投稿する方法

ファイル構造

  • post.py
  • keyword.txt

実際のコード

import time
from datetime import datetime
from wordpress_xmlrpc import Client, WordPressPost
from wordpress_xmlrpc.methods.users import GetUserInfo
from wordpress_xmlrpc.methods.posts import GetPosts, NewPost
import locale
import requests
import os
import openai
import json
import base64

keyword_file_path = 'keyword.txt'
with open(keyword_file_path, 'r') as keyword_file:
    keyword_list = keyword_file.readlines()
    keyword_list = [keyword.strip() for keyword in keyword_list]

openai.api_key = "ここはopenaiのapi keyを入れます"

for keyword in keyword_list:

  question_title="「" + keyword + "」" + "のキーワードで上位表示するための記事のタイトルを作成してください。出力はタイトル1つのみで、文章ではなくタイトルだけでokです。"
  response = openai.ChatCompletion.create(
    model="gpt-3.5-turbo",
    messages=[
        {
            "role": "system",
            "content": "あなたはSEOのプロフェッショナルです。日本語で返答してください。"
        },
        {
            "role": "user",
            "content": question_title
        },
    ],
  )

  # タイトルの生成結果を取得
  generated_title = response.choices[0]["message"]["content"].strip()
  print("タイトル生成完了 : " + generated_title)
  question_content = "「" + generated_title + "」のキーワードで上位表示するための記事を作成してください。(後述の制約を守って)■制約・全体の文字数は3000文字程度になる想定・見出しはh2、h3を使用する・マークダウン形式で"

  response = openai.ChatCompletion.create(
    model="gpt-3.5-turbo",
    messages=[
        {
            "role": "system",
            "content": "あなたはSEOのプロフェッショナルです。日本語で返答してください。"
        },
        {
            "role": "user",
            "content": question_content
        },
    ],
  )
  # 記事内容の生成結果を取得
  generated_content = response.choices[0]["message"]["content"].strip()
  print("記事内容生成完了")

  # 時間を日本時間にセットする
  locale.setlocale(locale.LC_TIME, 'ja_JP.UTF-8')

  url="あなたのドメイン/xmlrpc.php"
  user="WordPressのユーザー名"
  password="上記ユーザーのログインパスワード"

  # クライアントの呼び出しなど
  wp = Client(url, user, password)
  post = WordPressPost()

  # 記事の編集 ##########
  post.post_status = "draft"
  post.date = datetime.now()
  post.title = generated_title
  post.content = generated_content

  # 投稿   返り値として記事のid(pid)が得られる
  wp.call(NewPost(post))
  print("投稿完了 : " + keyword)

簡単に説明すると、以下のステップで構築されています。

  1. APIを利用して記事タイトルを生成
  2. 生成されたタイトルに合う記事コンテンツを生成
  3. 上記をWordPressのxmlrpcで下書きとして投稿

xmlrpcではなくREST APIを利用してやろうと思ったのですが、Xserver設定のせいなのかなかなかうまくいかなかったのでxmlrpcにしています。(セキュリティ的に弱くなるので、本当はREST APIの方にしたい)

また、APIを利用するにはOpenAIの有料プランに入る必要があります。

コメント

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