Scrapboxページの読み上げ
ScrapboxのAPIでは、ページのテキストデータが取得できる
wget でテキストデータを取ってきて、macOS のsayコマンドに送ると、読み上げができる
(誰でも思いつきそうなことだけど)
$ wget -q -O - https://scrapbox.io/api/pages/villagepump/相手に勢いがあると、協力してやろうかなと考える心理/text | say
たぶんだけど、WindowsやLinuxでも同様なことはできるだろうと思う
awk を使って指定した行を読み上げさせる
ここでは 4行目から7行目まで
$ wget -q -O - https://scrapbox.io/api/pages/villagepump/井戸端/text | awk '4<=NR && NR<=7' | say
10行目から17行目まで
$ wget -q -O - https://scrapbox.io/api/pages/villagepump/井戸端/text | awk '10<=NR && NR<=17' | say
豆知識をひとつだけ選んで読み上げる
$ wget -q -O - https://scrapbox.io/api/pages/villagepump/豆知識/text | grep '^ ' | grep -v '\t' | grep -v ' ' | shuf -n1 | tr -d '\\\\ ' | say
やってみて気づいたこと
読み上げに対応したテキストを工夫する必要がある
書き言葉と話し言葉の違い
読み上げ用にテキスト整形をするスクリプトが必要かも
受け取ったリストからランダムにひとつ選ぶコマンド
/scrapboxlab/api/pages/:projectname/:pagetitle/text
/forum-jp/Scrapboxの音声読み上げができるとうれしい
ページ全部を読ませる
code:script.js
function readall() {
function say(content) {
let msg = new SpeechSynthesisUtterance();
msg.text = content
msg.lang = 'ja-JP';
window.speechSynthesis.speak(msg);
}
scrapbox.Page.lines.map(function(line) { say(line.text) })
}
scrapbox.PageMenu.addItem({
title: 'Say',
onClick: () => readall()
})
って書いたけどもうあったdnin.icon
/yutaro/speech
選択したやつを読ませる
書き込みがあるとしゃべるUserScript もある