ChatGPTを使って、1クリックでブログ記事を量産するコードを公開する（GPT-4+LangChain）

ChatGPTのAPIで、なにか収益性のある面白いプロダクトを作れないものかと色々試行錯誤しています。
その中で、Web上から情報を取得し会話形式のテキストとして出力するツールが結構良い感じにできたので、今回の記事ではそちらの紹介と得られた知見の共有をしていきます。

# Demo
簡単にどういうものを作ったのかのデモを行います。
次のように記事にしたい話題をコマンドライン引数として与えて実行します。

```sh 
python main.py apple VRヘッドセット
```

### 生成テキスト
実行結果として、以下のようなテキストが作成されます。
以下は生成されたテキストファイルをコピーしてそのまま貼り付けたものです。（顔文字等も生成してくれます）

:::note info 
:laughing: とうとう発売か！待ち遠しいですね。
:::

:::note info 
:cold_sweat: 価格が約3000ドルは高すぎますね。でも確かに圧倒的な体験ができるかもしれませんね。
:::

:::note info 
:laughing: リーク情報では圧倒的体験があるとのことで期待が高まりますね。
:::

:::note info 
:smiley: 何百万ものiPadアプリがVRヘッドセットに対応する可能性があるとのことで、今からアプリの開発が楽しみですね。
:::

:::note info 
:smiley: 確かに開発者はVRヘッドセットに対応するアプリを開発することが必要ですね。
:::

:::note info 
:smiley: 今回のヘッドセットはMacと接続して外部モニターとして使用できる機能もあるとのことで、Macユーザーには嬉しいですね。
:::

:::note info 
:smiley: アップルはハリウッド映画の大物をヘッドセット用コンテンツ開発に起用するとのことで、どのようなコンテンツが提供されるのか楽しみですね。
:::

:::note info 
:joy: アップルがAR/VRヘッドセットを発表することは、AR/VR市場に大きな影響を与えることになるでしょう。
:::

:::note info 
:smiley: アップルは常に革新的な製品を出していますから、今回のヘッドセットも楽しみですね。
:::

:::note info 
:joy: 値段が高いという指摘もありますが、アップル製品は高品質で長持ちするので、コストパフォーマンスは高いと思います。
:::

# 構成
`crowler`、`interpreter`、`render`の主要3モジュールの構成で動いています。

![ManyDesign.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/965436/b795406a-3f59-155a-cc8b-a385feb7eb6a.png)

## Source: ArticleGPT

https://github.com/Ry-Kurihara/ArticleGPT

GitHubにソースコードを公開しています。
※ `ArticleGPT`という名前の有料ツールが既に存在するっぽいことをさっき発見したので、多分名前は後々変えると思います。。

## ChatGPTそのまま利用と比べた長所・セールスポイント
Webクローラーが動いてくれるため、Web上から集めた最新の情報を元に記事を書くことができます。

:::note warn
**雑談: ChatGPT プラグインが出てきたらこのツールの強みが無くなる？**

最近ChatGPTでのプラグインが出てきて、ChatGPT上でWebを参照した結果を返してくれるようになっているっぽいですね。
しかし、GPTの返答後にその返答文に対して自由な処理を実現できるという点で、優位性はまだあるかなと思っています。
:::


# 活用方法・活用案

## 5ch（2ch）まとめ形式やQiitaに最適な形式にカスタマイズする
デモで出力したものは、Qiitaに合わせた形式で出力していました。
その他にも、`render`モジュールをカスタマイズして、特定のサイトのCSSに合うようにHTML文を生成すれば、出力ファイルをそのままサイトの記事としてアップロードできます。そのようにして生成されたものを、細々と続けていたまとめサイトに久しぶりに[記事](https://earsoku.com/2023/05/21/%e3%80%90%e9%9b%91%e8%ab%87%e3%80%91airpods-max%e3%81%af%e9%ab%98%e3%81%84%ef%bc%9f-%e3%81%9d%e3%81%ae%e5%80%a4%e6%ae%b5%e5%88%86%e3%81%ae%e4%be%a1%e5%80%a4%e3%81%8c%e3%81%82%e3%82%8b%e3%81%8b/)を投稿してみました。

![スクリーンショット 2023-05-24 11.15.30.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/965436/c5358830-7f21-0286-276c-31b950e4af00.png)

↓のようなレスのすべてが`gpt-3.5-turbo`によって生成されています。（`gpt-4`はちょっと値段が高かったため`gpt-3.5-turbo`にしています。）

![スクリーンショット 2023-05-24 11.13.38.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/965436/0d11c5c4-38a0-f625-bc44-7bf35384b225.png)


上記の記事は、`python main.py AirPods Max 値段`と実行して出力されたHTMLファイルをそのまま公開しています。
今回は`なんj`のスレッドのようなやりとりになっていますが、命令文のカスタマイズでいろんな語尾・性格にすることも可能です。

:::note info
**雑談: AIで生成された記事をAI製と明記した方が良いか**
これが難しいところだなと。たぶん明記しない方がPVは増えると思いますが、読者に誠意を見せるなら明記すべきですかね。生成された記事のクオリティ次第な部分は大きいですが、そもそもAI記事は読みたくないという人も一定数いるのかなと思っており。

上記の記事では一応最後の方にちょこんと`generated by earsoku.com a.i.`と書いています。このあたりは反応があればタイトル時点で明記するなり調整していこうと思っていますが...そもそも過疎ブログなのであまりフィードバック自体もらえなさそう。
:::

## 作成された記事をWordPress等の各種ブログサービスに自動投稿する
`render`の処理が終わった後に、各種ブログサービスのAPIを叩いて記事をアップロードする機能を実装するともっと楽にブログ投稿ができそうです。
例えば、WordPressのAPIは↓で公開されているので、強い人ならサクッと実装できるやつだと思います。

https://ja.wp-api.org/

もっというと、AWSのLambda等でそれをスケジューリングさせておけば、完全に手間ゼロでブログが勝手に更新される状態が作れますね。
その際は、記事にする話題（検索するワード）をTwitterトレンドとかから探してくる実装も追加で必要になりますが。

![ManyDesign (1).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/965436/93b808c3-7a1a-14de-ecfc-e6e7ae9f256a.png)


ただ、これらはまだ`ArticleGPT`では未実装なので、現状では作成されたファイルをWordPressにコピペする運用をしています。

## 会話形式のベーステキストから、Youtubeまとめ動画を作成する（発展）
最近めっちゃ多いやつで、↓のような動画です。

<iframe width="560" height="315" src="https://www.youtube.com/embed/-UN2S78bwAs" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen></iframe>

こういった5ch（2ch）会話形式のYoutube動画も、このツールを拡張させていけば似たようなものが量産できないかなーと考えています。

会話のベーステキストを、ゆっくりボイス（Softalk）等が読み込める形式に変換して入力してあげて〜、というフローだと思いますが、あまり動画編集には明るくないのでこれは妄想段階ですね。

# まとめ
## 感想
こんな感じで、すぐに収益に繋がりそうなプロダクトも結構簡単に作れてしまうのは革新的ですね。ChatGPT（LLM全般）恐るべし。
今回紹介したツールはあくまで参考として、「こんなアイデアもあるんだ〜、じゃあ自分はこういうの作ってみよう」みたいな、LLMツール作成意欲の向上に繋げてもらえたら良いなと思っています。

## 今後について
引き続きこのツールの改良を続けていきつつ、ブログで運用・調査もしていく予定です。
何か面白いビジネスアイデアがあれば僕に教えてくださいm(_ _)m 
「もっとこうできるよ」とか「こういうのできないですか？」みたいなのも絶賛募集しています。（Twitterでご連絡いただけたら早めに反応できます）