// ==UserScript== // @name 去除ChatGPT Articles // @namespace http://tampermonkey.net/ // @version 1.0 // @description 删除页面上多余的
标签,只保留前2个和最后8个元素 // @match *://*/* // @grant none // @license MIT // @downloadURL none // ==/UserScript== (function() { 'use strict'; // 定义网址黑名单 const blacklist = [ 'https://chatgpt.com',// 这里可以添加更多网址 'https://www.sinbyte.com.cn' ]; // 获取当前页面的完整 URL const currentUrl = window.location.href; // 检查当前 URL 是否在黑名单中 const isInBlacklist = blacklist.some(blacklistedUrl => currentUrl.startsWith(blacklistedUrl)); if (!isInBlacklist) { console.log('当前网址不在黑名单中,脚本已跳过。'); return; // 不在黑名单中,跳过执行脚本 } console.log('当前网址在黑名单中,脚本开始执行...'); // 定义删除多余文章的函数 function removeExcessArticles() { // 精确匹配具有指定 class 和 data-testid 前缀的
元素 const articles = document.querySelectorAll('article.w-full.text-token-text-primary.focus-visible\\:outline-2.focus-visible\\:outline-offset-\\[-4px\\][data-testid^="conversation-turn-"]'); // 检查文章数量是否大于22 if (articles.length > 30) { console.log(`共找到 ${articles.length} 个
元素,开始删除操作...`); // 保留前2个和最后8个,其他删除 const toRemove = Array.from(articles).slice(2, -30); toRemove.forEach(article => { article.remove(); // console.log('已删除
'); }); } else { //console.log('文章数量少于30..无需删除。'); } } // 页面加载后立即执行一次清理操作 window.addEventListener('load', removeExcessArticles); // 每分钟定时执行一次清理操作 setInterval(removeExcessArticles, 5000); // 每5秒触发一次 // 监听特定 DOM 元素的变化,以捕捉对话切换或新对话的加载 const targetNode = document.querySelector('main .react-scroll-to-bottom--css-sznur-1n7m0yu'); if (targetNode) { const observer = new MutationObserver(removeExcessArticles); observer.observe(targetNode, { childList: true, subtree: true }); } else { console.warn('未找到指定的 DOM 元素,MutationObserver 未启动'); } })();