Create a task or Save X Workflow : hkob の雑記録 (152)

はじめに

hkob の雑記録の第152回目は、Arc で表示しているページを Task として登録するか X のポストを記録する Create a task or Save X Workflow を解説します。

これまでの Create a task or Save X Workflow

Create a task or Save X Workflow は Arc で開いているページを Task として登録するか X のポストを記録するものです。

Create a task or Save X Workflow

最初の Hotkey は特に余計なことはしていません。

Hotkey trigger

次の Run Script では AppleScript で Arc のアクティブウィンドウの URL とタイトルを取得します。二つを値を次のアクションに渡したいので、URL やタイトルに含まれないであろう半角の円マークで連結しています。

Arc からタイトルと URL を取得

スクリプトは以下のようになっています。

tell application "Arc"
    set currentURL to URL of active tab of window 1
    set currentTitle to title of active tab of window 1end tellreturn {currentURL, "¥", currentTitle} as string

二つ目の Run Script は Ruby スクリプトです。まず、受け取った文字列から URL とタイトルを分離します。URL が x.com か bsky.app であれば X の記録データベースに保存します。この場合、本文に Embed block でポストの埋め込みも作成しています。それ以外の場合には「いつかやる」タスクを作成します。どちらも元のページをアクセスできるように URL が保存されています。

Ruby script

Workflow の修正

こちらも大きな修正はなく、Replace action を削除するために、上のコードの URL の置換処理だけを変更しています。

require "notion_ruby_mapping"
include NotionRubyMapping

NotionRubyMapping.configure { |c| c.token = ENV["NOTION_API_KEY"] }
url, title = ARGV.first.split "¥"
if url =~ /https:\/\/(twitter.com|x.com|bsky.app)/
  title =~ /^[^:]+: (.{,80}).*/
  db = Database.find ENV["X_DB_ID"]
  page = db.create_child_page do |p, pp|
    pp["Name"].text_objects << $1
    pp["URL"].url = url
    pp["Tag"].multi_select = ["Notion"]
  end
  page.append_block_children(EmbedBlock.new(url))
  print page["url"].gsub("https://", "notion://")
else
  db = Database.find ENV["TASK_DB_ID"]
  page = db.create_child_page do |p, pp|
    pp["Task name"].text_objects << title
    pp["Link"].url = url
    pp["Assignee"].people = ENV["USER_ID"]

  end
  print page["url"].gsub("https://", "notion://")
end

この Workflow は最終的に以下のようになりました。

改修後の Workflow

おわりに

毎週の Notion 座談会のために、X のポストなどを保存しています。このため、このワークフローは非常に便利に使っています。

hkob.notion.site