YTShorter is a project designed to enhance the YouTube Shorts experience by allowing users to navigate between Shorts using global hotkeys. It consists of a Chrome extension, a Go-based native messaging host, and an installer.
app/: The Go native host application. It runs as a system tray app and listens for global hotkeys.ext/: The Chrome extension that communicates with the Go app and interacts with the YouTube page.installer/: A Fyne-based GUI installer to set up the Native Messaging manifest.assets/: Shared assets like icons.
Web Page (YouTube Shorts)
▲
│ DOM access (click "Next")
Content Script (ext/content.js)
▲
│ chrome.runtime.sendMessage
Background Service Worker (ext/background.js)
▲
│ Native Messaging (stdin/stdout)
Go Native Host (app/main.go) [launched by Chrome]
▲
│ Global Hotkey (robotgo/hook)
Keyboard Event (Ctrl+Shift+U)
cd app
go build -o ytshorter-appcd installer
go build -o installer-app- Open Chrome and go to
chrome://extensions. - Enable Developer mode.
- Click Load unpacked and select the
ext/folder in this repository. - Note the Extension ID (e.g.,
abcdefghijklmnopqrstuvwxyzabcdef).
- Run the
installer-appbuilt in step 2. - Paste the Extension ID into the input field.
- Click Install Native Host Manifest.
- Open a YouTube Shorts page (e.g.,
https://www.youtube.com/shorts/...). - The Go app should start automatically (indicated by a tray icon).
- Press Ctrl+Shift+U (default) to skip to the next Short.
- You can change the hotkey via the "Set Keybind" option in the tray menu.
- Go: For the native host and installer.
- Fyne: GUI toolkit for the tray app and installer.
- RobotGo (hook): For global hotkey listening.
- Chrome Native Messaging: For communication between the extension and the Go app.
- JavaScript (Manifest V3): For the Chrome extension.
- Basic architecture implemented.
- Native messaging bridge working.
- Global hotkey support.
- System tray indicator.
- Basic installer for manifest generation.
- Support for YouTube SPA navigation (
yt-navigate-finish). - Windows support for the installer (Registry keys).
- Improved error handling and auto-reconnect.
- More "reactions" and actions from the tray app.
GPLv3