ChatGPTはできることが多いですが、ブログ記事を書いてもらうっていうこともできます。そしてできることなら自動でブログ記事を書いてワードプレスに投稿するっていう事をやってもらいたいですよね。
そこで今回はこれを実現するべくChatGPTのAPIを使ってみようと思います。
- ChatGPTのAPIを取得する
- ChatGPTのAPIを利用したブログ記事作成・投稿のコードを記述する
- Xserver VPSにコードを記載する
- 作成したAPIを実行して自動でブログ記事作成・投稿を行う
ChatGPTを使って自動でブログ記事の作成ができるのか気になる方は参考にしてみてください。
ChatGPTのAPIを取得する
まずはOpenAIのAPIKeyのページからCreate new secret keyをクリックして作成します。
作成したら表示された文字列をコピーして控えておきます。
ChatGPTを使用するコードを記述する
プロジェクトを作成して、コードを記述します。ChatGPTを利用するのでnpmからopenai、ワードプレスの投稿のためにwordpressをインストールします。
$ mkdir chatgpt-project
$ npm init
package name: (projects) chatgpt-project
version: (1.0.0)
description:
entry point: (index.js)
test command:
git repository:
keywords:
author:
license: (ISC)
$ npm install wordpress
$ npm install openai
これで雑にコードを書いてみます。今回は[今話題のニュースから1つ選んでブログ記事書いて
]と指定して、その結果をワードプレスブログに投稿するという内容です。
const { Configuration, OpenAIApi } = require("openai");
const wordpress = require('wordpress');
const fs = require('fs');
//ワードプレスの接続設定
const wpClient = wordpress.createClient({
url: "ワードプレスブログのURL",
username: "ユーザー名",
password: "パスワード"
});
const configuration = new Configuration({
apiKey: '取得したOpenAIのAPI Key'
});
const openai = new OpenAIApi(configuration);
const postWp = async (content, model = "gpt-3.5-turbo-0301") => {
const response = await openai.createChatCompletion({
model: model,
messages: [{ role: "user", content: content }],
});
const answer = response.data.choices[0].message.content;
console.log(answer);
wpClient.newPost({
title: 'テスト',
status: 'draft',
content: answer,
author: 1
})
}
const question = "今話題のニュースから1つ選んでブログ記事書いて";
postWp(question);
コードはとても汚いですが目を瞑ってください。これでコードを実行してみましょう。
$ node index.js
すると指定したワードプレスブログに以下の記事が投稿されました。
本当はタイトルだけこちらで毎回指定してその内容で書いてもらうっていう事をやりたいけど、コード書くのが面倒なので[今話題のニュースから1つ選んでブログ記事書いて
]という指定でやっています。
ただ今のままだと毎回パソコンにあるコードを実行しないといけないので、手元にパソコンがない場合は実行できません。また、数時間おきに自動で実行してほしい!なんてこともできないのでそれらを解消していきます。
XserverVPSに実行するコードを置く
別に自分のパソコンにプログラム置いて実行したりしてもいいんですが、何かと面倒なのでVPSでやります。
XserverVPSでNodeアプリケーションサーバーを構築する
VPSはなんでもいいけど、もしVPS使うならXserver VPSがおすすめです。
申し込み画面は以下のような感じで自分が欲しいものを選択していきます。今回はnode.jsを使いたいので、イメージのアプリケーションにはnode.jsを選択しておきます。
自分はメモリ4GBのものが既にあったのでそれを使いますが、2GBあればいいと思います。
Xserver VPSにSFTP接続する
先ほどローカルで作成したコードをXserver VPSにアップロードします。数も少ないので手動でやってもいいですが、FTPソフトを使ってやった方が楽です。
FTPソフトは色々あるけど、Cyberduckだとこんな画面。
- 接続方式・・・SFTP
- サーバ・・・IPアドレス
- ユーザ名・・・root(root以外の方がいいと思います・・・)
- SSH Private Key・・・作成したSSH Private Key
フォルダをXserver VPSにアップロードする
先ほど作成したものをアップロードします。ドラッグして移動させるだけでアップロードできる。
アップロードするディレクトリは自分の好きな場所にしてください。今回は本当はやめた方がいいけど、root配下に入れておきます。
アップロードしたらSSH接続して実際に動くかどうか確かめてみるといいですよ。
Cronを設定する
定期的にChatGPTにブログ記事を作成してもらって、それをワードプレスブログに投稿して欲しいのでCronを設定します。
/etc/cron.d配下に拡張子なしでファイルを作って、cronの記述をします。今回はユーザーを作成していないのでroot、nodeコマンドのパスと実行したいファイルを指定しています。
$ vim /etc/cron.d/chatgpt_cron
// 記述例
*/10 * * * * root /usr/bin/node /root/chatgpt-project/index.js
// 再起動
$ service cron restart
試しに1分毎に実行するようにしてみると、ちゃんと投稿されていますね。
内容もそれっぽい内容をChatGPTが作成したものが確認できました。今回はChatGPTに与えた指令として "今話題のニュースから1つ選んでブログ記事書いて"
だったので、ニュースの記事が自動で投稿されるようになりました。
まとめ
ChatGPTを使って自動でブログ記事を作成してワードプレスブログに投稿するっていう事をやってみたけど、割と簡単にできました。
とりあえず試してどうなるかぐらいの感覚でやったためコードは雑だし指定したプロンプトも適当だけど、色々考えてやれば割と使えるかもというところ。
気になったらChatGPTのAPI使ってローカルで試したり、Xserver VPSでCron設定して自動で実行してみたりしてみてもいいかもしれません。