見出し画像

ChatGPTを活用してWordpressを完全自動化:【記事自動作成、自動投稿】

この記事は、ChatGPTのAPIをPythonから利用し、「ブログ記事を自動で生成させ、更にWordpressへ自動投稿してしまおう!」というブログの運営者にとって、夢の様なチュートリアルです。
この記事を読むことにより、アフィリエイトを誰でも完全に自動化できます。
このnoteの内容を実践すれば、アドセンスの審査も通りますし、A8などのASPを使用したアフィリエイトも完全に自動化し、収益化が可能です。
実際に私も完全に自動でアフィリエイトを行い、収益を上げています。

何もしなくてもお金を生み出す、究極の手法です。

ChatGPTとは、OpenAIが開発した自然言語処理モデルであり、リアルタイムでの対話や文章生成に優れた能力を持っています。
WordPressとは、世界中で人気のあるブログプラットフォームであり、そのREST APIを活用することで、プログラムからの自動投稿が可能です。セキュリティの観点からREST APIを使用したくない方の為に、別の自動投稿の方法もこのチュートリアルでは取り上げます。
正直、ココナラやランサーズなどの副業サイトでは、このチュートリアルの内容を1万円以上の価格を付けて販売している方もいます。逆に言えば、皆様がこの記事の内容を覚えることで、そういった副業を行うことも可能だという事です。
自動投稿によって、ブログの運営者は貴重な時間を節約し、コンテンツの品質向上や頻度の確保に注力することができます。
このチュートリアルではPythonを選択しましたが、正直PHPでもVBAでも何でも出来ます。その辺りはチュートリアルの最後に利用方法を書くつもりです。
また、実際にWordpressなどを利用されている方はレンタルサーバーやVPSで運用されていると思いますので、サーバー上でスケジュールで動作させる方法も併せて解説します。
Pythonのインストールや簡単な使用方法などは下記公式サイトに詳しく載っています。インストールは簡単に行えますので、早速行なって下さい。
公式サイトはこちら


ChatGPT アカウント作成手順

早速、ChatGPT APIの利用手順を開始します。まだアカウントを作成したことがない人やAPIキー発行の仕方がわからないという方はぜひ参考にしてください。
既にアカウント登録済でAPIキーの発行も済んでいる方は読み飛ばして下さい。

公式サイトからアカウント作成

ChatGPT APIを使用するためには、まずアカウント作成が必要です。まずは下記リンクより公式サイトへアクセスし、アカウントを登録して下さい。
OpenAI 公式サイト

赤丸部の『Sign up』をクリックしてください。アカウント作成済の場合は、『Log in』からアクセスできます。
『Email address』の中にご自身のメールアドレスを入力します。入力したら『Continue』をクリックして下さい。
若しくは、GoogleアカウントやMicrosoftアカウントでもアカウントを作成する事が可能です。

パスワードを入力し、『Continue』ボタンをクリックします。

先ほど入力したメールアドレスに認証用のメールが届きますので、メール内リンクより認証を行なって下さい。
メール認証後、個人情報の登録を行います。登録が終わればアカウントの作成は完了です。

Open AI APIキー取得手順

APIキーの取得は、OpenAIの公式ページから行います。
下記のリンクよりアクセスし先ほど作成したアカウントで、ログインして下さい。
OpenAI 公式ページ

画面右上のPersonalをクリックするとメニューが表示されるので『View API keys』を選択します。
画面中央部にある『+ Create new secret key』のボタンをクリックします。
任意の名前を入力し、『Create new secret key』ボタンをクリックして下さい。
APIキーをコピーできるのはこの画面のみです。再度確認することはできませんので注意が必要です。
これで準備は完了です。
次節から早速プログラムを書いていきましょう!!

PythonからChatGPTを使う

基本的にAPIを利用するだけならライブラリが無くても可能なのですが、PythonではOpenAI用のライブラリが準備されていますので、それを利用しましょう!

ライブラリをインストール

ターミナル、若しくはコマンドプロンプトを開いて下記のコマンドを実行して下さい。

pip install openai

エラーが出ていなければ、問題無くインストールできています。

APIを呼び出してみる

早速APIを利用してみましょう。
そのままターミナル、若しくはコマンドプロンプトで、下記の様に入力してPythonプロンプトを起動して下さい。

python

「>>>」と表示されれば問題ありません。
続けて下記の様に1行ずつ入力して下さい。

import openai # openai のインストールに失敗しているとここでエラーが出ます。 
openai.api_key = "sk-<your secret key>" # 先ほど取得したAPIキーを入力
question = "副業に関するブログ記事を、タイトル、イントロダクション章1、本文1、章2、本文2、まとめの構成で書いて下さい。"
print(question)
response = openai.Completion.create(
model="text-davinci-003",
prompt= question,
max_tokens=1000,
echo=False
)
 print(response['choices'][0]['text'].replace('\n', ''))

如何でしょうか?私の環境で実行した結果、下記の内容が返ってきました。
タイトル:副業をはじめるべき5つの理由イントロダクション:今日の記事は副業に関してです。私は、副業を開始し、メリットを享受することをお勧めします。以下で5つの理由を詳しくご説明します。章1:資金のマネジメント正社員で働く人は月に一度の給料を受け取りますが、副業をする人は月に数回仕事をして資金管理ができます。資金の使用を適切に管理することで、月の支出や備蓄をすることができます。本文1:最近では副業を始める人が増えています。一つの理由として、プロジェクト単位で仕事をすることによって、給料を多く稼ぐことができるからです。短期間の副業仕事なら、プロジェクト単位で仕事を依頼した人に大きな給料を支払うことができます。章2:スキルの向上副業に取り組むことで、新しいスキルを学ぶことができます。日常的な仕事だけでなく、特別なプロジェクトに取り組んで、新しいスキルを学ぶことができます。本文2:例えば、何かソフトウェア開発の副業を取り組んだ場合、本来の給料以上の給料をもらうことができます。同時に、新しい知識を補完するという意味でも、プロジェクトのスキルを向上させることができます。まとめ:今日は副業に関してお話ししました。副業を始めることで、資金をより良い方法で管理することができ、新しいスキルを学ぶことができます。副業を始めることで不利益をなくし、収入を増やすことができるので、私は大きな収入を得るために副業をお勧めします。
それなりにブログらしい文章にはなっているかな?と思いますが、とてもじゃないけどこのままブログの記事にはなりませんよね笑
ただ、ChatGPTがこちらの指定した問いに対して、文章を生成し、返答してきたという事が分かれば、ここでは十分です。

プログラムの意味をちょっと解説

簡単なコードなのであまり解説は不要だと思いますが、次の様な流れになっています。

  1. import openai: openaiライブラリをインポートします。このライブラリはOpenAIのAPIとの通信を行うために使用されます。

  2. openai.api_key = “sk-<your secret key>”: APIキーを設定します。ここでは、取得したAPIキーを指定します。

  3. question = “”: ChatGPTに与える入力テキスト(プロンプト)を指定します。今回の場合、副業に関するブログ記事の構成を要求しています。

  4. print(question): 一旦、入力テキストをターミナルへ表示します。

  5. response = openai.Completion.create(…): ChatGPTに対してテキスト生成の要求を行います。APIを使用してChatGPTにプロンプトを送信し、応答を受け取ります。生成されたテキストはresponseに格納されます。

  6. print(response[‘choices’][0][‘text’].replace(‘\n’, ”)): ChatGPTからの応答テキストを表示します。responseの中から応答テキスト部分を取得し、改行文字を削除して表示します。

openai.Completion.create(…)関数の解説
OpenAIのAPIを使用してChatGPTの生成を要求するために使用されるメソッドです。この関数には次の様な引数があります。

  1. model(必須): 使用する言語モデルを指定します。たとえば、”text-davinci-003″などのモデル識別子を指定します。

  2. prompt(必須): ChatGPTの生成に使用するテキスト(プロンプト)を指定します。ユーザーの質問や要求など、応答に影響を与える入力を提供します。

  3. max_tokens(オプション): 生成される応答の最大トークン数を指定します。トークン数は、テキストの長さを表す単位です。デフォルトでは、この値は16です。

  4. temperature(オプション): 生成された応答のランダム性を調整するためのパラメータです。値が低いほど、より確定的な応答が生成されます。値が高いほど、よりランダムな応答が生成されます。デフォルトでは、この値は0.6です。

  5. top_p(オプション): トークンの確率分布の上位nパーセンタイルを考慮して、生成されるトークンを制御するためのパラメータです。値が小さいほど、より確定的な応答が生成されます。値が大きいほど、より多様な応答が生成されます。デフォルトでは、この値は1.0です。

  6. n(オプション): 生成する候補の数を指定します。候補数が多いほど、生成される応答の多様性が増えます。デフォルトでは、この値は1です。

  7. stop(オプション): 生成を停止するための文字列や文字のリストを指定します。ChatGPTがこの文字列またはリストのいずれかに一致した場合、応答の生成が停止されます。

詳しく書きましたが、こんなものがあるのか位に覚えていただければ大丈夫です。
response の中身は?
openai.Completion.create()メソッドによって生成された応答には、以下のような情報が含まれています。

  1. response[‘id’]: APIリクエストの一意の識別子(ID)です。

  2. response[‘object’]: 応答の種類を示すオブジェクトタイプです(通常は「completion」です)。

  3. response[‘created’]: 応答の作成日時です。

  4. response[‘model’]: 使用されたモデルの識別子です。

  5. response[‘choices’]: ChatGPTからの応答情報が含まれるリストです。response[‘choices’]リストの中には、以下のような情報が含まれています。

    • response[‘choices’][0][‘text’]: ChatGPTから生成された応答テキストです。

    • response[‘choices’][0][‘finish_reason’]: 応答の生成が終了した理由を示す文字列です(例: “stop”、”max_tokens”など)。

    • response[‘choices’][0][‘index’]: 応答のインデックス番号です。

先ほどのコードでは、最初の応答のテキスト部分をprint(response[‘choices’][0][‘text’].replace(‘\n’, ”))で表示しています。改行文字(\n)を削除して表示するために、replace(‘\n’, ”)メソッドが使用されています。
応答には他の情報も含まれる場合がありますが、通常は最初の応答のテキスト部分が必要な情報です。

読者に読まれる最適なブログ記事構成とは

アフィリエイトブログをやられている方や、文章が得意な方は常に最適な記事構成を意識してブログを書かれているかと思います。私は文章が下手なので、一般的な記事構成しか提示できませんが、下記のような記事構成が最適だと言われています。
最適な記事構成

  1. タイトル – 記事の主題を明確に表現する。

  2. 導入 – 読者に興味を引く情報を提供し、記事の内容や目的を明示する。

  3. 問題の説明 – 解決すべき問題や課題を説明する。

  4. 解決策の提案 – 問題を解決するための提案や解決策を示す。

  5. 顧客の声や評価 – 実際の顧客の声や商品の評価を引用し、信頼性を高める。

  6. 製品の紹介 – アフィリエイト商品やサービスの詳細を説明する。

  7. 利用シーンや具体的な例 – 商品やサービスの具体的な使用シーンや例を示す。

  8. 価格や割引情報 – 商品やサービスの価格や割引情報を説明する。

  9. ボタンやリンク – 購入や詳細を促すボタンやリンクを設置する。

  10. おすすめ理由や特典 – 商品やサービスのおすすめ理由や特典を説明する。

  11. FAQ – よくある質問や疑問に対する回答をまとめる。

  12. 結論 – 記事の内容をまとめ、再度商品やサービスの利点を強調する。

  13. 免責事項 – アフィリエイトリンクを含む記事に免責事項を追加する。

免責事項については必要なら入れる感じで良いかと思います。上記はアフィリエイトブログによくある構成ですが、通常のブログでも読者が何を知りたいのかを伝えることが大切なので、「問題提起 → 問題の説明 → 解決策 → まとめ」は最低限必要です。
今回は、上記のアフィリエイトブログの構成をChatGPTに自動で作ってもらうという流れで解説します。
少し内容を変更する事で、どんな形式のブログでも作れるかと思います。

API呼び出し部分を関数化

前置きが長くなってしまいましたが、早速スタートしましょう!
まずは前回、Pythonプロンプトから実行したコードを関数化して再利用性の高い形に変更しましょう。

ファイルの作成

まずはターミナルを開き、ディレクトリと.pyファイルを作成します。

mkdir openai # ディレクトリ名はなんでも良いです。
cd openai
touch makeBlog.py # ファイル名はなんでも良いです。

GUIで作成していただいても構いません。
例では、「openai」というフォルダを作成して、その中に「makeBlog.py」というファイルを作成しました。

関数を作成

makeBlog.pyを開いて、下記のコードを書き写してください。

import openai # openai のインストールに失敗しているとここでエラーが出ます。 

# openAIへAPIリクエストを投げて、レスポンスを返却するクラス
def getOpenAIResponse(question):
    openai.api_key = "sk-<your secret key>" # 取得したAPIキーを入力
    print(question) # debug
    
    response = openai.Completion.create(
        model="text-davinci-003",
        prompt=question,
        max_tokens=1000,
        echo=False
    )
    
    responsetext = response['choices'][0]['text'].replace('\n', '')
    print(responsetext) # debug
 
    return responsetext

前回Pythonプロンプトで実行した内容を関数に置き換えた形が上記になります。
getOpenAIResponse関数へ引数questionを渡して呼び出すと、関数内でChatGPTへAPIリクエストを送り、応答のテキスト部分を、response[‘choices’][0][‘text’].replace(‘\n’, ”) で改行文字を無くした状態で返却する様になっています。
上記のコードに関数の呼び出しを追加して、確認してみましょう。

import openai # openai のインストールに失敗しているとここでエラーが出ます。 

# openAIへAPIリクエストを投げて、レスポンスを返却するクラス
def getOpenAIResponse(question):
    openai.api_key = "sk-<your secret key>" # 取得したAPIキーを入力
    print(question) # Debug
    
    response = openai.Completion.create(
        model="text-davinci-003",
        prompt=question,
        max_tokens=1000,
        echo=False
    )
    
    response_text = response['choices'][0]['text'].replace('\n', '')
    print(response_text) # Debug
 
    return response_text

# ここから追加
question = "これはテストです。何か文章を作って返してください。"
response = getOpenAIResponse(question)

print("--- 以下、Debug出力 ---")
print(response)

次の様に、ターミナル若しくはコマンドプロンプトから実行して出力を確認してください。

python makeBlog.py

# 私は下記の様な出力になりました。

これはテストです。何か文章を作って返してください。
美しい日差しが空を染めている、この穏やかな日を楽しもうと思います。
--- 以下、Debug出力 ---
美しい日差しが空を染めている、この穏やかな日を楽しもうと思います。

上の2行は関数内のprint文で出力されています。
「— 以下、Debug出力 —」以降が関数を呼び出したメイン部分の出力です。
上記の結果から、引数で私た質問文と、ChatGPTから返ってきた返答がメイン部分と関数部分で受け渡しできている事が分かります。

HTMLの簡単な解説

HTMLの詳細を解説しようとすると、とても1記事にまとめる事は出来ないので、簡単に解説します。
HTML(HyperText Markup Language)とは、ウェブページの構造やコンテンツを書くためのマークアップ言語です。ウェブブラウザはHTMLコードを解釈し、ウェブページを表示するために使用されます。
HTMLは、タグ(< >で囲まれた要素)を使用して要素を囲います。タグで囲うことにより、ブラウザはテキスト、画像、リンク、見出し、段落などの異なる要素を判別して、それぞれの適切な表示方法でブラウザに表示しています。。
ブログの記事構成には大きく分けて、見出し・本文・リンクがあります。また引用文などもあります。最低限、その部分のHTMLを理解していれば今回は問題ありません。
記事の自動作成に最低限必要なHTMLタグ

  1. <h1>〜<h6>: 見出しを定義するためのタグ。<h1>が最も重要な見出しで、<h6>が最も小さな見出しとなります。

  2. <p>: 段落を定義するためのタグ。テキストをまとめて段落ごとに表示する際に使用します。

  3. <blockquote>: 引用文を定義するためのタグ。通常は文の左側に垂直な線が表示され、引用部分を視覚的に区別するために使用されます。

  4. <strong>: テキストを強調するためのタグ。通常は太字で表示され、重要なキーワードや文を強調するために使用します。

  5. <a>: リンクを作成するためのタグ。href属性を使用してリンク先のURLを指定し、クリック可能なテキストや画像を作成します。

簡単な例で説明します。

<h1>こんにちは、これはタイトルです。</h1>
<p>これは、文章の段落を表しています。</p>
<a href="リンク先のURL">これはリンクです。</a>

</h1> </a> </p>はそれぞれの終了タグと呼ばれます。タグはブラウザには表示されず、タグの種類に応じて、タグに囲われた部分の表示をブラウザがおこなっています。
基本はこれだけ分かれば、記事にする要素を作成できます。

文字列をHTMLとして構成する

それでは早速作っていきましょう。まず前提知識として、Pythonで文字列を連結する方法を覚えてください。
Pythonで、文字列を連結するために様々な方法がありますが、f文字列(f-string)を使用すると便利です。f文字列を使うと、変数や式を文字列内に埋め込むことができます
f文字列は、文字列の前に f もしくは F を付けて作成します。その中に {}(中括弧)を使って変数や式を挿入します。具体的な例を書きますので、是非Pythonプロンプトで実行してみてください。。

name = "太郎"
age = 25
message = f"私の名前は、 {name} で現在 {age} 歳です。"
print(message)

このコードでは、name 変数と age 変数の値を message 文字列に挿入しています。f を付けた文字列であるため、中括弧 {} 内の変数や式は評価され、その結果が文字列に埋め込まれます。
もう想像がついている方がいらっしゃるかと思いますが、ChatGPTからの返答をPythonの文字列連結を使い、HTMLタグと連結し、記事を構築するというのが、記事の自動生成になります。
では、先ほど作成した、makeBlog.py を下記の様に編集してください。

import openai 

# openAIへAPIリクエストを投げて、レスポンスを返却するクラス
def getOpenAIResponse(question):
    openai.api_key = "sk-<your secret key>" # 取得したAPIキーを入力
    #print (question) # debug
    
    response = openai.Completion.create(
        model="text-davinci-003",
        prompt=question,
        max_tokens=1000,
        echo=False
    )
    
    response_text = response['choices'][0]['text'].replace('\n', '')
    #print (response_text) # debug
 
    return response_text

# ここから追加
# 引数で受け取ったHTMLタグで引数contentsを囲う
def getFormatContent(html_tag, contents):
    return f"<{html_tag}>{contents}</{html_tag}>"
    
question = "面白そうなブログタイトルを考えてください。"
response = getOpenAIResponse(question)

title = getFormatContent("h2", )

print("--- 以下、Debug出力 ---")
print(title)

getFormatContent関数を定義しました。
この関数は引数で受け取ったHTMLタグで、引数で受け取った文字列(contents)を囲い、返却します。
返却されたHTML文字列を変数 title で受け取っています。
以下の様にターミナルなどで、実行して出力を確認してください。

 python makeBlog.py
--- 以下、Debug出力 ---
<h2>『毎日が豊かな人生を過ごす秘訣!』</h2>

ここから先は

34,548字 / 5画像

¥ 1,000

この記事が気に入ったらサポートをしてみませんか?