GPT image1でwordpressの自動投稿(make.com)
ホームページを運営していると、最初は頑張っていても、内容とかもネタが尽きて更新頻度が一気に減ります。
そうなると、飽きっぽい自分としては、自動更新をさせたくなるわけで、いろいろ探りながらホームページの自動更新をさせることにしました。
最終的な目標としては、ChatGPTを使って、記事を書き、関連する画像を生成し、wordpress(ホームページ)にアップロードして、ついでにInstagramとFacebookにも投稿しよう。という流れです。
いろいろ調べていたら自動化ソフトウェアとして、make.comが良さそうということで、使います。
かなりの紆余曲折はありましたが、何とか目的は達成しました。
準備としては
Make.comアカウント
Googleアカウント
OpenAIのAPIを使う必要があるので、ChatGPT Plusに加入
Instagram for Business
Facebook Page
最終的な形は、こうなりました。

一番左から
1.Google Sheets(Search Row)
googleシートで、投稿テーマを100個作ります。もちろんChatGPTに作ってもらいました。
A列には投稿テーマ、B列には投稿フラグ(最初は全てTRUEにする)にしておきます。
2.OpenAI(Create a Completion(Prompt))
OpenAIのAPIを設定して、GoogleSheetsから一番最初のTRUEのテーマを読み取り、本文作成指示文を登録します。
3.OpenAI(Generate an Image)
投稿テーマを表示しつつ手書き風イラストを添える画像を生成します。DALL-Eではなく、GPT image1にしないと読めない記号のような日本語文章が生成されてしまいます。画像生成は、日本語よりは英語で指示したほうがイメージに近いものが出来上がります。日本語→英語翻訳はDeeplを使ってます。
4.Image(Convert a format)
JPEGに変えます。
OpenAI GPT image1が作成する画像はBase64というエンコードで画像生成されているようで、wordpressではそのままでは受け取れません。
pngでもアップロードはできますが、アップロード後に処理が進まないエラーが解消できませんでした。jpegならOK。
※DALL-Eの時は、生成されたものを直接wordpressにアップロードできましたが、GPT image1はできませんでした。
5.WordPress(Create a Media Item)
Imageで作られた画像を、WordPressにアップロードします
6.Wordpress(Create a Post)
アップロードした画像とOpenAIで作成した本文を使って、記事投稿。アイキャッチ画像として設定しています
7.Wordpress(Get a Media Item)
投稿された画像を抽出。後でSNS投稿用に使います
8.Router
処理を分けます。実は順番に処理すれば良いだけなので、分けなくても良いけど、なんとなく分けてあるほうがかっこいい!
9.Instagram for Business(Facebook login)(Create a photo post)
Instagramに投稿します
10.Facebook Pages(Create a Post with Photos)
Facebookに投稿します
11.Google Sheets(Update a Row)
ここまで来たということは、wordpress、Instagram、Facebookの投稿が終わったことになるので、最初の投稿用Google SheetsのB列のTRUEをNoに書き換え
※こうすることによって、次回は同じテーマを読まずに次のテーマでフローが進みます
できてしまえば、簡単だけど、ここまでなかなか大変でした。
DALL-Eでは生成した画像をそのままwordpressが受け取ってくたけど、全然うまくいかずにエラーが出ます。
エラーは出るけど、画像はアップロードされているという状態で、先に進まないんです。エラー無視させたりもするけど、そうするとアップロードした画像情報が得られなくて、投稿ができない。
Base64をバイナリにエンコードしたり、Googleドライブに移してから、アップロードして投稿も試したけど、うまくいくようでいかない。
結局、うまく行ったのは、Image(jpeg変換)です。これだけで上手くいきます。これに気づくのに相当かかってしまった。
そういえば、以前もJpegで引っかかった気がする。wordpressはとりあえずJpegにしておきましょう。
このブログも自動投稿しようかしら。。