Roam Random
Roam Research のバレットをランダムに選ぶブックマークレット
Roam Research 用に作ったブックマークレットです。名前は Roam Random —— 今開いているページに表示されているバレットのどれかを、ランダムにひとつ選んでスクロールし、クリックして開きます。対象のブロックがひとつもなければ「ブロックが見つかりません」と表示して終わります。
積みタスクのどれから手をつけるか迷うとき、書くネタやアイデアを選ぶときなど、「悩むよりやってみる」モードへ切り替えるきっかけに使っています。ランダムで選んだら、ひとまず少しでもいいから触ってみる——それがポイントです。
使い方
- 下のコードをブックマークレットとして登録する(ブックマークの URL に貼る、またはブックマークバーへドラッグ)
- Roam Research でバレットがたくさんあるページを開く
- ブックマークレットを実行する
コード
ブックマークレット用(1行・そのまま登録用):
javascript:(function(){const blocks=Array.from(document.querySelectorAll('.roam-article .rm-block-main')).filter(el=>{return el.offsetParent!==null&&el.querySelector('.rm-bullet');});if(blocks.length===0){alert('ブロックが見つかりません');return;}const randomBlock=blocks[Math.floor(Math.random()*blocks.length)];const bullet=randomBlock.querySelector('.rm-bullet');if(bullet){bullet.scrollIntoView({behavior:"smooth",block:"center"});setTimeout(()=>bullet.click(),200);}})();
読みやすくしたソース:
javascript:(function(){
const blocks = Array.from(
document.querySelectorAll('.roam-article .rm-block-main')
).filter(el => {
return el.offsetParent !== null && el.querySelector('.rm-bullet');
});
if (blocks.length === 0) {
alert('ブロックが見つかりません');
return;
}
const randomBlock = blocks[Math.floor(Math.random() * blocks.length)];
const bullet = randomBlock.querySelector('.rm-bullet');
if (bullet) {
bullet.scrollIntoView({ behavior: 'smooth', block: 'center' });
setTimeout(() => bullet.click(), 200);
}
})();
何をしているか
- 表示中の Roam ページから
.rm-block-main要素を集める - 画面に表示されていて、バレット(
.rm-bullet)を持つブロックだけに絞る - その中からひとつをランダムに選ぶ
- 選んだバレットまでスムーズにスクロールし、少し待ってからクリックして開く
メモ
- Roam Research 専用です(
.roam-articleの DOM 構造を前提にしています) - 折りたたまれていて画面に見えていないブロックは対象外です
- バレットをクリックするので、子ブロックがある場合は展開されます
- Dynalist や Workflowy など、似たアウトライナーにも応用できそうですが、未検証です