SyncTank
← 開発プロダクト一覧

CASE 01 / 自社開発 / テックメディア

PithWire

情報を集め、世界へ届ける。

情報収集から分類・要約・翻訳・配信までをつないだ、自社開発のテックメディアです。日々の情報発信を、AIとプログラムでどこまで支えられるかを検証しています。

PERIOD
2025 —

PithWireのニュース画面
PITHWIRE / TECH MEDIA
6言語への展開
41日の配信サイクル(設計)
6情報ソース系統

01 / CONTEXT

情報を届けるまでの、ひと続きの仕事。

単に文章を生成するだけでなく、情報を集め、選び、届け、止まっていないかを確かめる。メディアとしての一連の処理をつなぐことが、このプロジェクトのテーマです。

02 / HOW IT WORKS

つながる仕組み。

各ステップを選ぶと、役割を確認できます。

01 / 04

海外の複数のテック情報源から記事を集め、重複を整理します。

03 / DESIGN CHOICES

設計で大切にしたこと。

AIに任せる仕事を絞る。

分類・翻訳・要約にAIを使い、収集や重複の整理などはプログラムで処理します。

止まったことに気づける設計。

エラーが出なくても更新が止まる場合を想定し、配信件数や最終更新を監視する仕組みを組み込みました。

技術構成と実装の詳細

開発時の構成・検証記録です。

CRON · TRIGGER CF scheduled ×4/日 + GHA 保険 1 · FETCH · PARALLEL HN / Reddit / TechCrunch / Ars Technica / The Verge / Wired 2 · CLASSIFY · DEDUP Claude Haiku 4.5 — 10 categories + 24h dedup 3 · TRANSLATE · SUMMARIZE (6 lang parallel) Claude Sonnet 4 via CF AI Gateway (CF→CF loop-safe) 4 · BAKE R2 (top / category) + DYNAMIC RENDER KV (article)
Runtime
Cloudflare Workers ES Modules
AI
Claude Sonnet 4 Claude Haiku 4.5 CF AI Gateway
Storage
KV R2 D1
Cron
CF scheduled() GitHub Actions (backup)
Auth / Alert
Google OAuth 2 LINE Messaging GA4 · Search Console

自律化の設計判断: AI に任せるのは判断が要る箇所のみ(分類 10 カテゴリ・翻訳・要約)、それ以外はコード側で決定的処理。記事数を意図的に 200 件上限で bounded に保つ(6 言語並列 rebuild で subrequest budget が破綻する事故から)。サイレント部分失敗(投げなかったが 0 published、last_run 8h stale)を LINE に上げる仕組みは 2033 Journey のインシデントから設計化。モデル ID を wrangler.toml で一元管理し、フォールバックチェーン付き。 Design principles: AI is only asked for judgment (classification, translation, summary); everything else is deterministic. Item count is intentionally bounded at 200 to avoid subrequest-budget blowouts during parallel 6-language rebuilds. Silent partial-failure detection (no exception but 0 published, last_run 8h stale) came from a 2033 Journey incident. Model IDs live in wrangler.toml with a fallback chain.

LET'S BUILD.

こんな仕組みを、あなたの仕事にも。

つくりたいものを相談する ↗