社内のGaroon掲示板に眠ってる情報、LLMで検索できたら超便利だよね。DifyのKnowledge Baseに自動で流し込めば、それが実現できるよ。ETLパイプライン、Claude Codeに丸投げで組ませちゃおう。
一番雑な投げ方
とりあえず雑に頼んでみよう。
Garoonの掲示板データをDify Knowledge Baseに同期するPythonスクリプト作って
これだけで動く。Garoon REST APIのクライアントとDify Knowledge Base APIのクライアント、そして両者を繋ぐ同期スクリプトをまとめて生成してくれるよ。必要な認証情報とかは後で.envファイルに書けばいいって感じだね。
もうちょい具体的に投げるパターン
もうちょっとだけ細かく指示したいときは、こんな感じで投げてみて。
パターン1: 認証情報とターゲットを指定
APIキーとかKnowledge Base IDは環境変数で渡したいし、特定の掲示板だけを対象にしたいってときはこれ。
Garoonの掲示板データをDify Knowledge Baseに同期するPythonスクリプトを書いてほしい。
Garoonのcybozu.comドメイン、ユーザー名、パスワード、DifyのAPIキーとKnowledge Base IDは、全部環境変数から読み込むようにして。
同期対象は特定の掲示板IDだけにしたいんだけど、そのIDも設定できるようにしてね。
Claude Codeは賢いから、だいたい.envファイルの例まで作ってくれるはず。
パターン2: コード構成とエラーハンドリングを意識させる
生成されるコードのメンテナンス性も考えたいなら、最初からファイル分割やエラー処理を指示しておくのがおすすめ。
Garoon REST APIのクライアント、Dify Knowledge Base APIのクライアント、そして同期ロジックをそれぞれ独立したPythonファイルに分けて書いて。
各処理には、きちんとエラーハンドリングとロギングの仕組みも入れてほしいな。
これでgaroon_client.py、dify_client.py、sync.pyみたいな感じで、きれいに分割されたコードが手に入るよ。
実践例 / 実録
実際に「社内のお知らせ掲示板」をDifyのKnowledge Baseに同期してみたよ。
まず、一番雑なプロンプトを投げたんだけど、Claude Codeは期待通りにgaroon_client.py、dify_client.py、sync.pyの3つのファイルを生成してくれた。
次に、生成された指示に従ってプロジェクトルートに.envファイルを用意して、Garoonのドメイン、ユーザー名、パスワード、そしてDifyのAPIキーとKnowledge Base IDを設定したよ。DifyのKnowledge Baseは事前にDify Cloudの管理画面でポチッと作っておいた。
# 生成されたスクリプトを動かす準備
cd <プロジェクトディレクトリ>
python3 -m venv venv && source venv/bin/activate
pip install -r requirements.txt # Claudeがrequirements.txtも作ってくれる
cp .env.example .env # .env.exampleも作ってくれることが多い
.envファイルを編集して、
GAROON_DOMAIN=your-domain.cybozu.com
GAROON_USERNAME=your-username
GAROON_PASSWORD=your-password
DIFY_API_KEY=your-dify-api-key
DIFY_KNOWLEDGE_BASE_ID=your-knowledge-base-id
って感じでクレデンシャル情報を書き込んだら、あとはpython sync.pyを実行するだけ。
実行すると、Garoonの掲示板からタイトルと本文がごっそりDifyのKnowledge Baseにインポートされていくのがログで確認できた。掲示板の本文がHTMLだったんだけど、Claude Codeが生成したスクリプトはいい感じにテキスト抽出してくれてたから、Dify側でもちゃんとRAGで使えるデータになってたよ。
これで、DifyのLLMアプリから「去年の人事異動のお知らせ、いつだっけ?」とか「あの障害報告、どういう内容だった?」みたいな質問を投げると、Garoonの掲示板情報をもとに回答してくれるようになった。超便利。
Claude Codeは同期の状態を保存するためにdata/ディレクトリを自動で作成して、そこに同期済みのアイテムIDなんかを保存する仕組みも入れてくれた。これのおかげで、次回以降は増分同期(差分だけ同期)してくれるようになって、無駄なAPIコールが減らせたよ。
つまずきポイント
何回かやってみて「あ、ここハマるな」って思ったポイントがいくつかあるから、気をつけてみて。
- Garoonの認証形式: cybozu.comクラウド版の場合、APIトークンじゃなくてユーザー名とパスワードで認証することが多い。もし二段階認証を設定してるなら、アプリパスワードを発行して使う必要があるよ。Claudeに「cybozu.comクラウド版のGaroon REST APIの認証」って具体的に伝えると、より適切なコードを書いてくれる。
- Dify Knowledge Baseの事前作成: DifyのAPIを叩く前に、必ずDifyの管理画面でKnowledge Baseを作っておこう。Knowledge Base IDがないと同期できないからね。
- HTML本文の処理: Garoon掲示板の本文はHTMLで書かれてる場合がある。そのままDifyに渡すとノイズになるから、Claude Codeが生成したスクリプトがちゃんとテキスト抽出してくれてるか確認しよう。もしうまく抽出できてなかったら、「掲示板の本文はHTMLだから、タグを除去してプレーンテキストにしてからDifyに送って」って追加で指示を出すといいよ。
- APIレート制限: GaroonやDifyのAPIにはレート制限があるから、一度に大量のデータを同期しようとするとエラーになることがある。Claude Codeに「APIのレート制限に配慮して、リトライ処理や適度な
time.sleepを入れてほしい」って頼めば、いい感じに調整してくれるはず。