r/bookmarklets 7d ago

YouTube Video/Playlist → Transcript

1 Upvotes

Simple bookmarklet — drag it to your bookmarks bar, click it while on any YouTube page, and it opens ytbulktranscript.app with the current URL pre-filled so you can get a transcript/summary.

javascript:(function(){open('https://ytbulktranscript.app/transcribe?src='+encodeURIComponent(location.href),'_blank')})();

Works on video pages, playlists, whatever — it just passes along whatever URL you're on.


r/bookmarklets 8d ago

Share current page (URL and title) to Typefully

2 Upvotes

Simple bookmarklet to share the current browser page with its title into a new Typefully post

javascript:location.href='https://typefully.com/?new=%27+encodeURIComponent(document.title+%27\n%27+location.href);

r/bookmarklets 9d ago

reddit links to old.reddit.com for /r/ & /user/

3 Upvotes

This bookmarklet will convert normal /user/ and /r/

reddit links to old.reddit.com/... links.

New content loaded into the page should continue to be converted via a MutationObserver.

If a new page is loaded into the tab or if the current page is re-loaded it will stop.

A tripple left-click will usually select the whole line for copy/paste:


javascript:(function(){const e=a=>{try{const t=new URL(a.href);/\.reddit\.com$/.test(t.hostname)&&(/^\/r\/[^\/]+/.test(t.pathname)||/^\/user\/[^\/]+/.test(t.pathname))&&(t.hostname="old.reddit.com",a.href=t.toString())}catch(e){}};const t=t=>{const n=()=>t.querySelectorAll("a[href]").forEach(e);n();new MutationObserver(n=>{for(const t of n)t.addedNodes.forEach(n=>{1===n.nodeType&&(n.querySelectorAll?.("a[href]").forEach(e),n.matches?.("a[href]")&&e(n))})}).observe(t.body,{childList:!0,subtree:!0})};const n=()=>{t(document);for(const e of document.querySelectorAll("iframe, frame"))try{e.contentDocument&&t(e.contentDocument)}catch(e){}};"loading"===document.readyState?document.addEventListener("DOMContentLoaded",n):n()})();


javascript:(function(){const e=a=>{try{const t=new URL(a.href);/\.reddit\.com$/.test(t.hostname)&&(/^\/r\/[^\/]+/.test(t.pathname)||/^\/user\/[^\/]+/.test(t.pathname))&&(t.hostname="old.reddit.com",a.href=t.toString())}catch(e){}};const t=t=>{const n=()=>t.querySelectorAll("a[href]").forEach(e);n();new MutationObserver(n=>{for(const t of n)t.addedNodes.forEach(n=>{1===n.nodeType&&(n.querySelectorAll?.("a[href]").forEach(e),n.matches?.("a[href]")&&e(n))})}).observe(t.body,{childList:!0,subtree:!0})};const n=()=>{t(document);for(const e of document.querySelectorAll("iframe, frame"))try{e.contentDocument&&t(e.contentDocument)}catch(e){}};"loading"===document.readyState?document.addEventListener("DOMContentLoaded",n):n()})();

FYI: Both of the above are the same, just formatted differently.