Greasy Fork is available in English.

Kick.com Video Skip Controller

Customize skip time on Kick.com VODs (e.g., 5 seconds instead of 30)

スクリプトをインストールするには、Tampermonkey, GreasemonkeyViolentmonkey のような拡張機能のインストールが必要です。

You will need to install an extension such as Tampermonkey to install this script.

スクリプトをインストールするには、TampermonkeyViolentmonkey のような拡張機能のインストールが必要です。

スクリプトをインストールするには、TampermonkeyUserscripts のような拡張機能のインストールが必要です。

このスクリプトをインストールするには、Tampermonkeyなどの拡張機能をインストールする必要があります。

このスクリプトをインストールするには、ユーザースクリプト管理ツールの拡張機能をインストールする必要があります。

(ユーザースクリプト管理ツールは設定済みなのでインストール!)

このスタイルをインストールするには、Stylusなどの拡張機能をインストールする必要があります。

このスタイルをインストールするには、Stylus などの拡張機能をインストールする必要があります。

このスタイルをインストールするには、Stylus tなどの拡張機能をインストールする必要があります。

このスタイルをインストールするには、ユーザースタイル管理用の拡張機能をインストールする必要があります。

このスタイルをインストールするには、ユーザースタイル管理用の拡張機能をインストールする必要があります。

このスタイルをインストールするには、ユーザースタイル管理用の拡張機能をインストールする必要があります。

(ユーザースタイル管理ツールは設定済みなのでインストール!)

このスクリプトの質問や評価の投稿はこちら通報はこちらへお寄せください
// ==UserScript==
// @name         Kick.com Video Skip Controller
// @name:tr      Kick.com Video Atlama Kontrolcüsü
// @namespace    https://github.com/TunaStark/
// @version      1.0.0
// @description  Customize skip time on Kick.com VODs (e.g., 5 seconds instead of 30)
// @description:tr Kick.com VOD'larında atlama süresini özelleştirin (örn. 30 saniye yerine 5 saniye)
// @author       TunaG
// @match        *://kick.com/*
// @icon         https://www.google.com/s2/favicons?sz=64&domain=kick.com
// @grant        GM_setValue
// @grant        GM_getValue
// @grant        GM_registerMenuCommand
// @license      MIT
// ==/UserScript==

(function() {
    'use strict';

    // Retrieve the saved skip time from Tampermonkey storage, default to 5 if not set
    let skipTime = GM_getValue('kick_skip_time', 5);

    // Register a menu command in the Tampermonkey extension popup
    GM_registerMenuCommand(`⚙️ Set Skip Time (Current: ${skipTime}s)`, () => {
        // Prompt the user for a new skip duration
        const userInput = prompt("Enter skip time in seconds:", skipTime);

        // Validate and save the input
        if (userInput !== null) {
            const parsedTime = parseInt(userInput, 10);

            if (!isNaN(parsedTime) && parsedTime > 0) {
                skipTime = parsedTime;
                GM_setValue('kick_skip_time', skipTime);
                alert(`✅ Skip time successfully updated to ${skipTime} seconds!`);
            } else {
                alert("❌ Invalid input. Please enter a number greater than 0.");
            }
        }
    });

    // Listen for keydown events using the capture phase (true) to intercept before Kick's native handlers
    document.addEventListener('keydown', function(e) {

        // Only trigger on Right or Left arrow keys
        if (e.key === 'ArrowRight' || e.key === 'ArrowLeft') {

            // Prevent triggering the skip while the user is typing in chat or search inputs
            if (document.activeElement.matches('input, textarea, [contenteditable="true"]')) {
                return;
            }

            // Target the main video player element
            const video = document.querySelector('video');

            if (video) {
                // Block Kick's default 30-second skip behavior
                e.preventDefault();
                e.stopImmediatePropagation();

                // Apply the custom skip time based on user preference
                if (e.key === 'ArrowRight') {
                    video.currentTime += skipTime;
                } else if (e.key === 'ArrowLeft') {
                    video.currentTime -= skipTime;
                }
            }
        }
    }, true);
})();