記事をChromeの拡張からクリップして、要約して表示するアプリをつくってみる

記事をクリップするアプリ

作ったWebアプリです。
↓ ↓ ↓

アプリ全体のシステム構成

① Chrome拡張機能(今回は既存のものを使用)

  • ページを見ながら「保存ボタン」を押す
  • 記事の タイトル・URL・タグ・本文・メモ をGASに送る

こんな感じにChromeの拡張にいれました。 Nボタン NewsStocker AI

② Google Apps Script (GAS)

2つの役割を兼ねています。

関数役割
doPostChrome拡張から記事データを受け取って、スプレッドシートに保存
generateSummaryGemini APIで記事本文を要約(3点の箇条書き)
doGetWeb画面からの要求に応じて、記事データをJSONP形式で返す
getArticlesDataスプレッドシートから記事一覧を取り出す共通処理

③ Googleスプレッドシート

  • シート名: ニュース
  • 列構成: A列=日付、B列=タイトル、C列=URL、D列=タグ、E列=AI要約、F列=メモ
  • データの実体(保管庫)

④ Gemini API (gemini-2.5-flash)

  • 記事本文を渡すと、重要ポイント3点を箇条書きで返してくれる
  • APIキーはGASの スクリプトプロパティ に安全に保管

⑤ 閲覧用HTMLページ(london3.jp上)

  • 記事を 2列のカード形式 で表示
  • タグでの絞り込み機能 搭載
  • Google Analytics で閲覧計測
  • フッターに村上の署名

データの流れ(具体例)

保存するとき

  1. 例えば、Yahoo!ニュースで「グーグルが新型AIチップ発表」の記事を見る
  2. Chrome拡張の保存ボタンをポチッ
  3. GASの doPost が発動 → Gemini APIで要約生成 → スプレッドシートに追記
  4. スプレッドシートに1行増える ✅

閲覧するとき

  1. https://london3.jp/app/news/ をブラウザで開く
  2. HTMLが裏でGASの doGet を呼ぶ(JSONP)
  3. GASがスプレッドシートからデータを読んで返す
  4. HTMLがカード形式で表示
  5. タグボタンを押すと絞り込み ✅

実装した機能

記事の保存

  • ✅ Chrome拡張から自動保存
  • ✅ Gemini APIで自動要約(失敗しても記事自体は保存される エラーハンドリング付き)
  • ✅ エラー発生時もスプレッドシートにログを残す

記事の表示

  • ✅ 新しい順に表示
  • ✅ 2列カードレイアウト(スマホは1列に自動切替)
  • ✅ AI要約を全文表示
  • ✅ 投稿日時表示

タグ絞り込み

  • ✅ 全記事からタグを自動抽出(重複なし)
  • ✅ タグボタンで絞り込み
  • ✅ タグごとの件数表示
  • ✅ カード内タグをクリックでも絞り込める
  • ✅ カンマ/読点/スペース区切りどれにも対応

セキュリティ

  • ✅ APIキーはスクリプトプロパティで保管(ソースコードに書かない)
  • ✅ XSS対策(HTMLエスケープ処理)

後から削除機能を追加しました

パスワードを入れて記事を削除できるように追加機能をしました

こんな感じで完成しました。

そんなところで

PVアクセスランキング にほんブログ村

AIclaude

Posted by tomoyamurakami