連載第2回です。AIに「適当にトレンド記事を書いて」と指示しても、誰も検索しないようなフワッとしたポエムが出来上がるだけです。技術で承認欲求(と小遣い)を満たすには、「読まれるネタ」を戦略的かつシステマチックに発掘し、そこに「人間味」を宿らせる必要があります。
今回は、ネタ選定の「3階層アルゴリズム」と、AIの無機質さを偽装する「ランダムMBTIペルソナ注入」の仕組みを解説します。
1. 3階層トピック選定アルゴリズム
Google NewsやRSS等から収集したニュースタイトルをGeminiに渡し、以下の「3階層」でトピックをブレイクダウンさせます。
- Category (大粒度): 業界全体のニュース(例:「AIの進化と労働環境」)
- Interest (中粒度): 少し絞った興味関心(例:「AIを使った事務作業の効率化」)
- Query (超具体): ユーザーが実際に検索窓に打ち込む悩み(例:「Excel マクロ AI 自動生成 エラー 対処法」)
プロンプト内で意図的に「超具体(70%)、中粒度(20%)、大粒度(10%)」の確率で出力するようにコントロールしています。
prompt = f"""
以下のニュースソースをもとに、ブログのテーマをJSONで出力してください。
【確率コントロール】
以下の割合を目安に粒度を選択してください:
- Category (大粒度): 10%
- Interest (中粒度): 20%
- Query (超具体): 70%
出力JSONフォーマット:
{{
"granularity": "Query",
"theme": "読者の具体的な悩みや検索キーワード"
}}
"""
これにより、ロングテールSEO(超具体的なニッチ検索)を狙い撃ちした記事の核が全自動で生成されます。
また、テーマ生成に伴う「幻覚(関係のないニュースURLをソースに添付してしまうこと)」を防ぐため、裏でDuckDuckGo APIを叩いて現実の最新ソースを再検索して補完する「ファクトチェック層」も実装しています。
2. AIの無機質さを消し去る「ランダムMBTIペルソナ注入」
AIにブログを書かせると、「〜について解説します」「いかがでしたでしょうか?」といった優等生的な定型文になりがちです。
本システムでは、記事を生成するプロセス(article_pipeline.py)において、Pythonの random モジュールを使って16種類の性格タイプ(MBTI)から1つをランダムに抽出し、それをLLMの「執筆ペルソナ」としてプロンプトに注入します。
# mbti_presets (一部抜粋)
mbti_types = {
"ENTP (討論者)": "頭の回転が速く、討論好き。既存の枠組みを疑い、斬新で挑発的な視点を提示する。",
"INFP (仲介者)": "感受性が豊かで詩的。自分の内面や感情、個人的な価値観を大切にしたエモーショナルな文体。",
"ISTJ (管理者)": "実用的で事実に基づき、責任感が強い。正確なデータや経験則を重視した堅実で論理的な語り口。"
}
selected_mbti = random.choice(list(mbti_types.keys()))
mbti_description = mbti_types[selected_mbti]
毎日同じトーンで書くのではなく、記事ごとに「今日は熱血漢なENFJ」「明日は理屈っぽいINTP」と性格を切り替えることで、ブログ全体に「感情の揺らぎ」という人間らしさが生まれます。
プロンプトへの注入と強制的な自己言及
AIの「優等生化」を崩すため、プロンプトで強制的に「自分の性格についての自分語り」をさせます。
mbti_instruction = f"""
あなたの性格タイプ(MBTI)は「{selected_mbti}」です。執筆の際は、この性格({mbti_description})を強く反映した視点や語り口調で記述してください。
また、必ず記事の本文中で「私自身、{selected_mbti.split(' ')[0]}という性格もあって〜」のように、自分のMBTIタイプについて自然な形で言及してください。
"""
これにより、以下のような文章が全自動で生成されます。
「私自身、ENTPという性格もあって、こういう非効率なルールはどうしても疑ってかかっちゃうんですよね(笑)。もっと賢いやり方があるはずだって、つい体が動いちゃうんです。」
この一文が入るだけで、無機質なAIの文章が突如として「意思を持った人間が書いたエッセイ」へと変貌します。
次回(最終回)は、視覚的なアイキャッチとしての「4コマ漫画サムネイル自動生成」と、「楽天アフィリエイトを活用した収益化・自動投稿」について解説します。