generated at
scrapbox-local-universe-dl
現在のページからn-hop以内のlinkで繋がっているページたちのjsonをダウンロードするUserScript
とりあえず n=2
cf.

用途
ScrapUniverseで可視化して、局所的にどういうネットワーク構造になっているのか見る
コンテキスト指向ではないタグやリンクを可視化して、コンテキスト的にはどういう構造をしているのか見る
近すぎるページをまとめるとか
やってみたが、ノード間の距離が意味的な距離をあんまり反映していないような気がするyosider
リンク数?を1とか2くらいまで小さくしてノードが増えると構造が見えてきた!

script.js
const title = 'Download linked pages'; scrapbox.PageMenu.addMenu({ title: title, image: 'https://i.gyazo.com/51930110c969662dd514a52974d890c8.png', onClick: async () => await run(), }); async function run() { const project = encodeURIComponent(scrapbox.Project.name); const center = scrapbox.Page.title; const { relatedPages: { links1hop, links2hop } } = await (await fetch(`/api/pages/${project}/${encodeURIComponent(center)}`)).json(); const links = links1hop.concat(links2hop); const jsonExport = {pages: []}; const promises = links.map(async (link) => { const json = await (await fetch(`/api/pages/${project}/${encodeURIComponent(link.title)}`)).json(); jsonExport.pages.push({ title: json.title, lines: json.lines.map(line => line.text .replace(new RegExp(`\\[${center}\\]|#${center}`, 'g'), center) ), }); }); await Promise.all(promises); const blob = new Blob([JSON.stringify(jsonExport)], { type: 'octet/stream' }); //const blob = new Blob([JSON.stringify(jsonExport, null, ' ')], { type: 'octet/stream' }); const url = window.URL.createObjectURL(blob); const a = document.createElement('a'); a.href = url; a.download = `links_from_${scrapbox.Page.title}.json`; a.style.display = 'none'; document.body.appendChild(a); a.click(); window.URL.revokeObjectURL(url); a.parentNode.removeChild(a); window.open('https://daiiz-apps.appspot.com/scrap-graph'); }