見出し画像

【つくってみた】Notionデータベース×Claude APIでニュースチェックを効率化した話

こんにちは、MOFUです。

以前こんな記事を書いていました。

このときはローカルでPythonプログラムを実行し、その結果があるNotionデータベースを確認して、Claudeに要約してもらう、という流れを踏んでいました。

でも、これだとPCがないとできないのですよね…

今後、旅行の時などにipadだけでニュースチェック&noteのニュースまとめ記事を作成できたらいいな、と思って、今回はGoogle Colab上でまとめが完結するようなコードを書きました。

これを使って作成したニュースまとめ記事はこんな感じ。

感想部分は、出力されたものをベースに、自分で追加・修正をしています。
また、URLはEnterを押して埋め込みにしています。

基本的には、コードの出力をコピペしてちょちょっと修正するだけで良くなったので、とても時短になりました。

Notionデータベース上にあるニュースからどれをピックアップするか選ぶところも含めて、毎日15分くらいで書けています。

概要

コード(GitHub)

前提

  • Chrome拡張機能「Notion Web Clipper」を使って、ニュース記事をNotionデータベースに保存していること

  • 保存されたニュースに対して、以下のプロパティを入力してあること

    • flag:このプログラムで抽出したいニュースに'pick'を選択

    • summary:このプログラムの要約(Notion AIを使うと簡単)

    • tag:ニュースの分類

    • pickup_type:day/week/monthのどれかを選択。ニュースの重要度を表す。(month > week > day)

      • コードでpickup_type = dayとした場合、flagが'pick'で、pickup_typeが'day', 'week', 'month'のニュースがピックアップされる

      • コードでpickup_type = weekとした場合、flagが'pick'で、pickup_typeが'week', 'month'のニュースがピックアップされる

      • コードでpickup_type = monthとした場合、flagが'pick'で、pickup_typeが'month'のニュースがピックアップされる

機能

  • Notionデータベースからフラグ付きニュース記事を取得

  • Claude APIによる以下の生成:

    • 記事要約

    • ブログタイトル

    • ブログの感想

  • note用のフォーマット

  • Markdown形式での出力

Notionデータベースの作成

  • 必須プロパティ

    • flag: ステータス(pick or don't pick)

    • name: 記事タイトル

    • summary: 記事の要約

    • tag: 記事のカテゴリタグ

    • pickup_type: ピックアップの種類(day/week/month)

使用方法

  • flagでピックアップ対象を管理

  • pickup_typeで記事の重要度/掲載期間を分類

  • tagで記事のジャンルを整理

  • summaryに要約を保存(Notion AIの活用を推奨)

セットアップ

  1. Google Colabでノートブックを開く

  2. 以下のシークレットをColabに追加:

    • CLAUDE_API_KEY: Anthropic Claude APIキー

    • NOTION_API_KEY: Notion APIキー

    • PICKUP_DATABASE_KEY: ニュースピックアップ用データベースID

    • DAILY_DATABASE_KEY: デイリーニュース用データベースID

    • WEEKLY_DATABASE_KEY: ウィークリーニュース用データベースID

    • MONTHLY_DATABASE_KEY: マンスリーニュース用データベースID

Colabでのシークレット追加方法

from google.colab import userdata

# シークレットの追加
userdata.set('CLAUDE_API_KEY', 'あなたのAPIキー')
userdata.set('NOTION_API_KEY', 'あなたのAPIキー')
userdata.set('PICKUP_DATABASE_KEY', 'あなたのデータベースID')
# 他のデータベースキーも同様に追加

使用方法

# パラメータ設定
pickup_type = "day"  # 選択肢: "day", "week", "month"
title_date = "YYYY-MM-DD"
title_name = ""  # オプションの接尾辞

# 処理実行
news_contents = main(pickup_type, title_date, title_name)
news_summary, news_title, news_impression = process_all_news(news_contents)
formatted_result = format_news_articles_for_note(news_summary)

# 結果表示
display_news_markdown(
    news_title=news_title,
    news_impression=news_impression,
    formatted_result=formatted_result
)

セキュリティに関する注意

  • APIキーやデータベースIDはバージョン管理にコミットしないでください

  • 機密情報はColabのuserdataを使用して保存してください

  • APIキーは定期的にローテーションし、漏洩に注意してください

おわりに

全部手動でやっていたときに比べたら格段に!楽になりました。
毎日のニュースチェック自体は、日々のルーティンとして軽く済ませて、新しい技術を「試す」「使う」ことに重点を置きたいと思っています。

みなさまの参考になれば嬉しいです!

いいなと思ったら応援しよう!