【特集】AIニュースブログの自動生成ワークフロー解説

Google Alerts × Notion × Claude Codeで毎週の記事作成を効率化する方法

目次

  1. イントロダクション ― なぜAI情報発信を自動化するのか
  2. 背景 ― 発信できなかった理由と自動化への道のり
  3. 全体アーキテクチャ ― 3層パイプラインの設計思想
  4. 詳細解説パート1: minitools ― 情報収集パイプライン
  5. 詳細解説パート2: social-content-creator ― 記事生成パイプライン
  6. 実践ケーススタディ ― 週刊AIニュース記事ができるまで
  7. 今後の展望 ― さらなる自動化と拡張の可能性
  8. まとめ

イントロダクション ― なぜAI情報発信を自動化するのか

AI業界の情報更新スピードは、他のどのテクノロジー分野よりも速いと言っても過言ではありません。毎日のように新しいモデルがリリースされ、論文が公開され、企業が新サービスを発表しています。この激流のような情報の中から本当に重要なニュースを選び、読者にわかりやすく届けること。それは、AIエンジニアにとって技術力と同じくらい大切なスキルです。 Aidottersでは、AI技術に関するブログ「aidotters.com」で毎週AIニュースのハイライト記事を公開しています。実は、この定期発信が実現できたのは、つい最近のことです。それまでは「情報発信をしたい」と思いながらも、日々の業務に追われて手が回らない状態がずっと続いていました。 本記事では、その状況を一変させた2つの自作ツールとAIの組み合わせによるワークフローを、実際のコードとアーキテクチャとともに詳しく解説します。具体的には以下の3つのコンポーネントで構成されるパイプラインです。
  1. minitools ― Google Alertsなどから情報を自動収集し、Notionに蓄積するPythonパッケージ
  2. Notion ― 収集した情報のデータベースとして機能するナレッジハブ
  3. social-content-creator ― Notionからデータを読み出し、Claude Codeのスキル機能で記事を生成・WordPress投稿するツール
この記事を読めば、同様のワークフローを自分のブログや情報発信に応用できるかと思います。それでは、全体像から見ていきましょう。

背景 ― 発信できなかった理由と自動化への道のり

そもそも発信ができていなかった

「週刊AIニュースの記事作成を効率化した」と言うと、以前は手動で書いていたものを自動化した、という印象を受けるかもしれません。しかし実態は違います。そもそも記事を書けていなかった状況でした。 AIエンジニアとしての日常は、思った以上に忙しいものです。業務でのAIアプリやモデル開発、データ分析に加え、この分野では常に新しい技術やツールをキャッチアップし続ける必要があります。新しいフレームワークを試し、知識をアップデートする。場合によっては論文にも目を通す。それだけで1日の時間はあっという間に過ぎていきます。 「情報発信もしたい」という気持ちはずっとありました。自分のアウトプットを通じて知識を整理したい。また、技術ブログを通じて何らかの貢献をしたい。しかし現実には、情報収集すら十分な時間を確保できない状況でした。 また、週刊AIニュースを手動で作ろうとすると、ざっくり以下のような工数が必要になるかと思いいます。
  1. 情報収集(2〜3時間)― Google検索、RSS、X(Twitter)、arXivなどを巡回してニュースを集める
  2. 選別・構成(1〜2時間)― 集めた数十件から8〜10件を選び、構成を決める
  3. 執筆(2〜3時間)― 各ニュースの要約と解説を書き、導入文とまとめを作る
  4. 投稿(30分〜1時間)― WordPressへの入稿、フォーマット調整、公開
合計で毎週6〜8時間。平日の業務後や週末にこれだけの時間を捻出するのは、現実的ではありませんでした。

Claude Codeのスキルがきっかけ

転機となったのは、Claude Codeの「スキル」機能との出会いです。AnthropicのCLIツールであるClaude Codeを昨年使い始めたときはコード生成以外に使うことは想定していませんでした。ところが、昨年末に導入されたClaude Codeの「スキル」を今年になって本格的に使い始めた時、「これはコーディングだけでなく、コンテンツ生成のワークフローにも使えるのではないか」と直感しました。 Claude Codeの「スキル」機能 ― 特定のタスクに対する手順書をMarkdownで定義し、スラッシュコマンドで呼び出せる仕組み ― を活用すれば、情報収集から記事生成、WordPress投稿までの一連のフローを定義できます。しかも、人間がレビューして修正する「Human-in-the-Loop」のアプローチを自然に組み込めることもこの「スキル」を利用するメリットです。

段階的に構築した自動化パイプライン

「全部を一気に自動化する」のではなく、結果的に、段階的にパイプラインを構築することになりました。

第1段階: 情報収集の自動化(minitools)

まず取り組んだのが、情報収集の自動化です。Google Alertsで毎日AIに関する記事がメールで配信されますが、あまりにも量が多いので、各記事を読むどころか目を通すのもままならない状態でした。そこで、Google Alertsで関心領域のニュースを自動的にメールで受信し、それをプログラムで解析して、Slackに記事リンクと要約を配信するとともに、Notionデータベースに格納する仕組みを構築しました。これをcronで定期実行することで、「自分が何もしなくても、毎日ニュースがNotionに溜まっていく」状態を作りました。

第2段階: 記事生成の効率化(social-content-creator)

次に、Notionに蓄積されたデータを活用して、Claude Codeのスキル機能で記事を生成する仕組みを作りました。テンプレートベースの記事構成、Notion APIからのデータ取得、WebSearchによる補完情報の収集を組み合わせることで、記事の骨組みから本文まで一貫して生成できるようになりました。

第3段階: 投稿・配信の自動化

最後に、生成した記事をWordPressに投稿するプロセスと、X(Twitter)への配信も自動化しました。WordPress投稿はMarkdownからの変換、メタデータの設定、下書きまたは公開ステータスの選択まで、コマンド一つで完了します。さらに、投稿した記事の紹介文をXに自動投稿する仕組みも組み込んでおり、/publish-to-x スキルで記事のURLと要約を含むポストを生成・投稿できます。ブログ公開からSNS拡散まで、一連の発信フローがシームレスにつながっています。 こうして、「情報発信がしたくてもできなかった」という状態から、毎週コンスタントに記事を公開できる状態に変わりました。

全体アーキテクチャ ― 3層パイプラインの設計思想

アーキテクチャ概要

本ワークフローは、大きく3つのレイヤーで構成されています。
Layer 1: 情報収集 minitools Google Alerts Gmail API minitools 翻訳・要約 Notion DB ArXiv Medium Digest Notion API Layer 2: データ蓄積 Google Alerts ArXiv Papers Medium Digest Notion API Layer 3: 記事生成・投稿 social-content-creator Notion API データ取得 Claude Code 記事生成 WordPress

設計: なぜ2つのリポジトリに分離したのか

このワークフローを1つのモノリシックなアプリケーションとして構築することも可能でした。しかし、経緯にも書きましたが、まずは、Slackへの配信やNotionへの保存機能を先に構築したことで、結果的にminitoolsとsocial-content-creatorを別リポジトリに分離しています。分離することで以下の点がメリットになっていると考えています。

1. 関心の分離(Separation of Concerns)

minitoolsは情報収集と前処理に特化したツール群です。Google Alerts、ArXiv、Medium、YouTubeなど、さまざまなソースからデータを集めて、翻訳・要約を行い、Notionに格納します。一方、social-content-creatorは記事生成と投稿に特化しています。Notionからデータを読み出し、テンプレートに従って記事を生成し、WordPressに投稿します。 この分離により、情報収集の仕組みを変更しても記事生成側に影響を与えず、逆も同様です。

2. 実行環境の違い

minitoolsはcronジョブとして無人で定期実行されることを前提としています。一方、social-content-creatorはClaude Codeのスキルとして対話的に実行されます。人間がレビューし、フィードバックを与え、必要に応じて修正するという、Human-in-the-Loopのワークフローを重視しています。

3. 再利用性

minitoolsで収集したデータは、ブログ記事以外にも活用できます。Slack通知、週次ダイジェスト、トレンド分析など、さまざまなユースケースに対応可能です。記事生成ツールと密結合にしてしまうと、この柔軟性が失われます。

Notionをハブとする理由

2つのツール間のデータ連携にNotionを選んだ理由も整理しておきます。
  • 構造化データベース: Notionのデータベース機能により、タイトル、URL、要約、日付などを構造化して保存できる
  • APIの充実: Notion APIを使って、プログラムから自在にデータを読み書きできる
  • 人間も使える: エンジニアでなくても、NotionのUIで直感的にデータを確認・編集できる
  • フィルタリング・ソート: 日付範囲やキーワードでのフィルタリングがAPI経由で容易
  • 無料枠が充実: 個人利用であれば、無料プランで十分に対応可能

詳細解説パート1: minitools ― 情報収集パイプライン

minitoolsの概要

minitoolsは、コンテンツ収集・処理・配信を自動化するPythonパッケージです。ArXiv論文、Medium記事、Google Alerts、YouTube動画など、複数のソースから情報を収集し、日本語に翻訳・要約してNotionやSlackに配信します。 週刊AIニュースのワークフローでは、特にGoogle Alerts Collectorが中核を担っています。

Google Alertsの設定

まず前提として、Google Alertsの設定について説明します。Google Alertsは、Googleが提供する無料の通知サービスで、指定したキーワードに関連する新しいウェブコンテンツが見つかると、メールで通知してくれます。 現在、以下の10個のアラートを設定しています。同じ意味のキーワードが英語・日本語で2つずつあるのは、それぞれの言語圏のニュースを漏れなく拾うためです。
キーワード対象言語
AI英語
AI日本語
AI startup英語
AI スタートアップ日本語
Deep Learning英語
ディープラーニング日本語
Generative AI英語
生成AI日本語
LLM英語
LLM日本語
このように英語と日本語の両方でアラートを設定することで、グローバルのAIニュースと日本国内のAIニュースを網羅的に収集できます。配信頻度は「その都度」に設定しており、新しいコンテンツが見つかり次第Gmailに配信されます。

minitoolsによるGoogle Alerts処理フロー

minitoolsのGoogle Alerts処理は、以下のステップで動作します。
Gmail受信ボックス
    │
    ▼
① Gmail API でアラートメールを取得
    │
    ▼
② メール本文からニュース記事を抽出
   (タイトル、URL、スニペット)
    │
    ▼
③ 各記事をOllamaで日本語に翻訳・要約
    │
    ▼
④ Notion APIでデータベースに保存
    │
    ▼
⑤ (オプション) Slack Webhookで通知

ステップ①: Gmail APIによるメール取得

minitoolsはGmail APIを使用して、Google Alertsからの通知メールを取得します。
# minitools/collectors/google_alerts.py の概要
class GoogleAlertsCollector:
    def collect(self, hours: int = 6):
        # Gmail APIで過去N時間のGoogle Alertメールを検索
        messages = self.gmail_service.users().messages().list(
            userId="me",
            q=f"from:googlealerts-noreply@google.com after:{after_date}"
        ).execute()
        # 各メールからニュース記事を抽出
        for msg in messages:
            articles = self.parse_alert_email(msg)
            yield articles
Gmail APIの認証には、Google Cloud PlatformでOAuth 2.0クレデンシャルを取得する必要があります。初回実行時にブラウザ認証を行い、以降は token.pickle ファイルで認証状態を維持します。

ステップ②: メール解析と記事抽出

Google Alertsのメールはhtml形式で、各ニュースがカード形式で並んでいます。minitoolsはこのHTMLを解析して、以下の情報を抽出します。
  • タイトル: 記事の見出し
  • URL: 記事への直接リンク
  • スニペット: Google Alertsが付与する概要テキスト
  • ソース: 記事の配信元メディア名

ステップ③: Ollamaによる翻訳・要約

抽出した記事は、ローカルで動作するLLM(Ollama)を使って日本語に翻訳・要約されます。
# minitools/processors/translator.py の概要
class Translator:
    async def translate_with_summary(self, title: str, content: str):
        prompt = f"""
        以下の英語の記事タイトルと内容を日本語に翻訳し、
        3行程度の要約を作成してください。
        Title: {title}
        Content: {content}
        """
        result = await self.llm.generate(prompt)
        return {
            "japanese_title": result.japanese_title,
            "summary": result.summary
        }
Ollamaを使うメリットは以下の通りです。
  • コスト: ローカル実行のため、API料金が不要
  • プライバシー: データが外部に送信されない
  • 速度: ネットワーク遅延がなく、並列処理で高速化可能
minitoolsでは gemma3:27b モデルをデフォルトで使用しており、日本語の品質とパフォーマンスのバランスが良好です。また、非同期処理により最大10記事を同時処理し、50記事を約60秒で処理できます。

ステップ④: Notionデータベースへの保存

翻訳・要約された記事は、Notion APIを使ってデータベースに保存されます。
# minitools/publishers/notion.py の概要
class NotionPublisher:
    async def save_article(self, database_id: str, article: dict):
        self.client.pages.create(
            parent={"database_id": database_id},
            properties={
                "Title": {"title": [{"text": {"content": article["title"]}}]},
                "Japanese Title": {"rich_text": [{"text": {"content": article["japanese_title"]}}]},
                "URL": {"url": article["url"]},
                "Summary": {"rich_text": [{"text": {"content": article["summary"]}}]},
                "Date": {"date": {"start": article["date"]}},
                "Source": {"rich_text": [{"text": {"content": article["source"]}}]},
            }
        )
Notionデータベースには以下のプロパティを設定しています。
プロパティタイプ説明
TitleTitle元記事のタイトル(英語)
Japanese TitleRich Text日本語翻訳タイトル
URLURL記事のURL
SummaryRich Text日本語要約
DateDate記事の日付
SourceRich Text配信元メディア名

cronによる定期実行

minitoolsはcronジョブとして定期実行することを前提に設計されています。Google Alertsの処理は6時間ごとに実行するのが推奨設定です。
# crontab設定例
# 6時間ごとにGoogle Alertsを処理
0 */6 * * * cd /path/to/minitools && /path/to/uv run google-alerts
# 毎週月曜日9時に週次ダイジェストを生成
0 9 * * 1 cd /path/to/minitools && /path/to/uv run google-alert-weekly-digest
この設定により、1日4回、自動的にGoogle Alertsのニュースが処理され、Notionデータベースに蓄積されていきます。1週間で約100〜200件のAI関連ニュースが自動的にストックされることになります。

その他の情報ソース

minitoolsはGoogle Alerts以外にも、複数の情報ソースに対応しています。週刊AIニュースの記事生成で特に活用しているのは以下の2つです。 ArXiv論文収集
# ArXiv論文の自動収集(毎日実行)
uv run arxiv --keywords "LLM" "(RAG OR FINETUNING OR AGENT)" --days 1
arXivの論文も日次で収集し、Notionの別データベースに蓄積しています。週刊ニュースでは、特に注目度の高い論文を「学術・研究動向」セクションで取り上げることがあります。 Medium Daily Digest
# Medium Daily Digestの処理
uv run medium --date 2026-03-28 --notion
Medium Daily Digestは、Mediumが毎日配信するキュレーションメールです。AI・ML関連のカテゴリをフォローしておくと、海外エンジニアのリアルな知見やチュートリアル、プロダクト開発の舞台裏などが届きます。

詳細解説パート2: social-content-creator ― 記事生成パイプライン

social-content-creatorの概要

social-content-creatorは、Aidottersの情報発信効率化ツールです。ブログ記事生成・WordPress投稿・Notion連携・情報収集を一貫して行うPythonプロジェクトで、Claude Codeのスキル機能を中心に設計されています。

Claude Codeとスキル機能

ここで、このワークフローの鍵となるClaude Codeについて説明します。 Claude Codeは、Anthropicが提供するCLI(コマンドラインインターフェース)ツールで、ターミナル上でClaude AIと対話しながらソフトウェア開発を行えるエージェントです。ファイルの読み書き、コマンド実行、Web検索など、さまざまなツールを使いこなし、複雑なタスクを遂行できます。 Claude Codeのスキル(Skills)は、特定のタスクに対する詳細な手順書をMarkdownファイルとして定義する仕組みです。スキルを定義しておけば、 /create-blog-post のようなスラッシュコマンドで呼び出すだけで、Claudeが手順に沿って自律的に作業を進めてくれます。 social-content-creatorでは、以下のスキルを定義しています。
スキル説明
/create-blog-postブログ記事の生成・レビュー・投稿を一括実行
/publish-to-wordpressドラフト記事をWordPressに投稿
/publish-to-x記事の紹介をX(Twitter)に投稿

2層アーキテクチャ: スキル層 + ツール層

social-content-creatorは2層アーキテクチャを採用しています。
スキル層(Claude Code)
  • ・記事構成の判断
  • ・ニュースの選定・優先順位付け
  • ・本文の執筆
  • ・レビュー対応・修正
  • ・ユーザーとの対話
呼び出し
ツール層(Python)
  • ・Notion APIからのデータ取得
  • ・WebSearchによる情報収集
  • ・テンプレート管理
  • ・Markdown処理
  • ・WordPress API投稿

Notion Collectorの仕組み

social-content-creatorには、Notionからデータを取得するための3つのCollectorが実装されています。
# src/collectors/notion_news.py
class NotionNewsCollector(NotionBaseCollector):
    """Notion APIでGoogle Alertニュースデータベースを直接クエリするCollector。"""
    async def collect(self, query: str, **kwargs) -> list[CollectedData]:
        # 日付範囲でフィルタリング
        date_from = kwargs.get("date_from")
        date_to = kwargs.get("date_to")
        # Notion APIのフィルタを構築
        filter_params = {
            "and": [
                {"property": "Date", "date": {"on_or_after": date_from}},
                {"property": "Date", "date": {"before": date_to}},
            ]
        }
        # データベースをクエリ
        results = await self.query_database(self._db_id, filter_params)
        return [self._to_collected_data(page) for page in results]
3つのCollectorの使い分けは以下の通りです。
Collector対象主な用途
NotionNewsCollectorGoogle Alertsニュース週刊AIニュースのメインソース
NotionPaperCollectorArXiv論文論文レビュー記事、ニュースの学術背景
NotionMediumCollectorMedium記事海外エンジニアの知見、技術トレンド
すべてのCollectorは共通の CollectorProtocol を実装しており、統一されたインターフェースでデータを取得できます。

テンプレートシステム

social-content-creatorでは、記事のタイプごとにテンプレートを定義しています。テンプレートには以下の情報が含まれます。
  • セクション構成: 記事の各セクションのタイトルと説明
  • 文字数目安: 最小・最大文字数
  • 文体ガイド: です・ます調、トーン、読者への配慮
weekly-ai-newsの場合、以下のようなテンプレート構成になっています。
ContentTemplate(
    content_type="weekly-ai-news",
    name="週刊AIニュースハイライト",
    min_words=3000,
    max_words=5000,
    sections=[
        Section(title="今週のハイライト", description="目次的な要約リスト"),
        Section(title="主要ニュース", description="8〜10件の詳細解説"),
        Section(title="業界動向・トレンド", description="横断的なトレンド分析"),
        Section(title="まとめ", description="今週の総括と来週の注目点"),
    ],
    style_guide="です・ます調。各ニュースに参考リンクを付与..."
)
テンプレートはレジストリパターンで管理されており、get_template("weekly-ai-news") のように型名を指定するだけで取得できます。

記事生成フロー(weekly-ai-news)

週刊AIニュース記事の生成は、Claude Codeのスキルとして以下のフローで実行されます。 ① 対象期間の算出 記事作成日を基準に、対象となる週の月曜日〜日曜日を算出します。例えば、2026年3月29日(土)に実行した場合、対象週は3月23日(月)〜3月29日(日)となります。 ② Notion APIからニュースを取得
uv run python -c "
import asyncio, json
from src.collectors.notion_news import NotionNewsCollector
c = NotionNewsCollector()
results = asyncio.run(c.collect('', date_from='2026-03-23', date_to='2026-03-30'))
for r in results:
    print(json.dumps({
        'title': r.title,
        'url': r.url,
        'published_date': r.published_date,
        'content': r.content[:200]
    }, ensure_ascii=False))
"
③ WebSearchで補完情報を収集 Notionのデータだけでは最新の速報ニュースをカバーしきれない場合があるため、WebSearchで補完します。グローバルと日本国内の両方を検索します。 ④ ニュースの選定と構成 収集した100〜200件のニュースから、Claude AIが8〜10件を選定します。この際、以下のルールが適用されます。
  • 主要ニュース8〜10件のうち、最低3割は日本国内のニュースを含める
  • 一次情報(公式発表、プレスリリース)を優先する
  • 個人ブログは参考リンクとして使用しない
  • 対象期間外のニュースは除外する
⑤ 記事本文の生成 テンプレートのセクション構成に従い、Claude AIが記事本文を生成します。です・ます調で、読者が「自分でも試してみよう」と思えるようなトーンで執筆します。 ⑥ ドラフト保存とレビュー 生成された記事は docs/drafts/ ディレクトリにMarkdownファイルとして保存されます。frontmatterにメタデータ(日付、タイプ、スラグ等)が記録されます。ここで人間によるレビューが入り、必要に応じて修正を指示します。

WordPress投稿

レビュー・修正が完了したら、WordPressに投稿します。
uv run python -c "
import asyncio
from pathlib import Path
from src.publishers.wordpress import WordPressPublisher
from src.generators.blog_post import BlogPostGenerator
pub = WordPressPublisher()
gen = BlogPostGenerator()
post = asyncio.run(gen.load_draft(Path('docs/drafts/20260329-weekly-ai-news.md')))
result = asyncio.run(pub.publish(post, status='publish'))
if result.success:
    print(f'投稿成功: {result.url}')
"
WordPressPublisherは以下の処理を行います。
  1. MarkdownをHTMLに変換
  2. WordPress REST APIを使って記事を作成
  3. カテゴリ・タグの設定
  4. 投稿ステータス(下書き/公開)の設定
  5. 投稿成功後、ファイルを docs/drafts/ から docs/posts/ に移動

実践ケーススタディ ― 週刊AIニュース記事ができるまで

ここでは、実際に2026年3月第4週の週刊AIニュース記事を作成した際のフローを、ステップバイステップで追体験してみましょう。

Step 1: 前提 ― Notionにニュースが蓄積されている

記事作成に取りかかる前の段階で、minitoolsのcronジョブによりNotionデータベースには1週間分のAI関連ニュースが蓄積されています。 この週のNotionデータベースには、約150件のGoogle Alertsニュース、30件のArXiv論文、20件のMedium記事がストックされていました。

Step 2: Claude Codeでスキルを実行

ターミナルでClaude Codeを起動し、スキルを呼び出します。
$ claude
> /create-blog-post --type weekly-ai-news
このコマンドを実行すると、Claude Codeは create-blog-post スキルの定義(SKILL.md)を読み込み、記事生成フローを開始します。

Step 3: 情報収集(自動)

Claude Codeは以下の処理を自動的に実行します。
  1. 対象期間の算出: 2026年3月23日(月)〜3月29日(日)
  2. NotionNewsCollectorの実行: 150件のGoogle Alertsニュースを取得
  3. NotionMediumCollectorの実行: 20件のMedium記事を取得
  4. WebSearchの実行: グローバルと日本国内のAIニュースを検索
  5. 日本国内ニュースの重点収集: 日本企業名・機関名でフィルタリング
この情報収集フェーズは約2〜3分で完了します。

Step 4: 記事生成(自動 + 人間レビュー)

収集した情報をもとに、Claude AIが記事本文を生成します。テンプレートに従い、以下のような構成の記事が出力されます。
## 今週のハイライト
> - OpenAI「Sora」終了 ― Disney 10億ドル提携も破談に
> - Anthropic「Claude Mythos」流出 ― 史上最強モデルの存在が明らかに
> - Shopify「Agentic Storefronts」始動
> ...(8〜10件)
## 主要ニュース
### 1. OpenAI「Sora」終了 ― Disney 10億ドル提携も破談に
3月24日、OpenAIは動画生成AI「Sora」の...
生成された記事はそのまま表示され、ユーザーに修正ポイントの確認を求めます。ここがHuman-in-the-Loopの重要なポイントです。
  • ニュースの選定は妥当か?
  • 解説の正確性に問題はないか?
  • グローバル/日本のバランスは適切か?
  • 文体やトーンは統一されているか?
フィードバックを受けてClaude AIが修正し、満足できる品質になるまで繰り返します。

Step 5: WordPress投稿

レビューが完了したら、Claude Codeに投稿を指示します。
> WordPressに公開ステータスで投稿してください
投稿が成功すると、記事のURLが表示され、ドラフトファイルは自動的に docs/posts/ ディレクトリに移動されます。

所要時間の比較

フェーズ手動の場合(想定)自動化後
情報収集2〜3時間0分(cron自動実行)
ニュース選定・構成1〜2時間2〜3分(自動)
記事執筆2〜3時間5〜10分(自動生成)
レビュー・修正10〜20分(人間)
WordPress投稿30分〜1時間1分(自動)
合計6〜8時間約20〜30分
情報収集は事前にcronで完了しているため、記事作成時の作業は実質的にレビューと修正の10〜20分が中心です。手動でやろうとしたら6〜8時間かかるであろう作業が、約20〜30分で完了します。そもそもこの時間を捻出できなかったからこそ発信ができなかったわけで、このワークフローがなければ週刊AIニュースの定期発信は実現していなかったでしょう。

今後の展望 ― さらなる自動化と拡張の可能性

現在のワークフローの課題

現在のワークフローは発信の実現という大きな課題を解決してくれましたが、まだ改善の余地があります。 情報ソースの偏り: Google Alertsに依存しているため、Googleのインデックスに載らないニュース(例: 企業の内部発表、コミュニティの議論)は拾えません。 リアルタイム性: cronの実行間隔(6時間)があるため、速報性のあるニュースは反映が遅れることがあります。 画像生成の未対応: 現在、アイキャッチ画像やインフォグラフィックは手動で作成しています。

今後の展望

X(Twitter)トレンドの統合 minitoolsには既にX(Twitter)のトレンド収集機能(x-trendコマンド)が実装されています。TwitterAPI.ioを使用して、日本/グローバルのトレンド、キーワード検索、フォロー中アカウントのタイムラインからAI関連情報を収集できます。 この機能を週刊ニュースのパイプラインに統合することで、Xで話題になっているがメディアではまだ報じられていないトレンドも記事に反映できるようになります。 マルチメディア対応 YouTube動画の要約機能もminitoolsに実装済みです。AI関連のカンファレンス動画や技術解説動画の要約を、週刊ニュースの補足コンテンツとして組み込むことも検討できます。 記事品質の自動評価 現在はHuman-in-the-Loopでレビューしていますが、事前にAIによる品質チェック(事実確認、リンク切れ検出、文体統一性チェック)を自動化することで、レビュー負荷をさらに軽減できる可能性があります。

ツールの利用について

minitools と social-content-creator はいずれも GitHub で公開している自作ツールです。同様のワークフローを構築したい方は、これらのツールをフォークして自分のニーズに合わせてカスタマイズできます。 例えば、以下のようなユースケースへの応用が考えられます。
  • 社内技術ブログ: 自社に関連する技術ニュースを自動収集し、社内ブログを定期更新
  • 業界レポート: 特定業界(FinTech、HealthTech等)に特化したニュースレターの自動生成
  • 競合分析: 競合企業に関するニュースを自動収集し、週次レポートを生成
  • 個人ブログ: 自分の興味分野に関するキュレーション記事を定期発信

まとめ

本記事では、AIニュースブログの自動生成ワークフローを、3つのレイヤー(情報収集・蓄積・記事生成)に分けて解説しました。 全体のポイントを振り返ると:
  1. minitools がGoogle Alertsをはじめとする複数ソースから情報を自動収集し、Ollamaで翻訳・要約してNotionに蓄積する
  2. Notion がデータハブとして機能し、構造化されたニュースデータベースを提供する
  3. social-content-creator がNotion APIでデータを取得し、Claude Codeのスキル機能で記事を生成・WordPress投稿する
このパイプラインがなければ、そもそも週刊AIニュースの定期発信は実現していませんでした。日々の業務とキャッチアップに追われる中で、情報収集から執筆、投稿までを手動でやる時間を確保するのは現実的ではなかったからです。 Claude Codeの「スキル」機能との出会いが転機となり、「やりたかったけど時間がなくてできなかったこと」を実現可能にしてくれた。これがこのワークフローの本質です。 特に重要なのは、完全自動化ではなくHuman-in-the-Loopのアプローチを採用している点です。AIが得意な情報収集・構成・執筆はAIに任せつつ、最終的な判断(ニュースの妥当性、解説の正確性)は人間が行うことで、品質を担保しています。 このワークフローは、技術的には特別なことをしているわけではありません。Gmail API、Notion API、WordPress REST API、ローカルLLM(Ollama)、そしてClaude Codeのスキル機能。既存のツールとAPIを適切に組み合わせることで、大きな効率化を実現しています。 情報発信の自動化に興味のある方は、ぜひ minitoolssocial-content-creator のリポジトリを覗いてみてください。 注意事項 本記事はClaude Codeのスキル機能を用いて生成しています。人による確認を経て、一部校正していますが、大部分はClaude Sonnet 4.6/Opus 4.6によるものです。
関連リンクminitools – GitHubsocial-content-creator – GitHubAidotters BlogClaude Code – AnthropicNotion API Documentation

コメント

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