ブックマークレット集。
javascript:((e,t)=>{(t=e.createElement("textarea")).textContent=`<a href="${e.URL.replace(/&/gu,"&")}">${e.title.replace(/(\[|\]|<|>)/gu," ").replace(/ +/gu," ").trim()}</a>`,e.body.appendChild(t),t.select(),e.execCommand("copy"),e.body.removeChild(t)})(document);
閲覧中のページのタイトルと URL を HTML リンク形式にしてクリップボードにコピーする。
javascript:((d,s)=>{s=d.createElement('script');s.src='https://neos21.github.io/bookmarklets/dist/copy-current-page-title-and-url-for-html.js';d.body.appendChild(s)})(document);
javascript:((e,t)=>{(t=e.createElement("textarea")).textContent=`- [${e.title.replace(/(\[|\])/gu," ").replace(/ +/gu," ").trim()}](${e.URL.replace(/&/gu,"&")})`,e.body.appendChild(t),t.select(),e.execCommand("copy"),e.body.removeChild(t)})(document);
閲覧中のページのタイトルと URL を Markdown リンク形式にしてクリップボードにコピーする。
javascript:((d,s)=>{s=d.createElement('script');s.src='https://neos21.github.io/bookmarklets/dist/copy-current-page-title-and-url-for-markdown.js';d.body.appendChild(s)})(document);
javascript:((e,t)=>{(t=e.createElement("textarea")).textContent=e.title+" "+e.URL,e.body.appendChild(t),t.select(),e.execCommand("copy"),e.body.removeChild(t)})(document);
閲覧中のページのタイトルと URL をクリップボードにコピーする。
javascript:((d,s)=>{s=d.createElement('script');s.src='https://neos21.github.io/bookmarklets/dist/copy-current-page-title-and-url.js';d.body.appendChild(s)})(document);
javascript:((e,t,r,n,o)=>{r=e(".author"),n=e(".mr-2>a"),r&&n&&(t.open("GET","https://api.github.com/repos/"+r+"/"+n,!1),t.send(),o=JSON.parse(t.response).size,alert(o+"KB\n"+Math.floor(o/1e3)+"MB"))})((e,t)=>(t=document.querySelector(e))?t.innerText:null,new XMLHttpRequest);
GitHub ページを開いている時に実行すると、そのリポジトリのファイルサイズを GitHub API から取得する。
javascript:((d,s)=>{s=d.createElement('script');s.src='https://neos21.github.io/bookmarklets/dist/get-github-repo-size.js';d.body.appendChild(s)})(document);
javascript:((t,c)=>{[].forEach.call(document.querySelectorAll("script"),r=>{t=r.innerHTML.match(/wgArticleId.*?(\d+)/u),c=c||(t?t[1]:"")}),c?prompt("URL","https://ja.wikipedia.org/?curid="+c):alert("探索失敗")})();
Wikipedia のページ ID を取得して短縮 URL を取得する。
javascript:((d,s)=>{s=d.createElement('script');s.src='https://neos21.github.io/bookmarklets/dist/get-wikipedia-short-url.js';d.body.appendChild(s)})(document);
javascript:((e,r,t)=>{setInterval(()=>{(r=e.querySelector('svg[aria-label="削除する"]'))&&r.parentNode.click(),setTimeout(()=>{(t=e.querySelector("a.coreSpriteRightPaginationArrow"))&&t.click()},250)},3e3)})(document);
Instagram の「保存済み」ページで1つ目の投稿を開いたら本ブックマークを起動する。すると「保存」を解除していく。中止する場合はページ更新などで対処する。
javascript:((d,s)=>{s=d.createElement('script');s.src='https://neos21.github.io/bookmarklets/dist/instagram-saved-bulk-remove.js';d.body.appendChild(s)})(document);
javascript:((t,r,a,n)=>{a=setInterval(()=>{t.querySelectorAll("a").forEach(e=>{e.href.match(/(?!.*liked_by).*(?=\/p\/)/)&&r.add("igsv "+e.href+"\n")})},200),t.addEventListener("keydown",e=>{e.key.includes("Esc")&&(clearInterval(a),(n=t.createElement("textarea")).textContent=Array.from(r).join(""),t.body.appendChild(n),n.select(),t.execCommand("copy"),t.body.removeChild(n),alert(r.size+"件"))})})(document,new Set);
Instagram の「保存済み」ページで本ブックマークを起動し、全てスクロールしたら Esc キーを押下する。するとクリップボードに投稿 URL がコピーされる。
javascript:((d,s)=>{s=d.createElement('script');s.src='https://neos21.github.io/bookmarklets/dist/instagram-saved-get-urls.js';d.body.appendChild(s)})(document);
javascript:((e,l,c,o,i)=>{(o=e.querySelector("#overlay-close"))&&o.click(),(i=e.querySelector(".matrix-item"))&&i.click(),e[l]("label[for]").forEach(e=>{/((い|え|が|し|て|に|は|も|ら)ない)|いいえ|正社員|IT|東京|賃貸|既婚/u.test(e.innerText)?(console.log("クリック",e.innerText),e.click(),c=!0):console.log("マッチせず",e.innerText)}),c?e[l]('#finishButton, [value*="次へ"], [value*="送"]').forEach(e=>{e.click()}):(e[l]('[value*="回答をやめる"]').length&&e[l]('[value*="次へ"]').forEach(e=>{e.click()}),e[l]("a").forEach(e=>{e.innerText.includes("myページへ戻る")&&e.click()}),e[l]("label").length||e[l]('#finishButton, [value*="次へ"]').forEach(e=>{e.click()}),e[l]('[value*="閉じる"]').forEach(e=>{e.click()}))})(document,"querySelectorAll",!1);
マクロミル形式のアンケートサイトに自動回答する。
javascript:((d,s)=>{s=d.createElement('script');s.src='https://neos21.github.io/bookmarklets/dist/macromill-helper.js';d.body.appendChild(s)})(document);
javascript:(e=>{e=confirm("OK:Archive.org\nCancel:GoogleCache")?"web.archive.org/web/*/":"webcache.googleusercontent.com/search?q=cache:",open("http://"+e+location.href,"")})();
閲覧中のページの Archive.org か Google キャッシュを開く。
javascript:((d,s)=>{s=d.createElement('script');s.src='https://neos21.github.io/bookmarklets/dist/open-archive-org-or-google-cache.js';d.body.appendChild(s)})(document);
javascript:open("http://web.archive.org/web/*/"+location.href,"");
閲覧中のページの Archive.org を開く。
javascript:((d,s)=>{s=d.createElement('script');s.src='https://neos21.github.io/bookmarklets/dist/open-archive-org.js';d.body.appendChild(s)})(document);
javascript:((u,t)=>{(u=location.href.replace(/^https?:\/\//u,"").replace(/^www\./u,"")).match(/^github\.com/u)?t=(u+"/").replace(/^github\.com\/(.*?)\//u,"$1.github.io/").replace(/^(.*?)\.github\.io\/(.*?)\/.*/u,"$1.github.io/$2").replace(/\/(.*?)\.github\.io$/u,""):u.match(/^(.*?)\.github\.io/u)&&(t=u.replace(/^(.*)\.github\.io/u,"github.com/$1").replace(/^github\.com\/(.*?)\/(.*?)\/.*/u,"github.com/$1/$2").replace(/^github\.com\/(.*?)\/(.*?)\.(html|css|js)$/u,"github.com/$1")),t?open("https://"+t.replace(/\/$/u,""),""):alert("Invalid URL")})();
GitHub リポジトリのページを開いていたら GitHub Pages に、GitHub Pages を開いていたら GitHub リポジトリのページを開く。
javascript:((d,s)=>{s=d.createElement('script');s.src='https://neos21.github.io/bookmarklets/dist/open-between-gh-and-ghp.js';d.body.appendChild(s)})(document);
javascript:open("http://webcache.googleusercontent.com/search?q=cache:"+location.href,"");
閲覧中のページの Google キャッシュを開く。
javascript:((d,s)=>{s=d.createElement('script');s.src='https://neos21.github.io/bookmarklets/dist/open-google-cache.js';d.body.appendChild(s)})(document);
javascript:open("https://gyo.tc/"+location.href,"");
閲覧中のページのウェブ魚拓を開く。
javascript:((d,s)=>{s=d.createElement('script');s.src='https://neos21.github.io/bookmarklets/dist/open-gyo-tc.js';d.body.appendChild(s)})(document);
javascript:(t=>{t.href="http://blog.hatena.ne.jp/hatenasupport/"+t.host+"/subscribe"})(location);
現在見ているはてなブログの「読者になる」ページを開く。対象ページがはてなブログ製かどうかはチェックしていない。
javascript:((d,s)=>{s=d.createElement('script');s.src='https://neos21.github.io/bookmarklets/dist/open-hatena-blog-subscribe-page.js';d.body.appendChild(s)})(document);
javascript:(e=>{e.host.includes("youtube")&&(e.href=e.href.replace("youtube","youtubepp"))})(location);
現在見ている YouTube 動画を y2mate.com でダウンロードする。
javascript:((d,s)=>{s=d.createElement('script');s.src='https://neos21.github.io/bookmarklets/dist/open-youtube-download-y2mate.js';d.body.appendChild(s)})(document);
javascript:(e=>{e.host.includes("youtube")&&(e.href=e.href.replace("youtube","youtuberepeat"))})(location);
現在見ている YouTube 動画を listenonrepeat.com で開きループ再生する。
javascript:((d,s)=>{s=d.createElement('script');s.src='https://neos21.github.io/bookmarklets/dist/open-youtube-listen-on-repeat.js';d.body.appendChild(s)})(document);
javascript:((e,a,c)=>{e[a]("[type=radio][name],[type=checkbox][name]").forEach(e=>{void 0===c[e.name]&&(c[e.name]=[]),c[e.name].push(e)}),Object.keys(c).forEach(e=>{c[e][Math.floor(Math.random()*c[e].length)].click()}),e[a]('#finishButton,[value*="次へ"],[value*="送"]').forEach(e=>{e.click()})})(document,"querySelectorAll",{});
ラジオボタン input[type="radio"]
・チェックボックス input[type="checkbox"]
を name
属性ごとに1つランダムにクリックする。
javascript:((d,s)=>{s=d.createElement('script');s.src='https://neos21.github.io/bookmarklets/dist/random-check-inputs.js';d.body.appendChild(s)})(document);
javascript:((h,n,t,c,i,p,r,d,e,o,s,u,g,m,b,f,x,M)=>{s=(o=t=>(t=n.createElement("i"),n.body.appendChild(t),t))(),u=o(),n[t]("touchstart",t=>{r=!0,s[i].cssText=e+"border:1px solid rgba(0,0,255,.2);background:rgba(99,255,255,.2)",u[i].cssText=e,g=t.touches[0].pageX,m=t.touches[0].pageY,b=h.scrollX,f=h.scrollY}),n[t]("touchmove",(t,e,o)=>{r&&(d=!0,x=t.touches[0].pageX,M=t.touches[0].pageY,e=x-g,s[i].left=(e<0?g+e:g)+p,o=M-m,s[i].top=(o<0?m+o:m)+p,s[i].width=Math.abs(e)+p,s[i].height=Math.abs(o)+p)}),n[t]("touchend",(t,e,o,s,a,l)=>{if(r=!1,d)for(d=!1,e=[],s=Math.min(m,M);s<Math.max(m,M);s+=9)for(h.scrollTo(b,f),o=Math.min(g,x);o<Math.max(g,x);o+=9)u[i].top=s+p,u[i].left=o+p,a=u[c](),h.scrollTo(a.left,a.top),a=u[c](),(l=n.elementFromPoint(a.left,a.top))&&!e.includes(l)&&(l.click(),e.push(l))})})(window,document,"addEventListener","getBoundingClientRect","style","px",!1,!1,"position:absolute;top:0;left:0;width:1px;height:1px;pointer-events:none;");
タップとドラッグで選択した範囲にある要素をクリックする。touchstart
・touchmove
・touchend
を監視するのでスマホなどタッチデバイス用。チェックボックスなどを一括チェックする時に。
javascript:((d,s)=>{s=d.createElement('script');s.src='https://neos21.github.io/bookmarklets/dist/select-range-touch.js';d.body.appendChild(s)})(document);
javascript:((i,d,e,r,h,c,g,m,t,o,a,u,b,f,x,M)=>{a=(o=e=>(e=d.createElement("i"),d.body.appendChild(e),e))(),u=o(),d[e]("mousedown",e=>{g=!0,a[h].cssText=t+"border:1px solid rgba(0,0,255,.2);background:rgba(99,255,255,.2)",u[h].cssText=t,b=e.pageX,f=e.pageY,x=i.scrollX,M=i.scrollY}),d[e]("mousemove",(e,t,o)=>{g&&(m=!0,t=e.pageX-b,a[h].left=(t<0?b+t:b)+c,o=e.pageY-f,a[h].top=(o<0?f+o:f)+c,a[h].width=Math.abs(t)+c,a[h].height=Math.abs(o)+c)}),d[e]("mouseup",(e,t,o,a,l,n,p,s)=>{if(g=!1,m)for(m=!1,t=e.pageX,o=e.pageY,a=[],n=Math.min(f,o);n<Math.max(f,o);n+=9)for(i.scrollTo(x,M),l=Math.min(b,t);l<Math.max(b,t);l+=9)u[h].top=n+c,u[h].left=l+c,p=u[r](),i.scrollTo(p.left,p.top),p=u[r](),(s=d.elementFromPoint(p.left,p.top))&&!a.includes(s)&&(s.click(),a.push(s))})})(window,document,"addEventListener","getBoundingClientRect","style","px",!1,!1,"position:absolute;top:0;left:0;width:1px;height:1px;pointer-events:none;");
ドラッグで選択した範囲にある要素をクリックする。mousedown
・mousemove
・mouseup
を監視するので PC 用。チェックボックスなどを一括チェックする時に。
javascript:((d,s)=>{s=d.createElement('script');s.src='https://neos21.github.io/bookmarklets/dist/select-range.js';d.body.appendChild(s)})(document);
アンケートサイト自動回答ブックマークレット。以下のように個人情報と設定項目を指定し、このブックマークレットを読み込んで使う。
javascript:((d,s,e)=>{ e=()=>{ N21SH({ cityName:'東京', districtName:'足立', age:25, ageRange:20, birthYear:1993, birthMonth:2, birthDate:24, gender:'女', marriage:'未婚', jobRegExp:'正社|社員' },{ loop:5 }) }; s=d.createElement('script'); s.onload=e; s.src='https://neos21.github.io/bookmarklets/dist/survey-helpers.js'; d.body.appendChild(s) })(document);
1行にすると以下のようになる。
javascript:((d,s,e)=>{e=()=>{N21SH({cityName:'東京',districtName:'足立',age:25,ageRange:20,birthYear:1993,birthMonth:2,birthDate:24,gender:'女',marriage:'未婚',jobRegExp:'正社|社員'},{loop:5})};s=d.createElement('script');s.onload=e;s.src='https://neos21.github.io/bookmarklets/dist/survey-helpers.js';d.body.appendChild(s)})(document);
javascript:((o,r,n,t)=>{t=o[r]("ytd-popup-container"),o.body.insertAdjacentHTML("beforeend","<input type=checkbox id=z accesskey=z style=position:absolute;top:0;right:0;z-index:9999>"),new MutationObserver(e=>{1<t[r+"All"]("ytd-menu-service-item-renderer").length&&setTimeout(e=>t[r]("tp-yt-iron-dropdown[focused]")?.[r+"All"]("yt-formatted-string").forEach(t=>t.textContent!=(o[r]("#z").checked?"チャンネルをおすすめに表示しない":"興味なし")||n||(n=!0,setTimeout(e=>n&&(t.parentNode.parentNode.click(),n=!1),5))),5)}).observe(t,{attributes:!0,subtree:!0})})(document,"querySelector",!1);
YouTube トップ画面で動画のサムネイル右下に出る「…」アイコンをクリックすると自動的に「興味なし」か「チャンネルをおすすめに表示しない」をクリックする。
画面右上に登場するチェックボックスを付けると「チャンネルをおすすめに表示しない」を選択するようになる。
javascript:((d,s)=>{s=d.createElement('script');s.src='https://neos21.github.io/bookmarklets/dist/youtube-auto-click-not-interested-or-dont-recommend-channel.js';d.body.appendChild(s)})(document);
javascript:(()=>{let r=!1,t=document.querySelector("ytd-popup-container");new MutationObserver(e=>{1<t.querySelectorAll("ytd-menu-service-item-renderer").length&&setTimeout(e=>t.querySelector("tp-yt-iron-dropdown[focused]")?.querySelectorAll("yt-formatted-string").forEach(t=>{"興味なし"!=t.textContent||r||(r=!0,setTimeout(e=>{r&&(t.parentNode.parentNode.click(),r=!1)},5))}),5)}).observe(t,{attributes:!0,subtree:!0})})();
YouTube トップ画面で動画のサムネイル右下に出る「…」アイコンをクリックすると自動的に「興味なし」をクリックする。
javascript:((d,s)=>{s=d.createElement('script');s.src='https://neos21.github.io/bookmarklets/dist/youtube-auto-click-not-interested.js';d.body.appendChild(s)})(document);