1. はじめに
Notion しゅふ会のオフ会にて、ショートカット作成会を行いました。この時に作成したショートカットは、iPhone や iPad のカメラで撮影した書類を、テキストに変換し、その内容を Notion の新規ページに書き出すでした。これについては、テンプレートを配布していますので、興味があったら複製してみてください。
https://www.notion.so/hkob/CameraNotion-b85efeeb19d64732896351e686056fa8?pvs=4
もともとこのショートカットはその前に作った名刺取り込みのためのショートカットを見直したものでした。この時の名刺取り込みでは、カスタム AI ブロックを使ってシンプルテーブルにまとめてもらう形でした。当時は AI プロパティがなかったので、自動化が実現できなかったのです。
昨日、Notion サポーター技術部で様々な検証をしていたところ、同時に覗いていた Yuka’s STUDIO のもくもくでは、ChatGPT で何をやらせたらいいのかの議論が同時並行で行われていました。ここでの議論は、AI はデータ変換に使うのが便利ということだったのですが、ふとこの議論の中で上の名刺管理のことを思い出しました。そのことを技術部で話題に出したところ、作ってみようという話になり、急ぎ実装しました。もし興味があれば、こちらにショートカット付きのテンプレートを用意しましたので、こちらを見ながら記事を読んでください。
https://hkob.notion.site/562028ccfaec4e4194bebe509a8794b1?pvs=4
2. データベースの作成
上のスクリーンショットに示したように Notion AI で各項目を抽出するためのデータベースを一つ用意しています。ショートカットはこちらのデータベースにページを作成します。ページが作成されると数分後にそれぞれの項目のプロパティ値が自動的に更新されます。
例えば、日本語氏名というプロパティには以下のように、AI への指示を設定しています。
フルテキストに書かれた名刺情報から日本語で書かれた名前だけを抽出してください。
名刺のフォーマットは人それぞれであるため、ロバスト性のある Notion AI の利用はかなり有効だと思います。ただし、まれに変な抽出をする場合があるので、各プロパティの「更新」を実施することで何度か調整をする必要はあります。
下の保存用のデータベースは Notion AI 抽出用と同じプロパティを用意していますが、Notion AI は動作しないようにしてあります。うまくデータが確定できたら、ページをそのまま保存用に移動しておきましょう。
3. 名刺データ取得用ショートカットの作成
こちらはほぼ CameraToNotion と同じ内容になりました。最初はいつものインテグレーションキーとデータベース ID の登録です。
次は写真撮影からテキスト抽出までです。最後に Notion ページに貼り付けられるように、撮影した写真はクリップボードにも入れています。Payload 作成時に問題となる改行文字とダブルクオートはエスケープしています。
あとは Notion API を呼び出すだけです。そのために Payload を NotionRubyMapping に教えてもらいます。astro-notion-blog だと横幅が長くなってしまうので、出力の一部を開業してしまっています。
db = Database.find "https://www.notion.so/hkob/099de894a9d34036
print(db.create_child_page(dry_run: true) { |p, pp| pp["タイトル"] << ""; pp["フルテキスト"] << "ABC" })
#!/bin/sh
curl -X POST 'https://api.notion.com/v1/pages' \
-H 'Notion-Version: 2022-06-28' \
-H 'Authorization: Bearer '"$NOTION_API_KEY"'' \
-H 'Content-Type: application/json' \
--data '{"properties":{"フルテキスト":{"type":"rich_text","rich_text":[
{"type":"text","text":{"content":"ABC","link":null},"plain_text":"ABC","href":null}]},
"タイトル":{"type":"title","title":[{"type":"text","text":{"content":"","link":null},
"plain_text":"","href":null}]}},"parent":{"database_id":"099de894a9d3403690258b32a24fde3f"}}'=> nil
この出力を参考に以下のようにショートカットを記述しました。
4. おわりに
深夜のテンションで一気に作り上げてしまいました。これが本当に使い物になるかは、私自身が使い続けるかどうかでわかる気がします。どうなるでしょうかね。