March 2026

MakeYouTask Macro V3: Updated Scripts + A Note on Fair Use

📲 Platform Overhaul — May 2026: Desktop Video Earning No Longer Works

MakeYouTask has undergone a complete platform overhaul. Video earning is now mobile-only. These desktop Tampermonkey scripts no longer work for the video earning section — videos do not load or earn credit on desktop browsers. A new Android/MacroDroid macro for the updated mobile platform is in development. The scripts on this page may still be useful for PTC click automation.

Full breakdown of what changed →

Disclosure

This article contains referral links to MakeYouTask. If you sign up through our link, we may earn a commission at no cost to you. We only recommend platforms we've personally tested. See our full disclaimer.

MakeYouTask updated their site layout and the V2 scripts stopped clicking. V3 fixes the dashboard selector, handles the new Account Safety modal, and reloads the page when Cloudflare captcha fails to load instead of clicking verify with a bad token. Both updated scripts are below.

Yes, We're Still Maintaining These

Quick reassurance for everyone who's been using these scripts: we're still actively maintaining them. When MakeYouTask makes changes on their end, we update the scripts. That's the deal.

V2 ran well for about a month. Then MakeYouTask redesigned their PTC dashboard — new card layout, new button classes, a new popup — and V2 stopped clicking. If your scripts suddenly stopped working in the last week or so, that's why. Not a Tampermonkey issue, not a browser issue. The site changed underneath the scripts.

V3 fixes it. Both scripts are updated below.

What Broke and What V3 Fixes

Three things changed on MakeYouTask's end:

  • New "Account Safety" modal: MakeYouTask now shows a popup overlay on every visit with platform rules. It blocks the entire page until you click "I Understand." V2 had no idea this existed, so it just sat there trying to click buttons behind the modal. V3 auto-dismisses it and checks the "don't show for 24 hours" box.
  • New button structure: The "Watch Video" buttons changed from generic links to styled .btn-view elements inside video cards. V2's broad selector was grabbing ad iframes and report buttons by mistake. V3 targets a.btn-view with PTC URL validation — much more precise.
  • Captcha false positives (Script #2): Cloudflare Turnstile sometimes fails to load or times out silently. When that happens, the old script would eventually click verify anyway with no captcha token, wasting the ad. V3 now detects when the captcha hasn't solved after 20 seconds and reloads the page for a fresh challenge instead of clicking through with a bad token.

Script #1 – PTC Dashboard Manager V3 (Updated)

Replace your existing Script #1 with this one. The old version won't click buttons anymore due to the site changes.

Script #1 V3 — Copy this entire script:

// ==UserScript==
// @name         PTC Dashboard Manager V3
// @match        *://makeyoutask.com/ptc*
// @grant        none
// @version      2026.03.28
// ==/UserScript==

(function() {
    'use strict';

    const MAX_HISTORY = 200;

    // ── 1. Dismiss the "Account Safety" modal ──────────────────���─────────────
    function dismissRulesModal() {
        const modal = document.getElementById('gxRulesModal');
        if (modal && modal.classList.contains('gx-show')) {
            const checkbox = document.getElementById('gxDontShow');
            if (checkbox && !checkbox.checked) checkbox.click();
            const btn = document.getElementById('gxCloseBtn');
            if (btn) {
                console.log('[PTC] Dismissing Account Safety modal.');
                btn.click();
                return true;
            }
        }
        return false;
    }

    // ── 2. Handle success popups (Notiflix + SweetAlert fallback) ────────��────
    function dismissPopups() {
        const notiflixClose = document.querySelector('.notiflix-notify .nx-close-button, .notiflix-report .nx-close-button');
        if (notiflixClose) {
            console.log('[PTC] Dismissing Notiflix notification.');
            notiflixClose.click();
            return true;
        }

        const notiflixOk = document.querySelector('.notiflix-confirm .nx-confirm-button-ok');
        if (notiflixOk && notiflixOk.offsetParent !== null) {
            console.log('[PTC] Clicking Notiflix OK.');
            notiflixOk.click();
            return true;
        }

        const swalBtn = document.querySelector('.swal2-confirm');
        if (swalBtn && swalBtn.offsetParent !== null) {
            console.log('[PTC] Clicking SweetAlert OK.');
            swalBtn.click();
            return true;
        }

        return false;
    }

    // ── 3. Main dashboard processing ─────────────────────────────────────────
    function processDashboard() {
        if (document.hidden) return;

        if (dismissRulesModal()) return;
        if (dismissPopups()) return;

        let clickedAds = JSON.parse(localStorage.getItem('ptc_clicked_history') || '[]');

        let availableAds = Array.from(document.querySelectorAll('a.btn-view')).filter(el => {
            const isVisible = el.offsetParent !== null;
            const adUrl = el.href || '';
            const isPtcLink = adUrl.includes('/ptc/view/');
            return isVisible && isPtcLink && !clickedAds.includes(adUrl);
        });

        if (availableAds.length > 0) {
            const targetAd = availableAds[0];
            const adUrl = targetAd.href;

            console.log(`[PTC] ${availableAds.length} ads remaining. Clicking next in 3s...`);

            setTimeout(() => {
                clickedAds.push(adUrl);
                if (clickedAds.length > MAX_HISTORY) clickedAds.shift();
                localStorage.setItem('ptc_clicked_history', JSON.stringify(clickedAds));

                targetAd.scrollIntoView({ behavior: 'smooth', block: 'center' });
                targetAd.click();
            }, 3000);
        } else {
            console.log('[PTC] No new ads on this tab.');
        }
    }

    setInterval(processDashboard, 5000);
})();

What changed from V2:

  • Auto-dismisses the new Account Safety modal (and checks "don't show for 24h")
  • Handles Notiflix popups (MakeYouTask switched from SweetAlert)
  • Uses a.btn-view selector with URL validation instead of scanning every link on the page
  • Click history bumped to 200 entries

Script #2 – PTC Video & Tab Handler V3 (Updated)

Replace your existing Script #2 with this one. The big change here is the captcha reload logic.

Script #2 V3 — Copy this entire script:

// ==UserScript==
// @name         PTC Video & Tab Handler V3.1 (Terminator)
// @match        *://*/ptc/view/*
// @match        *://*.youtube.com/embed/*
// @match        *://www.youtube.com/watch*
// @grant        window.close
// @run-at       document-start
// @allFrames    true
// @version      2026.03.28.1
// ==/UserScript==

(function() {
    'use strict';

    const hostname = window.location.hostname;
    const pathname = window.location.pathname;

    // ── Helper ───────────────��─────────────────────────���──────────────────────

    const closeTab = () => {
        window.close();
        try { window.top.close(); } catch(e) {}
        if (!window.closed) {
            window.location.href = 'about:blank';
            setTimeout(() => window.close(), 500);
        }
    };

    // ── 1. YouTube Embed Logic ───────────────────��─────────────────────���──────
    if (hostname.includes('youtube.com') && pathname.includes('/embed/')) {

        let videoHandlersAttached = false;

        const checkForErrors = () => {
            if (document.querySelector('.ytp-error, .ytp-age-gate, .ytp-age-gate-overlay')) {
                console.log('[PTC] Video unavailable or age-restricted. Closing tab.');
                closeTab(); return true;
            }
            const watchOnYT = document.querySelector('.ytp-watch-on-youtube');
            if (watchOnYT && watchOnYT.offsetParent !== null) {
                console.log('[PTC] Video restricted to YouTube only. Closing tab.');
                closeTab(); return true;
            }
            if (document.querySelector('.ytp-offline-slate')) {
                console.log('[PTC] Live stream queue detected. Closing tab.');
                closeTab(); return true;
            }
            const errorContent = document.querySelector('.ytp-error-content-wrap-reason');
            if (errorContent && errorContent.textContent.trim().length > 0) {
                console.log('[PTC] Video error: ' + errorContent.textContent.trim() + '. Closing tab.');
                closeTab(); return true;
            }
            return false;
        };

        const attachVideoHandlers = (video) => {
            if (videoHandlersAttached) return;
            videoHandlersAttached = true;

            video.addEventListener('loadedmetadata', () => {
                if (!isFinite(video.duration)) {
                    console.log('[PTC] Live stream (infinite duration). Closing tab.');
                    closeTab(); return;
                }
                if (video.duration < 10) {
                    console.log(`[PTC] Short video (${video.duration.toFixed(1)}s) – auto-restart enabled.`);
                }
            });

            video.addEventListener('ended', () => {
                if (video.duration < 10) {
                    console.log('[PTC] Short video ended – restarting.');
                    video.currentTime = 0;
                    video.play().catch(() => {});
                }
            });
        };

        const forcePlay = () => {
            const video = document.querySelector('video');
            if (!video) return;
            video.muted = true;
            video.volume = 0;
            attachVideoHandlers(video);
            const player = document.querySelector('#movie_player');
            if (player && typeof player.playVideo === 'function') player.playVideo();
            video.play().catch(() => {
                const bigPlay = document.querySelector('.ytp-large-play-button');
                if (bigPlay) bigPlay.click();
            });
        };

        const playInterval = setInterval(() => {
            if (checkForErrors()) { clearInterval(playInterval); return; }
            const v = document.querySelector('video');
            if (v && v.paused) forcePlay();
            else if (v && !v.paused) clearInterval(playInterval);
        }, 1500);

        setTimeout(() => clearInterval(playInterval), 20000);

        const errorPoll = setInterval(() => {
            if (checkForErrors()) clearInterval(errorPoll);
        }, 2000);
        setTimeout(() => clearInterval(errorPoll), 20000);
    }

    // ── 2. Watch Page Logic (Aggressive Termination) ──────���───────────────────
    if (hostname.includes('youtube.com') && pathname.startsWith('/watch')) {
        console.log('[PTC] Watch page detected – closing tab.');
        const terminate = () => {
            window.close();
            const s = document.createElement('script');
            s.text = "window.open('','_self').close();";
            document.body?.appendChild(s);
            if (!window.closed) {
                window.location.href = 'about:blank';
                setTimeout(() => window.close(), 500);
            }
        };
        setTimeout(terminate, 1200);
        setTimeout(terminate, 3000);
    }

    // ── 3. PTC Verification Logic ─��────────────��──────────────────────────────
    if (window.top === window.self && pathname.includes('/ptc/view/')) {

        const tryClickCaptcha = () => {
            const turnstile = document.querySelector('.cf-turnstile, [data-sitekey][class*="turnstile"]');
            if (turnstile) { turnstile.click(); return; }

            const hcaptcha = document.querySelector('.h-captcha, [data-sitekey][class*="hcaptcha"]');
            if (hcaptcha) { hcaptcha.click(); return; }

            const recaptcha = document.querySelector('.g-recaptcha');
            if (recaptcha) { recaptcha.click(); return; }

            const iframe = document.querySelector(
                'iframe[src*="recaptcha"], iframe[src*="challenges.cloudflare"], iframe[src*="hcaptcha"], iframe[title*="captcha" i], iframe[title*="reCAPTCHA"]'
            );
            if (iframe) (iframe.parentElement || iframe).click();
        };

        setTimeout(tryClickCaptcha, 1500);
        setTimeout(tryClickCaptcha, 3500);
        setTimeout(tryClickCaptcha, 6000);

        let pollCount = 0;
        const MAX_CAPTCHA_POLLS = 10; // ~20s before reload

        const checkCaptchaAndVerify = setInterval(() => {
            pollCount++;

            const cfResponse =
                document.querySelector('[name="cf-turnstile-response"]')?.value ||
                document.querySelector('[name="g-recaptcha-response"]')?.value ||
                document.querySelector('[name="h-captcha-response"]')?.value ||
                '';

            const isSolved = cfResponse.length > 10;

            const btn =
                document.querySelector('#verify') ||
                document.querySelector('button[type="submit"]') ||
                document.querySelector('.btn-verify, .btn-claim, .verify-btn');

            if (!isSolved) {
                if (pollCount >= MAX_CAPTCHA_POLLS) {
                    clearInterval(checkCaptchaAndVerify);
                    console.log('[PTC] Captcha not solved after 20s — reloading for fresh challenge.');
                    window.location.reload();
                    return;
                }

                tryClickCaptcha();
                console.log(`[PTC] Waiting for captcha... (${pollCount}/${MAX_CAPTCHA_POLLS})`);
                return;
            }

            if (btn && !btn.disabled && btn.offsetParent !== null) {
                clearInterval(checkCaptchaAndVerify);
                console.log('[PTC] Captcha confirmed. Clicking verify in 2s...');
                setTimeout(() => { btn.click(); console.log('[PTC] Claim clicked.'); }, 2000);
            }
        }, 2000);
    }
})();

What changed from V2:

  • Captcha timeout now reloads the page instead of clicking verify with a bad token
  • Added hCaptcha support (some PTC sites are switching)
  • Broader verify button selectors as a fallback
  • Extended error polling from 15s to 20s for slow-loading restricted videos
  • Added .ytp-error-content-wrap-reason detection for YouTube error messages

How to Update

Same process as last time. Takes about a minute.

  1. Click the Tampermonkey extension icon
  2. Click Dashboard
  3. Find "PTC Dashboard Manager" — click edit, select all, delete, paste Script #1 above, save
  4. Find "PTC Video & Tab Handler (Terminator)" — same thing, paste Script #2 above, save

Both scripts need updating this time. V2 only changed Script #2. V3 changes both.

Fresh Install?

If you haven't set up the macros at all, start with the original guide for the full Tampermonkey setup walkthrough, then use the V3 scripts from this page instead of the ones in that article.

A Note on Fair Use

I want to take a second to say something directly.

These scripts exist to save you time on repetitive clicking. They handle the mechanical parts — scrolling to buttons, dismissing popups, managing tabs, restarting short videos. That's it. They're designed to assist you during an active session, not to run unattended while you go do something else.

Please play by the rules of the platform.

  • One account per person, per network. Don't run multiples.
  • Don't use VPNs or proxies. MakeYouTask flags this and will ban your account.
  • Stay present during your session. Solve captchas when they appear. The scripts nudge Cloudflare Turnstile, but when the site asks you to prove you're human, actually prove it.
  • Don't run these 24/7 on a headless browser pretending to be a person. That's not what this is for.

MakeYouTask is one of the platforms that actually pays. Consistently. With low minimums. That's rare in this space and I'd like it to stay that way. If enough people abuse the system, the platform either shuts down the PTC section, tanks the payout rates, or both. We've seen it happen elsewhere.

The Simple Version

Use the scripts. Save yourself some clicking. But be present, solve your captchas, and don't try to game the system harder than these scripts already do. The goal is to earn a bit more efficiently — not to kill the golden goose.

Keep the Feedback Coming

V2 happened because of reader feedback. V3 happened because of reader feedback. See the pattern.

If something breaks, if the captcha reload is too aggressive, if the site changes again — let us know. We'll update it again. That's how this works.

Version History

  • V1 (Feb 2026) — Original automation guide. Basic dashboard auto-click + video handler.
  • V2 (Mar 2, 2026) — V2 update. Short video restart, age-restricted detection, live stream handling, captcha nudge.
  • V3 (Mar 28, 2026) — This article. Fixed dashboard selector for new site layout, Account Safety modal handler, Notiflix popup support, captcha reload on timeout.

Related Reading