# AI News 自動投稿システム 毎朝8時に自動的にAI関連ニュースをWordPressブログに投稿するNode.jsスクリプト --- ## 概要 このシステムは、24時間以内に発行されたAI関連ニュースを自動収集し、影響力の大きい5つのニュースを選定して分析記事を作成し、WordPress に自動投稿します。 ### ターゲット読者 - 日本のIT関連CTO - エンジニア - 投資家 ### 主な機能 - ✅ **24時間以内のAI関連ニュース**を自動収集 - ✅ **Bloomberg、Forbes** など信頼性の高いメディアを優先 - ✅ **Claude AI** で影響力の大きいニュース5つを自動選定 - ✅ 各ニュースの「核心内容」と「なぜ重要か」を分析 - ✅ WordPress に自動投稿(cron で毎朝8時実行) --- ## 技術スタック - **Node.js** 18+ - **@anthropic-ai/claude-agent-sdk** - Claude AI 連動、WebSearch - **WordPress REST API** - 自動投稿 - **dotenv** - 環境変数管理 - **axios** - HTTP 通信 --- ## ディレクトリ構造 ``` /var/www/tkim.planitai.co.jp/blog/batch/auto-post-ai-news/ ├── package.json # Node.js依存関係 ├── package-lock.json ├── .env # 環境変数 (git ignored) ├── .env.example # 環境変数のテンプレート ├── .gitignore ├── README.md # このファイル │ ├── auto-post-ai-news.js # メインスクリプト (エントリーポイント) │ ├── lib/ │ ├── news-collector.js # ニュース収集モジュール │ ├── news-analyzer.js # ニュース分析モジュール (Claude SDK) │ ├── formatter.js # フォーマット変換モジュール │ └── wordpress-client.js # WordPress API クライアント │ ├── config/ │ └── prompts.js # Claude用プロンプトテンプレート │ ├── logs/ │ ├── ai-news-YYYYMMDD.log # 日別実行ログ │ ├── error.log # エラーログ │ └── cron.log # cron実行ログ │ └── test/ ├── test-news-collector.js # ユニットテスト ├── test-analyzer.js └── test-wordpress.js ``` --- ## セットアップ ### 1. インストール ```bash cd /var/www/tkim.planitai.co.jp/blog/batch/auto-post-ai-news npm install ``` ### 2. 環境変数設定 `.env.example` をコピーして `.env` を作成: ```bash cp .env.example .env ``` `.env` ファイルを編集: ```bash # WordPress API WP_API_URL=https://2025032623012012057904.onamaeweb.jp/blog/wp-json WP_USERNAME=planitai WP_APP_PASSWORD=FeTbFPmtBn3NbII57BUc59iJ # Claude API (optional if using SDK default) ANTHROPIC_API_KEY=sk-ant-xxx # ログレベル LOG_LEVEL=info # タイムゾーン TZ=Asia/Tokyo # カテゴリID (WordPress) WP_CATEGORY_ID=1 ``` #### WordPress Application Password について - **Application Name**: `ai-news-writer` - **Application Password**: `FeTbFPmtBn3NbII57BUc59iJ` - **Username**: `planitai` WordPress 5.6以降で標準機能として提供されるセキュアな認証方式です。 --- ## 実行方法 ### 手動実行(テスト) ```bash # プロジェクトディレクトリに移動 cd /var/www/tkim.planitai.co.jp/blog/batch/auto-post-ai-news # スクリプト実行 node auto-post-ai-news.js ``` ### 自動実行(cron設定) 毎朝8時に自動実行する場合: ```bash # crontab 編集 crontab -e # 以下を追加 0 8 * * * cd /var/www/tkim.planitai.co.jp/blog/batch/auto-post-ai-news && /usr/bin/node auto-post-ai-news.js >> logs/cron.log 2>&1 ``` #### cron設定の確認 ```bash # 設定済みcronを確認 crontab -l # cron実行ログ確認 tail -f /var/www/tkim.planitai.co.jp/blog/batch/auto-post-ai-news/logs/cron.log ``` --- ## ログ確認 ### 実行ログ ```bash # 今日のログを確認 tail -f logs/ai-news-$(date +%Y%m%d).log # 特定日のログを確認 tail -f logs/ai-news-20251123.log ``` ### エラーログ ```bash tail -f logs/error.log ``` ### すべてのログファイル確認 ```bash ls -lh logs/ ``` --- ## 動作フロー ``` [1] ニュース収集 ↓ - WebSearch で AI 関連ニュースを検索 - 24時間以内にpublishされたニュースのみに絞り込み - Bloomberg、Forbes など信頼性の高いメディアを優先 [2] ニュース分析 ↓ - Claude Agent SDK でニュース分析 - 影響力の大きい5つのニュースを選定 - 各ニュースの「核心内容」と「なぜ重要か」を生成 [3] フォーマット ↓ - 指定されたフォーマットに整形 - ニュース出処リンク追加 [4] WordPress投稿 ↓ - REST API で投稿作成 - Application Password で認証 [5] ログ記録 ↓ - 成功/失敗をログに記録 ``` --- ## 出力フォーマット 投稿されるブログの形式: ``` タイトル: YYYY/MM/DD AI News ## 1) [ニュースタイトル] 核心内容 [ニュースの要点を簡潔に要約] なぜ重要か [ビジネス・技術的意義を分析(CTO/エンジニア/投資家の視点から)] ニュース出処: [記事タイトル](URL) ---- ## 2) [ニュースタイトル] ... ``` --- ## ニュースソース ### 優先度順 1. **高信頼性メディア** - Bloomberg - Forbes - Reuters - Wall Street Journal 2. **テック系メディア** - TechCrunch - The Verge - Ars Technica 3. **日本のメディア** - 日経新聞 - ITmedia - CNET Japan ### 検索キーワード - "AI news Bloomberg Forbes" - "artificial intelligence news latest" - "AI ニュース 日本 最新" - "OpenAI, Google AI, Anthropic, Microsoft AI, NVIDIA" --- ## トラブルシューティング ### 投稿が作成されない 1. **WordPress接続確認** ```bash curl -u planitai:FeTbFPmtBn3NbII57BUc59iJ \ https://2025032623012012057904.onamaeweb.jp/blog/wp-json/wp/v2/posts ``` 2. **環境変数確認** ```bash cat .env ``` 3. **エラーログ確認** ```bash tail -n 50 logs/error.log ``` ### cron が実行されない 1. **cron設定確認** ```bash crontab -l ``` 2. **cron実行ログ確認** ```bash tail -f logs/cron.log ``` 3. **手動実行でテスト** ```bash cd /var/www/tkim.planitai.co.jp/blog/batch/auto-post-ai-news node auto-post-ai-news.js ``` ### ニュースが見つからない - 24時間以内のAI関連ニュースが不足している可能性 - エラーログを確認して WebSearch のエラーをチェック - 検索キーワードを調整 ### Claude API エラー 1. **API キー確認** ```bash echo $ANTHROPIC_API_KEY ``` 2. **maxTurns を調整** - デフォルト: 50 - 必要に応じて増減 --- ## 環境変数リファレンス | 変数名 | 説明 | デフォルト値 | 必須 | |--------|------|-------------|------| | `WP_API_URL` | WordPress REST API URL | - | ✅ | | `WP_USERNAME` | WordPress ユーザー名 | - | ✅ | | `WP_APP_PASSWORD` | WordPress Application Password | - | ✅ | | `ANTHROPIC_API_KEY` | Claude API キー | SDK default | ❌ | | `LOG_LEVEL` | ログレベル (info/warn/error) | `info` | ❌ | | `TZ` | タイムゾーン | `Asia/Tokyo` | ❌ | | `WP_CATEGORY_ID` | WordPress カテゴリID | `1` | ❌ | --- ## 開発 ### テスト実行 ```bash # ニュース収集テスト node test/test-news-collector.js # ニュース分析テスト node test/test-analyzer.js # WordPress接続テスト node test/test-wordpress.js ``` ### デバッグモード ```bash # ログレベルをdebugに変更 LOG_LEVEL=debug node auto-post-ai-news.js ``` --- ## メンテナンス ### ログローテーション `logrotate` でログファイルを定期的にローテーション: ```bash # /etc/logrotate.d/ai-news-auto-post /var/www/tkim.planitai.co.jp/blog/batch/auto-post-ai-news/logs/*.log { daily rotate 30 compress delaycompress missingok notifempty } ``` ### 定期確認項目 - [ ] 毎日投稿が正常に作成されているか - [ ] エラーログに異常がないか - [ ] ディスク容量(ログファイルの肥大化) - [ ] WordPress API 認証情報の有効期限 --- ## 今後の拡張予定 ### 優先度: 高 - [ ] エラー時のSlack通知 - [ ] 投稿履歴ダッシュボード - [ ] ニュースソースの多様化 ### 優先度: 中 - [ ] カテゴリ自動分類 - [ ] タグ自動生成 - [ ] Featured Image 自動設定 ### 優先度: 低 - [ ] 多言語対応(英語版) - [ ] SNS自動投稿 - [ ] アナリティクス連動 --- ## ライセンス Proprietary - PlanitAI Inc. --- ## サポート 問題が発生した場合: 1. **エラーログ確認**: `logs/error.log` 2. **手動実行テスト**: `node auto-post-ai-news.js` 3. **WordPress接続確認**: curl でAPI接続テスト --- ## 関連ドキュメント - [WordPress REST API Reference](https://developer.wordpress.org/rest-api/reference/posts/) - [Claude Agent SDK Documentation](https://github.com/anthropics/claude-agent-sdk) - [plan.md](./plan.md) - 詳細な実装計画 --- **作成日**: 2025-11-23 **最終更新**: 2025-11-23 **プロジェクト**: AI News Auto Post System