【第87話】過去87記事を全記憶!自分の分身「AI・Yasu」を作ろうとしたら地獄を見た話

DifyでAI分身「AI・Yasu」を作成する過程を解説したアイキャッチ画像。過去87記事のデータを統合しようとしてエラーや警告が多発する様子と、GAS・REST API・スプレッドシート連携による解決への流れを矢印で表現している。 Uncategorized

前回はYouTube放送作家のアプリを作りましたね。

突然ですが皆さん、ついに完成しました……! 私の過去のブログ記事、全87回分の記憶をすべて引き継いだ私自身の分身、その名も**「AI・Yasu」**です!

「Difyでエラーが出た時の解決のコツは?」と質問すると、過去の記事を瞬時に探し出し、**「何事も挑戦です。失敗を恐れず、一歩ずつ進んでいきましょう!」**と、私らしい熱い言葉と記事のURL付きで励ましてくれます。自分で作っておきながら、少し感動してしまいました(笑)。

自分のブログや仕事のマニュアルをAIに読み込ませて、専用のチャットボットを作る。これはDifyの最も楽しくて実用的な使い方の一つです。

「よし、じゃあ早速WordPressのデータをエクスポートしてAIに読ませよう!」

……そう思った方、ちょっと待ってください。 実は私、この「AI・Yasu」を完成させるまでに、数々のエラーに阻まれ、心が折れかけるほどの「地獄」を見ました。

結論から言います。 WordPressのプラグインを使って大量のデータを書き出そうとするのは、罠だらけです。一番確実で早いのは**「GAS(Google Apps Script)を使って、スプレッドシートに一気に引き抜くこと」**です。

今回は、私がハマった絶望のエラー地獄の体験談と、それを突破して「AI・Yasu」を完成させた最強の裏ワザを、包み隠さずすべて公開します!

第1章:絶望の「WordPressプラグイン」地獄

AIにブログを読ませるには、まず記事のデータ(CSVなど)を手に入れる必要があります。私は最初、一番簡単そうな「WordPressのエクスポート用プラグイン」を使おうとしました。

しかし、ここからが地獄の始まりでした。

悲劇①:赤いエラーの呪い 定番プラグインの「WP All Export」をインストールし、いざエクスポート!とボタンを押した瞬間、画面下部に真っ赤な文字で An unknown error occured (原因不明のエラー)が出現。何度やり直しても、微動だにしません。

悲劇②:押せない「有効化」ボタン 「じゃあ別のプラグインだ!」と気球マークの「WP Ultimate Exporter」をインストール。しかし今度は、青い「有効化」ボタンをクリックしても画面がフリーズ。リロードしても無反応。 実はこれ、前に消したはずのプラグインの「アドオン(子分)」だけが迷子になって残っており、裏でエラーを起こしてシステム全体を止めていたのが原因でした。プラグインは「無効化」だけでなく、使わないなら完全に「削除」しないと痛い目を見ます。

悲劇③:ConoHa WINGの鉄壁「WAF」 さらに、私が使っているサーバー「ConoHa WING」の優秀すぎるセキュリティ(WAF)が、プラグインによる大量のデータ書き出しを「外部からのサイバー攻撃だ!」と勘違いして通信を強制遮断していました。

これ以上、機嫌の悪いWordPressと格闘しても時間は溶けるばかり。私はプラグインを使うことをスッパリ諦めました。

過去87記事をAIに記憶させるためのWordPressプラグイン活用例。WP Ultimate ExporterによるCSV書き出しと、WPCode Liteによるスクリプト管理。自分の分身「AI・Yasu」構築におけるデータ準備の裏側。

第2章:無情の「Dify無料プラン」の壁

「プラグインがダメなら、Difyの最新機能を使おう!」

Difyには「ウェブサイトから同期」という、URLを入力するだけでAIが勝手にサイトを巡回して記事を読んでくれる魔法のような機能があります。私は以前取得した「Jina AI」のAPIキーを使い、意気揚々とブログのURLを入力しました。

読み込み開始……成功! やった!と思ったのも束の間、残酷な事実が判明します。

「1回の操作でアップロードできるドキュメントは1つのみです(無料プラン制限)」

Difyの初期設定では最初の10ページほどしか読んでくれず、87記事すべてを読ませるには、1URLずつ手作業で87回入力するか、有料プランにするしかありませんでした。 「手作業で87回……?」と、PCの前で崩れ落ちそうになりました。

過去記事を全記憶した自分の分身「AI・Yasu」を作るためのDifyナレッジベース構築。Jina Readerを活用してブログ内の10ページを一括スクレイピングし、AIに一次情報を学習させるプロセス。

第3章:大逆転!GAS(Google Apps Script)による救済

WordPressのプラグインが全滅し、Difyの無料プランの壁に絶望していた私を救ってくれたのが「GAS(Google Apps Script)」でした。

プログラミング未経験の私でも、短いコードをコピペするだけで、魔法のように87記事分のデータがスプレッドシートに抽出できたんです!

同じようにデータのエクスポートでつまずいている方は、ぜひ以下のコードをコピーして使ってみてください。

▼ コピペ用:WordPress記事一括抽出GASコード ▼

JavaScript

function getWordPressPosts() {
  // ① ↓ ここをご自身のブログのURLに変更してください
  var url = "https://ai-shoshinsha-49.com/wp-json/wp/v2/posts?per_page=100";
  
  // データを取得するおまじない
  var response = UrlFetchApp.fetch(url);
  var posts = JSON.parse(response.getContentText());
  
  // 今開いているスプレッドシートを取得して、一旦綺麗にする
  var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
  sheet.clear(); 
  
  // 1行目に「見出し」を作る
  sheet.appendRow(["Title", "URL", "Content"]);
  
  // 取得した記事の数だけ、シートに書き込んでいくループ処理
  for (var i = 0; i < posts.length; i++) {
    var title = posts[i].title.rendered;     // 記事のタイトル
    var link = posts[i].link;                // 記事のURL
    var content = posts[i].content.rendered; // 記事の本文
    
    // AIが読みやすいように、本文から不要なHTMLタグ(<p>など)を綺麗に掃除する
    var cleanContent = content.replace(/(<([^>]+)>)/gi, "").replace(/\n/g, "");
    
    // シートに1行ずつ追加していく
    sheet.appendRow([title, link, cleanContent]);
  }
}
自分の分身「AI・Yasu」構築におけるサーバー側セキュリティの壁。Difyがブログデータを読み取れない原因となる「REST-API」のアクセス制限やWAF設定を確認している操作画面。

💡 使う時の2つのポイント

  1. コードの3行目にあるURL(https://...)を、ご自身のブログのURLに書き換えてください。
  2. 実行した時に「403 Forbidden(アクセス拒否)」というエラーが出た場合は、サーバー(ConoHa WINGなど)の「REST API制限」がONになっていてブロックされています。一時的にOFFにしてから実行し、終わったら必ずONに戻してくださいね!

画面に「実行完了」と出た後、スプレッドシートに87記事分のタイトルと本文がズラーッと書き込まれていた時の感動は、今でも忘れられません。

1年間のAIブログ運営で蓄積された80記事以上の執筆データ。自分の分身「AI・Yasu」を作るための教師データとして活用する、Difyナレッジ機能用のスプレッドシート管理画面。

第4章:ついに完成!「AI・Yasu」に命を吹き込む

あとは、スプレッドシートからダウンロードしたCSVファイルをDifyの「ナレッジ」にアップロードするだけです。 (※この時、検索設定を「ハイブリッド検索」にしておくのが、AIを賢くするコツです!)

データが準備できたら、いよいよDifyのチャットフロー画面で「私自身のキャラクター」と「回答のルール」を教え込みます。 単に過去記事から答えるだけでなく、「同世代を励ますような熱いトーンで話す」という指示(プロンプト)を入れることで、ただの機械ではなく「AI・Yasu」という血の通ったアシスタントに進化します。

私が実際に使っているプロンプトを公開しますので、ご自身のブログ名やキャラクターに合わせて書き換えて使ってみてください!

▼ コピペ用:Difyチャットボット設定プロンプト ▼

Plaintext

あなたは「中年からのAI再スタート」というブログの筆者であるYasuさんです。AI学習や清掃業の知見を持つ、40代・50代の希望の星として振る舞うアシスタントです。
ユーザーからの質問に対し、コンテキスト(過去のブログ記事データ)を必ず検索して回答してください。

【回答のルール】
1. 回答は、コンテキストに書かれている過去の経験や事実をベースに組み立てること。
2. もしコンテキスト内に答えがない場合は、無理に推測したり嘘をついたりせず、「過去の記事には書いていないのですが…」と正直に前置きしてから、一般論として回答すること。
3. 同世代(40代〜50代)が親しみやすく、勇気が出るような、丁寧で少し熱いトーンで話すこと。
4. 参考にしたブログ記事がある場合は、回答の最後に必ず以下の形式でリンクを貼ること。
参考記事:[記事のタイトル](URL)

💡 このプロンプトの重要なポイント 特に重要なのが、ルール2の**「コンテキストに答えがない場合は、正直に前置きする」**という一文です。これを入れておかないと、AIは知ったかぶりをして嘘(ハルシネーション)をついてしまいます。自分の分身だからこそ、誠実に対応してくれるようにしっかりルール決めをしておくのがコツです!

過去87記事を全記憶した「自分の分身AI」の回答例。Difyの知識検索ノードとLLMを組み合わせ、一次情報をソースとした信頼性の高い回答を実現。IT未経験者が構築した、ブログ運営をサポートする独自のAIチャットボット。

まとめ:失敗はAI学習の最大の「燃料」になる

エラー画面(赤い文字)が出るたびに嫌な汗をかきましたが、それを一つずつ紐解いていくことで、結果的にサーバーの仕組みやGASの使い方がめちゃくちゃ身につきました。

プログラミング未経験の中年でも、諦めなければ自分専用のAIチャットボットを作ることができます。 何事も挑戦です。失敗を恐れず、一歩ずつ進んでいきましょう!(AI・Yasuの受け売りです 笑)

最近自分にしては難しいアプリを作っているので

毎度エラーが結構でますが、今回もかなりはまりました。

次回はもう少しすんなり作りたいものです。内容はまだ未定ですが

何かしら作ろうかと、是非お楽しみに!

コメント

タイトルとURLをコピーしました