おはようございます!マネジメントオフィスいまむらの今村敦剛です。
ぼくは毎日ブログを書いているのですが、正直なところしんどいので、AIに書いてもらいたいと思っています。そこで自動でブログ記事を生成し、しかもWordPressに投稿までしてくれるシステムを自作してしましました 簡単に紹介します。(ちなみにこの記事は、ほぼ人力で書いてます)
スポンサーリンク
従来のAIライターとは何か違うのか?
AIによる記事生成ツールって、検索するだけで結構いろいろ出てくるんですよ。でもそれが作る文章は無機質で、誰が書いても同じような文章になりがちです。そりゃ、AIは世の中のたくさんの文章の表面的な特徴を統計的に模倣するから、そうなりますよね。
でもそれをただコピペするだけでは「あっ、今村はAIで記事を作りやがったな」ということが人間には即バレです。人間は文章から、その人なりの表現や感情の乗せ方、思考の展開パターンを読み取ることができるからですね。従来のAIライターでは、そうした「人間らしさ」の壁を超えられませんでした。
新システムの核:「ベクトルデータベース」×「動的文体学習」
新しいシステムでは、この「人間らしさ」の壁を打ち破ろうと工夫したのですが、「ベクトルデータベース」と「動的文体学習」という観点を取り入れました。
ベクトルデータベースによる意味的検索
システムではまず、既存記事(ぼくのWordPress領域に投稿されている過去記事)を「ベクトル化」してデータベースに保存します。ベクトル化というのは、文章の意味や文脈を数値の集まり(ベクトル)に変換する技術です。これにより、単なるキーワードの一致ではなく、文脈から「意味が近い」記事を見つけ出すことができるようになるんですよ。
動的文体学習
ベクトル化によって選び出された3〜5件の類似記事だけを対象に、その場で「動的文体分析」を実行します。これにより、「その特定のトピックについて、人間(ぼく)はどのような書き方をするのか」というのをAIが分析し、そのテーマに即した文体を真似てくれるというわけです。
AIが記事を書き上げるまでの流れ
具体的にシステムがどのような流れで記事を生成するかを紹介しましよう。人間が操作するのはコマンドを一つ実行するだけです。その裏側では、ざっくりいうと、以下のようなプロセスが自動で走ります。
コマンドの実行(Claude Code上で)
このシステムはUbuntuに導入したClaude Code上で動きますので、まずは当該システムファイルを保存したディレクトリでClaude Codeを立ち上げます。そして以下のコマンドをうちます。
Bash
python3 main.py generate "AIの最新動向"
記事の長さやカテゴリの指定: --length 1500 や --category "Web開発" のように、記事の要件を指定するパラメーターも設定できます。(文体学習の精度調整や文体の信頼度に関する引数も設定可能)
類似記事の検索
コマンドで入力したテーマを参照し、システムはまず当社のWeb(WordPress)から、意味的に最も近い過去記事を、デフォルトで5件選び出します。(ベクトルデータベースの参照)
動的な文体分析と最新情報の収集
次に、選び出した過去記事だけを対象にして、文体を分析します。同時に、Brave Search MCPを使い、テーマに関する最新情報をインターネットから収集・統合します。(過去記事を似たテーマだけに限定するのは、いちいち全記事をサーチするのが大変だからです)
プロンプトの自動生成
過去記事から学んだ「文体プロファイル」、収集した「最新情報」、そしてこのシステムで個別に設定した「執筆ルール」(例えばhタグはどれを使うかとか、イントロ文の文字数はどの程度にするか、どういうショートコードを使うか)等を全て統合し、記事生成のプロンプトを自動で作ります。
記事生成と品質チェック
AIがこのプロンプトに基づいて記事を執筆します。執筆後、必要に応じてファクトチェック機能が作動し、内容の信頼性を検証します。(ファクトチェック機能は最初のコマンドで指定をする必要がある)
WordPressへ下書き投稿
全てのプロセスが完了すると、完成した記事はWordPressに「下書き」として自動で投稿されます。あとは、人間(ぼく)が最終確認をして公開ボタンを押すだけ、という仕組みです。(サムネイルは人間で作る必要がありますけど)
実際に生成された記事がこちら
実際に生成された記事はこちらです。これはぼく(人間)が全く手を加えていない、生成されたての記事ですね。これはコマンドを入力してから30秒弱で生成されました。すごくないですか?
正直にいって限界と課題も多い
これでブログを書くのが楽になった夢のようなシステムだ
と喜びたいのは山々ですが、課題もたくさんあります。
一つは、文体再現度の問題。これは過去記事をベースにして、そのテーマにあう文体を再現するという仕組みになっているので、全く書いたことのない新しいジャンルの記事をゼロから生成するとなると、やっぱり無機質なものになりがちです。そういうものは、一旦生成しておいて、その上でそのテーマにあう文体に手動修正して上げる必要があります。(そのテーマで記事が書き溜められると、ある程度は学習してくれるんでしょうけど)
そしてファクトチェック機能もまだまだですね。これも何度か試したんですけど、法律の条文(第何条の第何項)のようなものを正確に特定することは困難で、誤った情報をアウトプットすることもしばしばあります。専門性の高い情報や、速報性が求められる内容については、人間の目による最終確認が不可欠かなあと思いますね。
こうした点がありますので、WordPressには常に「下書き」として保存するようにしてます。AIがどれだけ進化しても、コンテンツの最終的な文責は人間に帰属すべきでしょうからね。生成された記事が正しくて、そして読者にとって読む価値があるかというのは、人間の役割として依然残るでしょうね。
そして結論ですが、結局ファクトチェックも文体調整も最終的に自分でやるのであれば、ChatGPTやGeminiに下書きさせたものを修正するのとそんなに変わんないな(わざわざシステムを作るまでもなかったな)という、身も蓋もないものになりました
まあそれでもこれからぼちぼち改良したりしながら、使っていくことでしょうけどね。