作ったもの
clip-to-notionというCLIで、指定したURLのタイトルやメタデータを取得し、Notionのデータベースに保存することができます。
GitHubリポジトリはこちら
使い方の例
インストール:
cargo install clip-to-notion
設定コマンドでNotion APIキーやデータベースIDを登録(初回のみ):
ctn init
URLをNotionに保存:
ctn run https://example.com --tags foo,bar
なぜ作ったか
- 読んだ記事と、その感想をメモしておきたい
- 以前読んだ記事を振り返りやすくしたい
- あとで読む記事を保存しておきたい
- これらをブラウザを開かなくても実行できるようにしたい
- CLIなら後述のRaycast Script Commandsから手軽に実行できる
できること
- URLを渡すと、TitleとかDescriptionを良い感じに取ってきてNotion データベースに保存できる
- 保存対象に合わせたフォーマットのNotion データベースを作れる
どのように使っているか
clip-to-notion (ctn) を Raycast Script Commands 経由で呼び出しています。
Raycast Script Commands
ctn
コマンドでは、引数にURLを渡す必要があるが、 URLは事前にクリップボードにコピーされていることを前提として、ここでは pbpaste
で取得します。
筆者のスクリプト
#!/usr/bin/env bash
# Required parameters:
# @raycast.schemaVersion 1
# @raycast.title Clip to Notion
# @raycast.mode silent
# Optional parameters:
# @raycast.icon 🔖
# @raycast.argument1 { "type": "text", "placeholder": "tag1,tag2", "optional": true }
# @raycast.packageName Clip to Notion
# Documentation:
# @raycast.author tetzng
# @raycast.authorURL https://raycast.com/tetzng
export PATH="$HOME/.cargo/bin:$PATH"
url="$(pbpaste)"
# URL以外の文字列のときはctnコマンドが呼ばれないようにしている
if [[ -z "$url" ]]; then
echo "Error: No URL provided and clipboard is empty."
exit 1
elif ! [[ "$url" =~ ^https?:// ]]; then
echo "Error: Invalid URL format."
exit 1
fi
if [ -n "$1" ]; then
# タグの表記ゆれを減らす(大文字を小文字に変換、スペースはハイフンに置き換え)
tags=$(echo "$1" | tr '[:upper:]' '[:lower:]' | tr ' ' '-')
ctn run "$url" --tags "$tags" | jq -r '.properties.Name.title[0].plain_text as $name | "\($name)"'
else
ctn run "$url" | jq -r '.properties.Name.title[0].plain_text as $name | "\($name)"'
fi
実際の手順
記事を読むのは、主にReeder Classicで、ブラウザ(Arc)からもたまに開くという感じで、だいたい下記のような手順です。おそらく他のアプリを使っていても、近しいことが実現できると思います。
- 気になる記事を見つけたら、記事のURLをコピー
- Arc Browserでは
Command + Shift + C
で現在のページのURLをコピーできる - Reeder Classicでは、Actions and Sharingの設定からCopy Linkにショートカットキーを割り当てられる。筆者は
y
キーに設定して使用している
- Arc Browserでは
- Raycast Scriptをホットキーで呼び出して実行する
- タグ付けオプションを用意したものの、考えるのが手間で、実際にはほとんど使用していない…
実際に使ってみて
- クリップしたことで満足して、実際には後で読まないことも多い
- Notionでメモを取る一方で、実際に読むのはブラウザなので、使い勝手が悪いと感じることもある
- iPhoneから読みたい記事を見つけたときにクリップできない
まとめ
- Rustは書いていて楽しい
- Notionデータベースは沼