Claude APIをベースにしたAI秘書システムに、Webスクレイピング・サイト巡回・天気表示・WordPress接続変更の機能を追加した流れをまとめます。
AI秘書の基本構成
このAI秘書は以下の技術スタックで構築されています。
- AI本体:Claude API(claude-sonnet-4-6)
- メール管理:Gmail API
- スケジュール管理:Google Calendar API
- タスク・ノート管理:ローカルJSONファイル
- WordPress連携:WordPress REST API
- 外部連携:LINE Messaging API
Claudeのtool use機能を使い、ユーザーの自然言語の指示を解釈して各APIを呼び出すエージェントループで動作します。
追加機能①:Webスクレイピング+AI整理+DB保存
概要
URLを指定すると、ページ内容を取得してAIが要約・カテゴリ分類・キーワード抽出を行い、SQLiteデータベースに保存する機能です。
使用ライブラリ
pip install requests beautifulsoup4
処理フロー
- requestsでHTMLを取得
- BeautifulSoupでscript・style・nav等を除去して本文を抽出
- Claude(Haiku)に要約・カテゴリ・キーワードをJSON形式で生成させる
- URLのSHA256ハッシュで重複チェック
- SQLite(scraped_pages.db)に保存
AI秘書に追加したツール
scrape_url:URL指定でスクレイピング→保存list_scraped:保存済みページの一覧取得(カテゴリフィルター可)search_scraped:キーワードで全文検索
DB設計
CREATE TABLE scraped_pages (
id INTEGER PRIMARY KEY AUTOINCREMENT,
url TEXT UNIQUE,
url_hash TEXT UNIQUE,
title TEXT,
summary TEXT,
category TEXT,
keywords TEXT,
raw_text TEXT,
scraped_at TEXT
)
追加機能②:サイト巡回クローラー
概要
トップページのURLを指定すると、同一ドメイン内のリンクをBFS(幅優先探索)で自動巡回し、各ページをAI整理してDBに保存します。
主な仕様
- 巡回方式:BFS(幅優先)でトップページ近くを優先
- ドメイン制限:開始URLと同一ドメインのみ(外部サイトには出ない)
- 重複防止:DB保存済みURLは再フェッチしない
- パラメータ:最大ページ数(デフォルト20)・最大深さ(デフォルト2)・リクエスト間隔(デフォルト1秒)
ポイント:リンク抽出のタイミング
本文取得のためにBeautifulSoupでscript等を除去する前に、生のHTMLからリンクを抽出することで取りこぼしを防いでいます。
# リンク抽出は本文除去前のHTMLから行う
if depth < max_depth:
for link in _extract_links(raw_html, url, allowed_netloc):
if link not in visited:
queue.append((link, depth + 1))
追加機能③:天気表示(APIキー不要)
概要
現在地または指定都市の天気と3日間予報を取得します。APIキーの登録が一切不要です。
使用サービス
- 位置情報:ip-api.com(IP geolocation、無料・キー不要)
- 天気データ:Open-Meteo(完全無料・キー不要)
- 都市名→座標変換:Open-Meteo Geocoding API
取得できる情報
- 現在の気温・体感温度・天気・湿度・風速
- 3日間の最高/最低気温・降水量・天気
使用例
あなた:今日の天気は?
秘書:現在地(東京)の天気は晴れ、気温25°Cです。
あなた:大阪の天気教えて
秘書:大阪は曇り、気温23°Cです。
WordPress接続先の変更手順
背景
ステージング環境(testrs.jp)への接続先変更に伴い、サーバーのBasic認証とWordPressのアプリケーションパスワードが Authorization ヘッダーで競合する問題が発生しました。
解決手順
1. Basic認証の除外設定(.htaccess)
お名前.comのファイルマネージャーから /home/ユーザー名/public_html/サイトパス/.htaccess を開き、以下を追加:
<Files wp-login.php>
Satisfy Any
Allow from all
</Files>
2. アプリケーションパスワードの発行
WordPress管理画面 → ユーザー → プロフィール → アプリケーションパスワード で発行。
3. パーマリンク設定の変更
WordPress REST API(/wp-json/)を使うには、パーマリンクが「基本」以外である必要があります。
設定 → パーマリンク → 「投稿名」を選択して保存するだけで /wp-json/ が有効になります。
4. .envの更新
WP_URL=https://your-site.com
WP_USER=your_username
WP_APP_PASSWORD=xxxx xxxx xxxx xxxx xxxx xxxx
まとめ
今回の構築で、AI秘書に以下の機能が追加されました。
| 機能 | ファイル | 外部API |
|---|---|---|
| Webスクレイピング+DB保存 | scraping_tools.py | なし |
| サイト巡回クローラー | scraping_tools.py | なし |
| 天気表示 | weather_tools.py | ip-api.com / Open-Meteo |
| WordPress接続 | .env | WordPress REST API |
すべてClaude APIのtool use機能を通じて自然言語で操作できます。