Jazzと読書の日々

iPadを筆記具として使う方法を模索します

Obsidian Mobileをブログエディタに改造する

練習中。

アクション

Templaterでアクションを作る計画。 ブログを書くとき必要なものを集めてみました。 ツールバーに登録してみてください。

Google.md

カーソル行を検索するスクリプト

<%*
d = document.getSelection();
s = p = d.toString();
if(!s){
  d.modify("move", "left", "paragraphboundary");
  d.modify("extend", "right", "paragraphboundary");
  s = d.toString();
  d.removeAllRanges();
}
if(s) open("https://google.co.jp/search?q=" + encodeURIComponent(s));
return p;
%>

Obsidianで書いているとき、ふと調べ物がしたくなる。 そんなときホーム画面に戻ってSafariを起動していませんか。 それだと何が調べたかったか忘れてしまいます。

というわけで、Obsidianにまず書いてからボタンをタップ。 カーソルにある文字列をGoogleで調べます。 思いついたらすぐ検索。

単語を選択しているときは、そちらを検索対象にします。 文中に、記憶のあやふやな言葉を使うときかな。 ちゃんと裏を取る。 そういう用い方です。

BlogCard.md

カーソル行のURLアドレスをブログカードに変換します。 YouTubeのときは動画の、Gyazoのときは画像の埋め込みになります。

<%*
d = document.getSelection();
d.modify("move", "left", "paragraphboundary");
d.modify("extend", "right", "paragraphboundary");
url = d.toString();
if(/^http/.test(url)) {
  switch(true){
      case /youtube\.com/.test(url):
        id = url.split("v=")[1].split("&")[0];
        s = "<iframe width='350px' height='200px' src=\"http://www.youtube.com/embed/" + id + "\" frameborder=0></iframe>\n";
        break;
      case /gyazo\.com/.test(url):
        s = "<img width='400px' src='" + url + "/raw'>\n";
        break;
      default:
        s = "<iframe src='https://hatenablog.com/embed?url=" + url + "' width='350px' frameborder='0' scrolling='no'></iframe>\n";
  }
  d.deleteFromDocument();
  return s;
}else{
  new Notice("URLアドレスではありません");
}
%>

ブログを他のブログと繋げてネットワークにする。 リンクだけより、カード形式のほうが要約など追加され情報量が増えます。

場合分けを作れば、他のサイトにも対応可能。

HatenaBlog.md

はてなブログに投稿します。

<%*
p = tp.file.content.split("\n");
a = p.shift();
b = p.join("\n"); 
url = "hatenablog:///new?title=" + encodeURIComponent(a) + "&body=" + encodeURIComponent(b);
open(url);
%>

お使いのブログに合わせてURLスキームを書き換えてください。

Scrapboxだったら下記のようになります。 USERのところはそれぞれのユーザ名です。

url = "https://scrapbox.io/USER/" + encodeURIComponent(a) + "?body=" + encodeURIComponent(b);

カーソル行取得について

d = app.workspace.activeLeaf.view.editor;
p = d.getCursor().line;
s = d.getLine(p);

これでもカーソル行は取得できるけれど、なぜかObsidianが固まるときがある。モバイルだからかなあ。

まとめ

Obsidianがブログエディタに変身。

Obsidianでアプリ紹介カードを作るスクリプト - Jazzと読書の日々