【Mac】 リンクタグを生成するシェルスクリプト

macOS 14 Mojave になってからだと思う。safari の機能拡張で使用できないものが出てきた。
 拡張子 safariextz の機能拡張が非推奨となったらしい。

🔗 Apple、Safari v12でsafariextz形式の機能拡張を非推奨へ。2018年12月にはGalleryへの登録も終了。 | AAPL Ch.

今後は Apple によって審査を受けた機能拡張のみが、App Store で配布されるようだ。

わたしはブログ記事を書くときなど、Make Link というサファリ機能拡張でリンクタグを作っていた。

🔗 リンクテキストを生成するSafari Extension – Make Link – CAPH TECH

カスタマイズも柔軟で便利だったのだが、これに替わるものが見つからない。
 そこで拙作ながら、より良いものが出てくるまでの、つなぎのつもりでシェルスクリプトを作ってみた。

⬛️ link.sh

#!/bin/sh
#
# リンクを生成する。リンクを作りたいページの URL をコピーしてから、
# link.sh
# を実行する。
# 結果はクリップボードにコピーされる。
#
# 要 nkf 。「brew install nkf」とかで入手する。
# grep -o については、
#
#「 君は、grep -o オプションを知っているか?(grepでマッチした部分のみ抽出、後方参照の¥0) - それマグで!」
# http://takuya-1st.hatenablog.jp/entry/20121112/1352750670 を参考にした。
#

url=`pbpaste`
if echo "${url}" | grep -sq "^http"; then
	blogtitle=`curl -Ss "${url}" | nkf -w | grep -o "<title>[^<]*</title>" | sed -e 's/<[^>]*>//g'`
	echo '<a href="'$url'" target="_blank">'$blogtitle'</a>' | pbcopy
	echo '生成したリンクをコピーしました。'
else
	echo 'URL をコピーしてください'
	exit 0
fi

コメントに書いたように nkf というコマンドが必要。Homebrew などでインストールが必要。(【Mac】 Homebrew を導入する | 林檎コンピュータ)。
 生成されたタグはクリップボードに送られる。

もうひとつ、cotEditor を使っている場合のスクリプトも作ってみた。

⬛️ alink.js

#!/usr/bin/osascript -l JavaScript

safari = Application('Safari')
safari.includeStandardAdditions = true
win = safari.windows

pagetitle = win[0].currentTab.name()
pageurl = win[0].currentTab.url()
alink = '<a href="' + pageurl + '" target="_blank">' + pagetitle + '</a>'

safari.setTheClipboardTo(alink)

sys = Application('System Events')
sys.keystroke("v", {using:"command down"})

これを cotEditor のスクリプトフォルダに入れて使う。
 Safari で開いているページのタグが生成されてペーストされるはず。
 ただし、このスクリプトはシステム環境設定でなんらかの権限を許可しないと実行できない(実行するとダイヤログが出てくる)。