新聞社の社説を、無料公開分だけ自動で集める。
研究・比較・定点観測にそのまま使える収集基盤です。
このページの Web-UI で「デモデータ生成」を押すだけ。全8社分のサンプル社説が投入され、ダッシュボードとエクスポートを試せます。
Worker プロキシを設定すると、実際の新聞サイトからデータを取得できます。
GitHub Actions で毎朝自動収集。CLI / marimo でローカル運用も可能です。
JSON / CSV をエクスポートし、分析や可視化に利用します。
| 取得方式 | 対象 | 備考 |
|---|---|---|
| 直接HTTP(静的HTML) | 読売 / 産経 / 北海道 / 東京 | 追加設定なしで動作 |
| Cloudflare Browser Rendering | 朝日 / 毎日 / 日経 / 熊本日日 | JS描画ページ。APIキーが必要(CLI/marimo版) |
下の Web-UI を開き、「デモデータ生成」を押すだけです。全8社分のサンプル社説が投入され、ダッシュボードとエクスポートを試せます。
新聞サイトは他オリジンからの fetch を CORS で拒否するため、Cloudflare Worker を中継させます。
// worker.js — 指定 URL の HTML を返す最小構成(悪用防止のため allowlist 推奨)
const ALLOW = ["asahi.com","mainichi.jp","yomiuri.co.jp","sankei.com",
"hokkaido-np.co.jp","tokyo-np.co.jp","kumanichi.com"];
export default {
async fetch(request) {
const target = new URL(request.url).searchParams.get("url");
if (!target || !ALLOW.some(h => target.endsWith(h)))
return new Response("forbidden", { status: 403 });
const res = await fetch(target, { headers: { "User-Agent": "editorial-collector/0.1.2" } });
return new Response(res.body, {
status: res.status,
headers: { "Content-Type": res.headers.get("Content-Type") ?? "text/html",
"Access-Control-Allow-Origin": "*" },
});
},
};
npx wrangler deploy # デプロイ後、https://xxx.workers.dev/?url=... 形式のURLを下の設定欄へ
git clone https://github.com/watanabe3tipapa/editorial-collector
cd editorial-collector && uv sync
uv run editorial-collector collect --all # 収集
uv run editorial-collector report # HTMLレポート出力
uv run marimo run notebook.py # GUI起動
# JS描画対応社(朝日等)は .env に認証情報を設定
cp .env.example .env # CF_ACCOUNT_ID / CF_API_TOKEN を記入
| 掲載日 | 新聞社 | 状態 | タイトル |
|---|
収集済みタイトルからキーワードを抽出して SVG 描画します(辞書不要の簡易トークナイザ)。