Redirect YouTube videos, live streams, and playlists to SkipCut, including SPA navigation
当前为
// ==UserScript==
// @name YouTube → SkipCut Redirect (SPA-proof)
// @namespace https://greasyfork.org/users/1197317-opus-x
// @version 1.0
// @description Redirect YouTube videos, live streams, and playlists to SkipCut, including SPA navigation
// @author Opus-X
// @license MIT
// @icon https://www.skipcut.com/favicon.ico
// @match https://www.youtube.com/*
// @run-at document-start
// ==/UserScript==
(function() {
'use strict';
function checkAndRedirect() {
const url = new URL(window.location.href);
let newUrl = null;
if (url.pathname === '/watch' && url.searchParams.has('v')) {
newUrl = `https://www.skipcut.com/watch?v=${url.searchParams.get('v')}`;
}
else if (url.pathname.startsWith('/live/')) {
const liveId = url.pathname.split('/')[2];
if (liveId) {
newUrl = `https://www.skipcut.com/live/${liveId}`;
}
}
else if (url.pathname === '/playlist' && url.searchParams.has('list')) {
newUrl = `https://www.skipcut.com/playlist?list=${url.searchParams.get('list')}`;
}
if (newUrl && newUrl !== window.location.href) {
window.location.replace(newUrl);
}
}
// Initial load
checkAndRedirect();
// Listen for YouTube SPA navigation events
window.addEventListener('yt-navigate-start', checkAndRedirect);
window.addEventListener('yt-page-data-updated', checkAndRedirect);
// Fallback: detect URL changes manually
let lastUrl = location.href;
setInterval(() => {
if (location.href !== lastUrl) {
lastUrl = location.href;
checkAndRedirect();
}
}, 300);
})();