IFTTT の Webhook を受け取り Notion API を叩く Google Cloud Functions
ツイートを Notion に保存するために開発されました。
ツイートすると IFTTT のトリガーによって Google Cloud Functions にデプロイした API が呼び出され、Notion に新しいページを作成します。ページのタイトルはツイートのテキストになり、その他の情報(ユーザ名、ツイートの URL、作成日時、タイプ)もページに保存されます。
このプロジェクトでは、Notion API を使用して、ツイートの情報を Notion のページとして作成します。そのため、Notion API キーの取得と設定、および Notion のデータベース ID の取得と設定が必要です。
また、データベース内のフィールドを以下のように設定する必要があります。
title
:ページのタイトルとして使用します。text
:ツイートのテキストを保存します。タイプはリッチテキストとします。url
:ツイートの URL を保存します。タイプは URL とします。id
:ツイートの ID を保存します。タイプは Number とします。username
:ユーザー名を保存します。タイプはリッチテキストとします。type
:ツイートのタイプ("ツイート"または"like")を保存します。タイプは Select とします。
このリポジトリでは GitHub Actions を使用して Google Cloud Functions へのデプロイを自動化しています。具体的な設定は.github/workflows/deploy.yml
を参照してください。
デプロイを実施するには以下の準備が必要です。
- Google Cloud のアカウントとプロジェクトが必要です。これは Google Cloud Functions へのデプロイに使用されます。
- 適切な権限を持つサービスアカウントが必要です。このサービスアカウントの認証情報(
GCP_WORKLOAD_IDENTITY_PROVIDER
、GCP_SERVICE_ACCOUNT
)を GitHub Secrets に設定する必要があります。 - Notion API と IFTTT の Webhook からのリクエストの認証に使用される
NOTION_API_KEY
とACCESS_TOKEN
も GitHub Secrets に設定する必要があります。
初回デプロイ後は Google Cloud Functions 側で認証がかかっています。認証を外すには以下を参考に設定してください。
この認証を外したとしても、 ACCESS_TOKEN
を知らない場合は API を叩けないので問題ありません。
前提として、Twitter と連携するため、Pro 以上の IFTTT アカウントが必要です(有料)。
IFTTT で Webhook を設定するには、新しいアプレットを作成し、そのトリガーとして Webhook を選択します。その後、トリガーが発生した際に送信される Webhook の URL を、Google Cloud Functions の URL に設定します。この URL は、Google Cloud Functions をデプロイした後に得られます。
また、Additional Headers に ACCESS_TOKEN
を設定します。これは GitHub Secrets にした ACCESS_TOKEN
です。
詳細な設定内容は以下のキャプチャを参照してください。
これで設定は完了です。
IFTTT で指定したアカウントでツイートすると、その内容が Notion Database に追加されます。
yarn build
環境変数にNOTION_API_KEY
とACCESS_TOKEN
を設定して、下記コマンドを実行します。
yarn dev
Web サーバーが立ち上がります。curl コマンドなどを使用して動作確認できます。
curl -i -X POST \
-H "Authorization:Bearer <ACCESS_TOKEN>" \
-H "Content-Type:application/json" \
-d \
'{
"text": "ツイートの本文です。",
"userName": "shun91",
"linkToTweet": "https://twitter.com/shun91/status/1660249002590478332",
"createdAt": " May 21, 2023 at 08:39PM",
"type": "tweet"
}' \
'http://localhost:8080/iftttToNotion'
yarn test
過去のツイートなどを一括で Notion に保存するためのスクリプトです。
詳細はこちらを確認してください。