page icon

RSSを取得してNotionデータベースへ自動保存(前半)

カテゴリDBカテゴリ
作成日
2022/03/05
オススメ度
👍👍👍
ひと言メモ
RSSからNotion!

前書き

Notionは自己管理やスケジュールを組んだり、他者と資料を共有したりと
とても便利で、使い始めて1年ぐらい経ちました。
定期的なアップデートや大型の資金調達もされたなどのニュースから注目されるであろうし
今年もかなりお世話になっていくだろうなと感じてます。
NotionAPIが試験的に導入されたのは去年の大きな出来事で
snsでも喜びと期待の声が多く上がっていたと覚えています。
いろんな記事を参考にさせてもらっていますので
自分でもこんなことができるようになりましたよ、という報告でつらつら書いていこうと筆を取りました。
至ってシンプルな記事ですのでかるーく読み流して、ちょっとでも生活のアクセントになれば嬉しいです。

記事のきっかけ

豊富なコンテンツを全部Noitonで一括管理したいと思っています。
GoogleSpreadsheetやpdf,imageはデフォルトで埋め込みができ
apption.coautomate.copipedreamなどを使えば活用の幅は広がります。
RSSで情報発信をしている企業もまだ多いので上記のオートメーションツールを使って
Notionへ情報を溜めていくことはできそうです。
方法は色々あるんですが、今回は以下のように進めることにしました。
GCPでの定期実行まで書くとボリューム多すぎるので、前半と後半に分けて書きます。

記事の内容

開発環境

できるだけ丁寧にわかりやすく書こうと思いますので長文になりますがご了承ください。
では、参りましょう。

RSS情報をpythonで取得

すでにローカル環境にpython3がインストールされている前提で進めます。 インストールでお困りの方はググるとたくさん記事があります。

0. 空のフォルダを用意して、それをvscodeで立ち上げます。

1.python 仮想環境と必要なモジュールを用意

ターミナルを開きpython3 -m venv venv で仮想環境を準備し、source venv/bin/activate.fish で仮想環境に入ります。 筆者の普段使いがfishなので、bashやzshの場合はsource venv/vin/activateにしてください。
main.pyファイルを作成
pip install feedparserでrssをつかむモジュールとpip install requests でnotionへ通信するためのモジュールをインストールpip freeze > requirements.txt でrequirements.txtを書き出します

2.RSS取得コード実装

今回はこちらのページの国際カテゴリのRSSを取得します
他のRSSを利用したい場合はurlを変更し、要素を確認して行ってください。
Plain Text
要素の1つ目だけわかれば良いので、今回はbreakを入れました。
printで出力されたのはこちらです。
要素のtitleとリンクと日付をNotionへ飛ばすことにします。
Notionへ渡すための次のコードです。
Plain Text
ここでしていることはrssで取得したpublishedを日付型に変更しました
また、addDontentはnotionデータベースに追加する関数ですがこれから作成します
ここまでがrssを取得するまでのコードです

NotionAPIを通してnotionへ保存

3.NotionAPIを作成

NotionのAPIを使うためには設定が必要ですのでそれを行なっていきます。
Notionは無料で十分使えるコンテンツなので私も周りの人におすすめしています。
NotionAPIはこちらから登録をします。
初回登録についてはややこしい点など何もないので割愛します。
登録後は右上に出ているでしょうMy integrationsをクリックし作成開始です。
自分の場合はすでにAPIをいくつか作成しているのですが初回であるとまだ何もない状態のはずです。
+ New intergrationをクリックします。
好きな名前を入れて、アイコンを変えたいのであればimageをアップロードしてください。
他はデフォルト設定のままで、下までスクロールし、submitをクリックしましょう。
submit後の画面でアクセストークンが発行されます。
後ほど使いますので、クリップボードなどに保存しておきましょう。
余談: clipyはとても便利です。スニペット登録もできるので重宝しています。

4.Notionページを作成

rssをペーストするためのNotionページを作成します
自分のNotionの好きなページで/dataと打ち、Table database - Full pageを選択
タイトルは好きにつけてもらって良いです
tableのheadはrss側に合わせます
title date link の3つの要素です
title は text date は date link は url
それぞれ設定します。
Numberやselectもできます。その際はこちらの対応表を確認してカスタマイズしてください。
右上の・・・をクリックし、copy linkをクリックします。
または、webブラウザでNotionを開いている場合はそのurlをコピー、もしくは右上のshareを押してcopy linkをクリック。
すると下のようにとれると思います。
赤線を引いた英数字の部分がデータベースIDとなりますのでここをコピーしておきます。

5.作成したAPIとnotionページを連携しましょう

notionページのshareからinviteをクリックし、作成したAPIを追加します
これでNotionの設定は終わりです。

6.Notionへpushするコード

下のコードへこれまでに獲得したアクセストークンデータベースIDを貼り付けます。
引数をリテラルに書いたテスト関数を実行させてみます
Plain Text
addContent('テスト関数です', '2022-01-21 17:12', 'https:www')の結果
Notionへ投稿されることが確認できました。
少し修正を加えて下記が今回実装するコード全文です。
例のごとくアクセストークンとデータベースIDの貼り付けは各自でお願いします。
Plain Text
実行結果はざっと60行ぐらいのデータが追加されました。
ここまでで、かなり活用の幅が広がりそうではないでしょうか。
これは単純なコードですが色々カスタマイズを見込めて楽しいと思います。
定期実行の仕方になりますが、ちょっと長くなりすぎたのでここで終了とします。
最後までお付き合いありがとうございました。

pythonコードをGCPで定期実行

...to be continued

Discussion