思考を書き溜めておきたい
何かの拍子にふと思ったことだったり、瞬間的な自分の思考を書き溜めておきたい
でもその度に専用のアプリを開いたり、メモ帳を開くのはめんどくさいし、何よりもともとやっている行動を妨げないようにメモをとりたい
最初はObsidianというメモアプリを使っていたので、Obsidian URIを使って実現していました
RaycastのScript Commandで、入力するとObsidianの特定のノートに1行追加される、という仕組みを作るというものです
その際はこの記事で紹介されているやり方を参考にしました
最初のうちはこれで満足していたのですが、後々スマホでも同じように素早くメモをとりたくなり、それがObsidianだと難しかったです
Obsidianでもできないことはないと思うのですが、無料のiCloud連携を使っているとVaultが大きくなるにつれ顕著に同期の時間が長くなり、かなり使い勝手が悪くなっていたので早々に諦め、Obsidian以外の方法を探し始めました
そうだ、Notion APIがあるじゃないか
ちょうどその頃Notion APIのドキュメントを眺めていたら自分のやりたいことができそうだったので作ってみたところ、かなり自分としては使い心地に満足いくものが出来上がりました
基本的な作りはObsidianを使う場合とほとんど同じで、スマホからはiOSのショートカットを使ってNotion APIを叩くようにしています
これによって
- PCではOption+Bで入力欄が表示され、入力後にエンター押下でNotionに記録される
- スマホでは常時画面に表示されているAssistiveTouchをタップすると入力欄が表示され入力を完了するとNotionに記録される
というUXが実現できました
実装方法の紹介
前提として僕がやりたかったことは以下で、それを最低限実現できるだけの方法になっています
- PC/スマホでどのアプリを開いていても入力欄が起動できメモをかける
- Notionの特定のページに1行ずつ追加されていく
Obsidianだとデイリーノートを使っている人が多いと思いますが、今回は日によってメモを追加するページを変える、という要件には対応していません
それでは本題に戻って、おおまかな流れは以下です
- Notion APIを叩くための設定
- (PC) RaycastのScript Commandを作る
- (スマホ) ショートカットを作る
1. Notion APIを叩くための設定
まずはNotionでPrivate Integrationを作り、APIキーを取得しましょう
これについてはいろんなところでやり方が紹介されているので、詳細は割愛します
Notionではページ側でも、そのIntegrationからのアクセスを許可する必要があります
そのためメモを追加するページを作ったら、設定メニュー → Connections → Add Connection から上記で作ったIntegrationを追加します
また、そのページのURLからページIDを取得しておきましょう
Title-xxx のようになっている、xxxの部分がページIDです
Notion側の設定は以上です
2. (PC) RaycastのScript Commandを作る
まずは以下の内容でbashスクリプトを作り、1の手順で取得して、ページID、APIキーをそれぞれ、page_id
, api_key
にセットします
#!/bin/bash
# Required parameters:
# @raycast.schemaVersion 1
# @raycast.title memo
# @raycast.mode silent
# Optional parameters:
# @raycast.icon 🤖
# @raycast.argument1 { "type": "text", "placeholder": "Placeholder" }
# Documentation:
# @raycast.author zakinomiya
page_id="xxx"
api_key="xxx"
current_time=$(date +"%H:%M")
memo=$1
curl -X PATCH "https://api.notion.com/v1/blocks/${page_id}/children" \
-H "Authorization: Bearer ${api_key}`" \
-H "Content-Type: application/json" \
-H "Notion-Version: 2022-06-28" \
--data "{
\"children\": [
{
\"object\": \"block\",
\"type\": \"bulleted_list_item\",
\"bulleted_list_item\": {
\"rich_text\": [
{
\"type\": \"text\",
]
}
}
]
}"
echo ""
RaycastのScript Commands
という設定グループに、上記のスクリプトが置かれているディレクトリを追加すると自動でコマンドが追加されるはずです
上記はコマンド名がmemo
となっているので、Raycastを開いてmemoと入力するとロボットのアイコンとともにコマンドが表示されると思います
このコマンドを実行すると、入力した文字が上記で作ったページに追加されているのが確認できると思います
PCはこれだけです
あとはコマンドに対して自分が好きなショートカットを割り当てれば一発でコマンドを起動できるようになります
👏👏👏
3. (スマホ) ショートカットを作る
もともとMemoToNotionというショートカットがあったので、それを自分用にアレンジして使っています
以下が今回のショートカットへのリンクです
ここでも先ほどのAPIキーとページIDをそれぞれ置き換えます
https://www.icloud.com/shortcuts/719507166d5d450cb61be9715c474d85
ショートカットを起動すると、入力欄が表示されるので入力し完了を押すとNotionに1行追加されるのが確認できると思います
これでスマホでも一瞬でNotionにメモが保存できるようになりました!
あとはこのショートカットを起動するトリガーを自分好みに設定してみてください
最初は背面のダブルタップにしていたのですが、ケースのせいか感度が悪かったので今はAssistiveTouchにしています
👏👏👏
まとめ
これでPCからでもスマホからでも思考の速度でメモが取れるようになりました
この仕組みを作ってから、スマホでKindleを読んでいるときに気に入った文章をすぐに保存したり、読んでるWebページをすぐに保存したり、感じたことや考えたことをすぐにメモしたりできているのですごく満足しています
みなさんもぜひ