Netflix Auto Skip BTK V1.12

Auto-skip Netflix recaps, intros, credits, and auto-advance to next episode.

// ==UserScript==
// @name         Netflix Auto Skip BTK V1.12
// @namespace    https://github.com/MateoPalmeiro/Netflix-Auto-Skip-BTK
// @icon         https://raw.githubusercontent.com/MateoPalmeiro/Netflix-Auto-Skip-BTK/main/FlixIcon.png
// @version      1.12
// @description  Auto-skip Netflix recaps, intros, credits, and auto-advance to next episode.
// @match        http*://*.netflix.com/*
// @grant        none
// @run-at       document-idle
// @license      All Rights Reserved
// ==/UserScript==

(function() {
    'use strict';

    // Beware fellow one: modify these selectors at your own risk — you're about to embark on a warp-speed dive through Netflix’s fractal DOM corridors.
    // Netflix skip button hooks — extracted from their minified chaos of React props and data attributes
    const selectors = [
        // seamless next-episode buttons (draining vs standard)
        "[data-uia='next-episode-seamless-button']",
        "[data-uia='next-episode-seamless-button-draining']",
        // skip intro/recap overlay
        ".watch-video--skip-content-button",
        // legacy skip/preplay button in some layouts
        ".watch-video--skip-preplay-button"
    ];

    // Polling loop: every 300ms scan the DOM for any skip/next prompts
    // Faster polling just burns cycles; slower risks leaving intros unskipped, found myself the sweet spot
    setInterval(() => {
        for (const sel of selectors) {
            const btn = document.querySelector(sel);
            // Only trigger if element exists and is actually rendered
            if (btn && btn.offsetParent !== null) {
                // Simulate a click to skip or advance
                btn.click();
                // Bail out early to avoid multiple clicks in one cycle
                return;
            }
        }
    }, 300); // tweak at your own risk — Netflix DOM updates are a moving target

})();