ClipSaver for TED
Adds a download button to TED talk pages that opens a download launcher for the
Overview
ClipSaver for TED is a userscript that adds a circular download button to TED talk pages. Clicking the button hands the current talk's URL to a web-based download service, opened in a new tab. A companion control panel can turn the injected button on or off, trigger a download, and show progress.
TED talk pages do not offer a built-in way to save a talk for offline use. This script adds a single, always-available download entry point to the talk page so you do not have to copy the URL and manually feed it to a download service.
TED viewers who want a quick, one-click way to send the talk they are watching to a download service, and users who prefer managing this from a small control panel.
Key features
- Injects a single circular download button into the action row of a TED talk page.
- Opens a web-based download service for the current talk URL in a new tab.
- Picks the download-service language path from the browser language.
- Companion panel can enable or disable the injected button and trigger downloads.
- Panel reports action status as connecting, running, done, or failed.
- Re-injects the button automatically during in-page (SPA) navigation and on page load.
- Keeps an in-memory runtime log and captures uncaught errors and promise rejections for troubleshooting.
- Adds a rainbow hover ring effect to the button using injected styles.
Supported sites
- www.ted.com
Permissions
This script requests the following userscript-manager permissions. Review them before installing.
GM_openInTabGM.openInTabGM_addStyleGM_setValueGM_getValue
How to install & use
- Install a userscript manager such as Tampermonkey or Violentmonkey for your browser.
- Click the "Download / install" button to open the script source on GitHub and install it with your userscript manager.
- Open the target site and use the script as documented.
How to use
- Install the userscript and open any talk page on www.ted.com/talks/.
- Wait for the page to load; a circular download button appears in the talk's action row near the title.
- Click the button to open the download service for the current talk in a new tab.
- Optionally open the companion control panel to toggle the injected button or start a download from there.
- Watch the panel status line for connecting, running, done, or failed feedback.
- Navigate between talks normally; the button is re-injected automatically without a full reload.
Limitations
- Only runs on TED talk pages that match www.ted.com/talks/; other pages are unaffected.
- Button injection depends on TED's current page structure (the talk title's action container), so a site redesign could break it.
- The script itself does not download media; it delegates to an external web download service.
- Only the current talk can be triggered; there is no bulk or playlist downloading.
- The runtime log is kept in memory only and is cleared when the page is refreshed.
- The companion panel is hosted on an external site and opens in a separate tab/window.
FAQ
Does the script download the video by itself?
No. It sends the current talk URL to an external web-based download service, which handles the actual download in a separate tab.
Which pages does the button appear on?
Only talk pages matching www.ted.com/talks/. It does not run on other TED pages or other sites.
Can I hide the button?
Yes. The companion control panel provides an enable switch for the injected download button; turning it off stops the button from being inserted.
Why does a panel page open?
The script connects to a companion control panel the first time it runs so you can toggle the button and trigger downloads with status feedback. Connection is remembered via stored state.
What is the runtime log for?
It records script events, uncaught errors, and promise rejections in a small in-memory buffer to help diagnose problems. It is not persisted and clears on refresh.
Safety & privacy
The script requests permissions to open tabs (GM_openInTab), inject styles (GM_addStyle), and read/write stored values (GM_getValue, GM_setValue). It stores only small state such as whether the panel connection has been made, falling back to localStorage if userscript storage is unavailable. Runtime logs are kept in memory only (a bounded ring buffer) and are not uploaded or persisted by the script. Clicking the download button passes the current page URL to an external download service, and the companion panel is loaded from an external site; communication with it is restricted to a trusted origin. The script does not access credentials or transmit personal data.