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

処理フロー

  1. requestsでHTMLを取得
  2. BeautifulSoupでscript・style・nav等を除去して本文を抽出
  3. Claude(Haiku)に要約・カテゴリ・キーワードをJSON形式で生成させる
  4. URLのSHA256ハッシュで重複チェック
  5. 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機能を通じて自然言語で操作できます。