この記事でできること
OpenAI・Google・GitHubの公式サイトが配信するRSSフィードから、最新ニュースの「日付・タイトル・URL」一覧を1コマンドで取得できるようにします。スクリプトはPython標準ライブラリのみ・約40行で、追加インストールもAPIキーも不要です。本記事の手順と実行結果は、2026年8月11日にWindows 11(Python 3.11.1)のサンドボックス環境ですべて実際に実行したものです。
AIニュース収集自動化の流れ
一次ソース収集の自動化フロー(Python標準ライブラリのみ)
収集は機械・要約はAI・判断は人。役割を分けるのがポイント
毎朝の手動巡回(10〜15分)が、スクリプト実行+AI要約の確認(2〜3分)に置き換わる
| 公式RSSフィード | collect_ai_news.py | 最新ニュース一覧 | AIで要約→共有 |
|---|---|---|---|
| OpenAI | Python標準ライブラリのみ | 日付・タイトル・URLの | ChatGPT / Claudeに |
| Google AI | 追加インストール不要 | テキスト一覧を出力 | 貼り付けて業務影響を |
| GitHub Changelog | 約40行・コピペで動く | (そのままAIに渡せる形式) | 要約させ、朝会や |
| (一次ソースのみ) | 実行1回=数秒 | チャットで共有 |
なぜ「収集だけ」を機械にやらせるのか
AIニュースの追跡でいちばん時間を食うのは、要約ではなく巡回だからです。複数の公式サイトを毎朝開いて回る作業を機械化すると、残るのは「一覧をAIに貼って要約させ、自分の業務に関係あるものだけ読む」という数分の作業になります。
- 収集=機械(毎回同じ手順・漏れない)、要約=AI、判断=人、と役割を分けると仕組みが壊れにくい
- ニュースアプリやSNS経由と違い、公式RSSは一次ソース直結なので伝聞による歪みがない
- 当メディア(AIディア)の日次ニュース収集も、この記事と同じ手法で毎朝運用している
なお、まとめサイトではなく公式フィードを収集元にするのは正確性のためです。伝聞情報は要約の段階でどれだけ丁寧にやっても元が歪んでいれば直りません。
前提環境
Pythonがインストールされていれば追加準備は不要です。動作確認は次の環境で行いました。
- Python 3.11.1(
python --versionの出力:Python 3.11.1) - Windows 11(コマンド実行はターミナル。Mac/Linuxでも同じコードで動く標準ライブラリのみを使用)
手順1: スクリプトを保存する
以下を collect_ai_news.py という名前で任意のフォルダに保存します。使うのは urllib(HTTP取得)と xml.etree(XML解析)だけで、どちらもPythonに最初から入っています。
# -*- coding: utf-8 -*-
# collect_ai_news.py — AI企業の公式RSSから最新ニュース一覧を取得する(標準ライブラリのみ)
import re
import sys
import urllib.request
import xml.etree.ElementTree as ET
# 収集先(公式一次ソースのRSS/Atomフィード)
FEEDS = [
("OpenAI", "https://openai.com/news/rss.xml"),
("Google AI", "https://blog.google/technology/ai/rss/"),
("GitHub Changelog", "https://github.blog/changelog/feed/"),
]
MAX_ITEMS = 3 # 各フィードから取る件数
sys.stdout.reconfigure(encoding="utf-8", errors="replace")
def text(el):
"""XML要素からテキストを取り出す(空白を正規化)"""
return re.sub(r"\s+", " ", (el.text or "").strip()) if el is not None else ""
for name, url in FEEDS:
req = urllib.request.Request(url, headers={"User-Agent": "Mozilla/5.0"})
with urllib.request.urlopen(req, timeout=30) as r:
raw = r.read()
root = ET.fromstring(raw)
print(f"== {name} ==")
items = root.findall(".//item")
if items: # RSS 2.0形式
for it in items[:MAX_ITEMS]:
print(f"- [{text(it.find('pubDate'))}] {text(it.find('title'))}")
print(f" {text(it.find('link'))}")
else: # Atom形式
ns = "{http://www.w3.org/2005/Atom}"
for it in root.findall(f".//{ns}entry")[:MAX_ITEMS]:
link = it.find(f"{ns}link[@rel='alternate']")
if link is None:
link = it.find(f"{ns}link")
print(f"- [{text(it.find(f'{ns}updated'))}] {text(it.find(f'{ns}title'))}")
print(f" {link.get('href') if link is not None else ''}")
print()
ポイントは2つです。RSS 2.0とAtomという2種類のフィード形式を自動判別するため、たいていの公式フィードにURL追加だけで対応できます。User-Agent ヘッダを付けているのは、無指定のアクセスを拒否するサイトがあるためです。
手順2: 実行する
保存したフォルダで次を実行します。
python collect_ai_news.py
2026年8月11日の実際の出力がこちらです(加工なし・当日の生出力)。
== OpenAI ==
- [Mon, 10 Aug 2026 14:00:00 GMT] OpenAI’s letter to Governor Abbott on responsible AI infrastructure in Texas
https://openai.com/index/responsible-ai-infrastructure-texas
- [Mon, 10 Aug 2026 12:00:00 GMT] Model ML completes finance work more efficiently with GPT-5.6 Sol
https://openai.com/index/model-ml
- [Mon, 10 Aug 2026 17:00:00 GMT] What building an AI-native finance function taught me
https://openai.com/index/building-an-ai-native-finance-function
== Google AI ==
- [Mon, 10 Aug 2026 14:30:00 +0000] Evolve your marketing with new AI tools
https://blog.google/products/ads-commerce/google-ads-analytics-ai-updates/
- [Tue, 04 Aug 2026 13:00:00 +0000] The latest AI news we announced in July 2026
https://blog.google/innovation-and-ai/technology/ai/google-ai-updates-july-2026/
- [Mon, 03 Aug 2026 15:00:00 +0000] Inside our 353,000-person vibe coding course
https://blog.google/innovation-and-ai/technology/developers-tools/ai-agents-intensive-recap-2026/
== GitHub Changelog ==
- [Mon, 10 Aug 2026 14:27:04 +0000] Copilot on web expands conversation controls
https://github.blog/changelog/2026-08-10-copilot-on-web-expands-conversation-controls
- [Mon, 10 Aug 2026 14:00:58 +0000] GitHub billing in India now supports automatic recurring payments
https://github.blog/changelog/2026-08-10-github-billing-in-india-now-supports-automatic-recurring-payments
- [Mon, 10 Aug 2026 12:45:49 +0000] Custom thread subscriptions are being deprecated
https://github.blog/changelog/2026-08-10-custom-thread-subscriptions-are-being-deprecated
3フィード×3件が数秒で取得できました。この時点で「今朝の巡回」は終わりです。
手順3: 出力をAIに貼って要約させる
一覧をそのままChatGPTやClaudeに貼り付け、次のようなプロンプトで要約させます。
以下は今朝取得したAI関連の公式発表一覧です。
中小企業の業務に影響がありそうなものだけを選び、
「何が起きたか/自社業務への影響/確認すべきこと」を
それぞれ2行以内でまとめてください。
影響が薄いものは「スキップ」とだけ書いてください。
(ここにスクリプトの出力を貼る)
タイトルだけで判断させず、気になった項目はURLを開いて原文を確認してから社内共有してください。AIの要約は下書きであって、一次ソースの代わりにはなりません。
カスタマイズ: 収集先の追加
FEEDS にタプルを1行足すだけです。自社の業種に関係するフィードに差し替えても、そのまま動きます。
| 収集先の例 | フィードURL |
|---|---|
| OpenAI公式ニュース | https://openai.com/news/rss.xml |
| Google AI公式ブログ | https://blog.google/technology/ai/rss/ |
| GitHub Changelog | https://github.blog/changelog/feed/ |
フィードURLの見つけ方: 対象サイトで「RSS」リンクを探すか、サイト名 RSS feed で検索します。ページのHTMLソースに type="application/rss+xml" として埋まっていることも多いです。
つまずきポイント
検証中に確認した注意点です。
- 403 Forbiddenが返る:
User-Agentヘッダなしのアクセスを拒否するサイトがあります。スクリプトに含めたheaders={"User-Agent": "Mozilla/5.0"}を消さないでください - 日本語が文字化けする: Windowsのコンソール既定文字コードが原因です。スクリプト内の
sys.stdout.reconfigure(encoding="utf-8", ...)で対処済みですが、それでも化ける場合はpython -X utf8 collect_ai_news.pyと実行してください - フィードによって日付形式が違う: RSS 2.0(
pubDate)とAtom(updated)で表記が異なります。並び替えが必要になったらemail.utils.parsedate_to_datetime等での正規化を検討してください(本記事の範囲外)
まとめ
約40行・標準ライブラリのみのスクリプトで、AIニュースの一次ソース巡回が1コマンドになりました。収集を機械に、要約をAIに任せると、人の仕事は「自社にとって重要かの判断」だけに絞れます。手順は2026年8月11日に実行検証済みで、掲載した出力はすべて当日の生出力です。取得した情報の活かし方はAIニュース実務ダイジェストの「明日からできること」形式が参考になります。開発チームでのAI活用はClaude Codeのsubagentコードレビュー自動化もあわせてどうぞ。
よくある質問