cockscomblog?

cockscomb on hatena blog

macOSのメモからMarkdownを作るショートカット

macOS Montereyから、「メモ」アプリに「クイックメモ」という機能がついた。

インターネットブラウジングをしていて気になったことを書きつけていくのにちょうどよさそうなので、使ってみることにする。ある事柄に関連するリンクをひとつのメモに連ねていって、ちょっとテキストで補足を書いておく。

これをブログで手軽に共有できたら、なおいい。Markdown形式に変換したい。

メモの本文を取得する

メモの内容を取得するには、Apple Script的なやつを使う。ここではJXA (JavaScript for Automation)というので、JavaScriptっぽく書く。選択中のノートの本文を得るには、次のようにする。

const app = Application("Notes");
console.log(app.selection()[0].body());

これでノート本文がHTML形式で取得できる。便利だが、リッチな埋め込み形式にはならないのが玉に瑕で、リンクはURLだけになってしまう。とはいえ最終的には、はてなブログの埋め込み機能を使うのだから、まあいい。

ショートカットでMarkdownにする

macOS Montereyから、macOSにも「ショートカット」が搭載された。

これに先ほどのJXAをのせてしまう。最終的なショートカットは次の通り。

f:id:cockscomb:20211031231251p:plain
ショートカット

先ほどのJXAを関数にして、選択されたメモがない場合のハンドリングも加える。

function run(input, parameters) {
    const app = Application("Notes");
    const selections = app.selection();
    if (selections.length === 0) {
        return undefined;
    }
    return selections[0].body();
}

選択されたメモがない場合は「if文」を使ってショートカットを終わらせる。

HTMLからMarkdownへの変換は、「HTMLからリッチテキストを作成」してから「リッチテキストからマークダウンを作成」によって達成される。間にリッチテキストを挟むが、見出しやリストなどはうまく変換できる。

最後は「結果を表示」しているけど、「クリップボードにコピー」でもよさそう。

ショートカットは共有できるので、共有リンクを記載しておく。

これでやっていく

ということで試しにクイックメモを元にしてブログに書き出した。あっさりしてるけど、まあなんでも公開したらいい。

変換したMarkdownをそのまま公開できるほどではなく、マークアップを整えたりした。この辺がよくなるとさらにいいけど、メモから取り出せるHTMLの側にもっと情報が増えないと難しい。