【微博移动端】内容过滤与界面简化

过滤低互动(自定义点赞、评论数阈值)微博,并移除顶部导航栏、悬浮刷新按钮等界面元素。

As of 2025-09-13. See the latest version.

You will need to install an extension such as Tampermonkey, Greasemonkey or Violentmonkey to install this script.

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

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

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

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

You will need to install a user script manager extension to install this script.

(I already have a user script manager, let me install it!)

You will need to install an extension such as Stylus to install this style.

You will need to install an extension such as Stylus to install this style.

You will need to install an extension such as Stylus to install this style.

You will need to install a user style manager extension to install this style.

You will need to install a user style manager extension to install this style.

You will need to install a user style manager extension to install this style.

(I already have a user style manager, let me install it!)

// ==UserScript==
// @name         【微博移动端】内容过滤与界面简化
// @namespace   https://github.com/realSilasYang/UserScripts
// @version         2025-09-13
// @description    过滤低互动(自定义点赞、评论数阈值)微博,并移除顶部导航栏、悬浮刷新按钮等界面元素。
// @author          阳熙来
// @icon             data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAYAAACqaXHeAAAAIGNIUk0AAHomAACAhAAA+gAAAIDoAAB1MAAA6mAAADqYAAAXcJy6UTwAAAAGYktHRAD/AP8A/6C9p5MAAAAJcEhZcwAAHYcAAB2HAY/l8WUAAAAHdElNRQfpCQQOBBF7r90wAAAPZklEQVR42u2ae3DU13XHP+f+9qH3CpAECDAGExweknGAQmoTP6E1DB3bnXRCjTtuEpuOoXHtduykiSlO6kfsYjeJHdImGfeRppDYqYtTQ4ixMcbYxsjmKQPGxRRYCcmgx0q7q93f73f6x11JSFotkiANnvKdWWnnt/fec8/33nvuefzgIi7iIi7i/zHktz2BgUD/YebAVHF8UEHurPnkE6D/OBvEgO8B2vm0CJVShHKgOPOsBZVGjLTg0o6jtnl5G9SXIMvf+eQRoD+YCSKAD5gC0BnA9cBcYDJQCgQyzV2gCTgAvAn8Gp99OHSgljhZ9u4njIA1V0IoCK43G/gr4DqgfIDd64ANwA8Rbwfq+ARdSISy7oYLkwB75scAPwN+d4jDHAe+j+oaDM3Eg5DvIst62gfz21Y2B2YAV5xD/7HANxF5GpVLyHfBa0PXVH9iCGgFOvr5LQnEMp90jjECwG3Ad1HG4hSDk9+jwQV6BD4DSgEijwB3AfkZQnYCW4FDWMNngAqgCrgWmA6E+hn2WdS/B5EYKsif1VzABPxwDqgHaAnKAmAisA9r5Zv6dChohHj5aOAPgD8HpmUZtgO4nxL9Li0C9TXIqguVgGemQagw4wPkgkDChQIBNeAbMH4V8CiwKEuHD4BbQfYRCCJfevPCtAGyfD/41qtDAHUCwChgJugNwFXApSh55DugDvguOB4Ie4HlwKYsQ38KWAquwe3opPDCg70GBdQ4iDfbTpprgZFAEOshNQFvo/wUkZdRP0leCyTLsHZRZiGswx6fM3EQ5CbQIzihLm/qvKCuvBrHE9yA328bARSlsmFfDgYA9QSjtwN/i/UJemMYMBFhIei/IPIIqUg94tr+I8bs5PSJZ4Fv0nOhJ4BeBRyheOz52QEnRk5HAaOCiiIqBcA4YErmfxjrob1ZWtD+383xIgAqG/Zk17/bEdqItexngwLrUP0KSCO+gKNk5G8Axvdq/z3E/AWq/jntgLqKK3B8B1ddKmMV1BWfHC8q84GFwCxgBPYKEyAFfNAcL3zEI7jW4Pq5R5dS0IoBTkWAP0LkQ4yuQnAzzz/CXp29Cbgc/CKgdUhGUPk8x0ZNQVVJOSkExtQVn7wfWA+sAW7BrnwB3dsvhL2eHnVIzRR8omVVOVTSKLC319M0cAqIZ+lhgD/Fl8+AgrhAIAG8n6VtJUpeZ6dBIVpRTcOIjzDqABIyam5RdB326qmGs9qVS4CFEvDR/k5gQCFtmoC/Bl7EruRmYAXKIuB24GW64+RuxeAWhucLEsQGipzOIqGwc56DOgLRimoE8JwkglQi/r3Al7Hh6WAw0U9JSERTWX/1BIIKsAOV20CLgXaQFkTJmNK9wL8DvbMlczidLAFaOunMIsHtJG/ABERHViGqeCgGmYXyKHADQ7tKjRikcwGjI2fY5IeXBoG6b6TsLg5B5OZgLH+6xOxezZgNUfDMBxh9KQsBY7FHr4WyfPg4MSqL/FYyMcSACIhWVAOKCfhGXbMYeASYOgTFO9GUF/RTKddQN7IKVQ+8FIgTtjEAQQTRNOnW59xY8881jYCPEPI9yh8LWq/PGtbeCHQtysfxEpBshuYYkBgQAdGKKkBRNUHP5YvAQ1iHZKjwgNpkOqCR4pPSGhtZDjod48zFGslx2DveAE2+6vvABlE2CdrmRQLgOeBoKT5XZSO3mxiZhg2re6MWDbYjHbkJsMoDoiFRfwWwEoicg/JgQ9h60HktsYqFoDdiXdT+xr0KWKLwY4Gv0+G3oQoqi4BrsrTfD7SiJoD4f0zfTFIb8CaShrzS/gmoq6hGUQQNqspyYBVdichzQjHwPawlHjbAPoXAl4BXTFj+E883OM7VWB/jTHQAvwJSiD8VGx32xgFU30EEjrya/RqsK7crbwiLIn+CXfnzoTyAgzVUA1X+TBJmk3ZINfs+8HGWNq+gbMh8H0HfXeUDP0diJ0GQVVn8gJMV03FUcI2PT8dNwLcY/DX3m0JB7GghTjAA6Fpg+xm/7QX9FtJ17x8Ganv13wX6MyjpeuD0lnB3eAxifAwyHXgGmDSoKWZS0aiCr6C+/a6ZfD3a7b7IoG/Q9cGC5DYTMYTGBhpBX0M4CLwM+ne0l9QQToLvQCDdhpoD2DDaAd4GWUVA3sOjKyPUwwZEK6oQdREl4gsPMtCkpKqN30WQggKkqAATKcGUDUOKCpFQCHVdNJHEP92Mf6oJbWtH29ptP2MGQkYLUIMIwUrAuKDmQ+D7GTahpAV8AaPgBQH/DeALIEVAO36qFbdnxqxLav3IahRItKTIKwneAzxO//k1i8zkTdlwgtMuJzizmuDUyTiXjccZMRzCISTgWAVVUc+DVBq/uRXvyP+Q3n+Q1I73SO+uxW88ZYk0/Xrn7wC/D5xGINgRpLmslU8dPpx9TbrKaZ2eI2CCoB5yV3d9oIuA42XTMUbA+vPPYa+m/hUPBAh8ehJ5C68n78bPEZh0KVJcNKAN02OibXHcQ4dJ/nIziRc34R09nplZnx1xHPi2wgYc+ci46nWepMrGvQMX2AsCcOTSSwnFi0EJiPD32JRSltlakYGJ48lf+ofk3/x7OGMrhyy899jp2kPEf/RTEi9stMej725IA0eBXwL/NLrhC7vryteeEwkC0BD5HbxQAhXmAP8BjM6qfChI3sIbKLrnywSnXZ5zYM/zSKWsQxYOhzFmYIGnJpIk1q0ntnoNfn1jriPxIfA4qv8M0jFUEgS6PD4HWA3ck015KSigcNlSCu++AxPJ7hLE43H27NnDG2+8waFDh2hqakJEKC8vp7q6mnnz5jF58mQcxyEnVEn84iVaH3wcv/E0mH4NZDvwMMpqIIVAZcPgSAjUj6yytxVMELgpq/J5eRR95YsULr8DCYf7NPE8j61bt7JmzRq2bNlCY2NjnzaO4zBu3DiWLFnCihUrqKzMcXREyL/lJrwT9cS+/Qy4bn8tC4GvIRwXX/9VB3+t4txfVI6HIDaLczu9nSMRCpbcTPH9dyP5eX0GSCaTPP3009x3333s2LGDeDyeVZCq0tzczLZt2zhw4ABz585l+PDhOUkIXHYp6ZrdeEdP5NoFYWAcYv4LiK1ubxgUAcZVgxEJAJ+ld3To+wQ+PYnCu+9ACvL7dE6n0zz55JM8+OCDnDx5sl8hRUVFhELdN+pLL73EypUricViuSdXNpy8xQtsqTw3poHOBWgoH1yUbjKrUwz0tWqOQ/6tCwlcNj5r5/Xr1/PEE0/0u+oAc+bMYe3atSxfvrzH2X/hhRfYuHHjWScYmn0FprSk28PMjnw7fyHgJgdPAHYb9QwbVTFlwwhff1XWjg0NDTz11FM0NzfnFDBr1iyuueYaysrKejyPx+Ns2LCBdDqds7+pKLP+RW4CMjooHeGSs7Xrgc4tL/SOC1RxxlbijBmdtePrr7/Ou+92v3pijGHKlCnMmDGD9vZ2tm/fTkNDA+vWrWP37t3s378fz+tZ6zt48CCxWCynLRAR5OzGrSs6HFW/a0gEpOlOInYRYIZFkH7OX01NDYlEAoBQKMSyZcu49957GTNmDJ7nsWnTJpYvX86JEyfYtm1b1jGSySS+n7s84J9uxm9rP1us0ALsYQgwAohoO9axOJN7NJlCs0zQdd0eV938+fN56KGHmDBhAqFQiPz8fBYtWsT8+fNzCq+oqCCc5Vo9E+ndtWhz69n02IPqXjvrQRJg/DSeLSC8zZl5dgEvWpdVuOM45OfbW0FEWLBgAcOGDes1sOlh+bNh1qxZFBf3n2fR9jjJja+iyWSuHZAC/k0Cpqk7OhgEASoGox4gm7B+doYAwa9rIPXO7j6dRIQpU6ZgjLHVoVTf5OyhQ4f63foAlZWVLF68OOfkkr/eSsfWt3K5wwCvoPILdRUZQp3LjGqsBRSD/z620KCdBGg8SeK5F/GbW/p0vO6665g40Vae161bx86dO0mlUiSTSXbt2sUDDzxAbW1tVqGO43DXXXcxc2b/b4C6739A+3d+hMbacq3+UeBhRE85qlQ25qg49wMH4N7isdZVUz5AmItNTYOAH61HiosIzb6ix0RGjBhBOp1my5YtHDt2jM2bN7Nz506ef/55Vq9ezY4dO7IzbgxLly5l5cqVFBYWZlf+w6O0fuMxUu/syrX6TcBXR19y7MV4SwRFWB0fnBfYRcDqtjo68ofhOsEWQY9g082liIDr4e47gBkxnODUyV0TEhGqqqpIJpO89957NDY2sm/fPmpra2lpackqrKioiDvvvJOHH364j1/QiXTNHlq//hip13fkWvlmYKV4+mxba8RHYPQQw2EHbKXjLwtHYVDaOoJHQgH/ODCnkwSNJ0jv2AWqBKZMQvKs5Q6Hw1x99dWMGzeOaDRKU1MTbpbAJRKJMG/ePFatWsWKFSuIRPqWALQ1RmLdelpXrcbdU5tr5aPAVxX5McZWP885IdKJupFVNmdZHINY8QJsWszmBVWRUJDw9VdTeOdtBGfP6CICIBqN8tZbb1FTU8Px48eJx+NEIhEmTpzInDlzmDlzJqWlpX0m4LfGSG3fSfwnz5Pa+jaaSORS/m3gb/Ic2ZT0rGs42PA3JwHQXQ2StEGD/lTga8CtQEFndteMGE742s+St+hGgrOqccpGQLA7jkq5Lp7rEgwGCWSJ/bWtHe9YlI7tO+n41RZSO3ejrW3WK8m+7U8BP0H0Oz7OEUetbzL6HJXPSgBAdNR0WxVSB3yKEF0MrABmA8HOLLAUFuKMH0PwyukEp04mMOESzKgKTGlJJm+gqOuhbe34jadwj0fxDn9Eet8B3PcP4zV8DOl0rqxwC7AZ4QcKrxmflIgL6jBqCBZ/wAQAnBg+HackhN/uIuqiTmA0qguBJdjXXyJd+X5fIeAghQVIXhgJBiGccYLSaTTtQkcKP5GAZObtVzH9xfg+NgH6KrAWZBv4bSpCMCU0VnpM27//vCifk4Du3XAFKg7ipxHPoMYvxdbkFwCfwxZOhgFOd1Gk609GinSLyy6xHRvM1ACvCbwiyCEPTQnghEP4aZfR9bs53xiw63xi1HTUeBg3ACjiGtGAPxyViQhXYvMJk7B1vzIgD3vLdBoBP/NJYV9QqMe++nIY2Ae6HyQq6sc7Xbo8TZOSACMbzs92PycCOqF8no/G1hDuKOzRe3TeZOqShwqxyYkCbD2xAJtrMBnFkwgtKG2gSRVpd0TTvt89kO+EEPUYM8iw9v+MgN5oKJ9GeWsj0UiFzSwOROIZp8P1BBFl3MfnbtEv4iIu4iIuYpD4X2/880XgCSZaAAAAJXRFWHRkYXRlOmNyZWF0ZQAyMDI1LTA5LTA0VDE0OjA0OjA1KzAwOjAwSwJEVQAAACV0RVh0ZGF0ZTptb2RpZnkAMjAyNS0wOS0wNFQxNDowNDowNSswMDowMDpf/OkAAAAodEVYdGRhdGU6dGltZXN0YW1wADIwMjUtMDktMDRUMTQ6MDQ6MTcrMDA6MDA2f8yBAAAAGXRFWHRTb2Z0d2FyZQB3d3cuaW5rc2NhcGUub3Jnm+48GgAAAABJRU5ErkJggg==
// @license         GNU GPLv3
// @match        *://m.weibo.cn/*
// @match        *://huati.weibo.cn/*
// @match        *://h5.video.weibo.com/*
// @match        *://card.weibo.com/*
// @match        *://weibo.com/l/wblive/m/show/*
// ==/UserScript==

(function () {
    'use strict';

    // --- 配置区域 ---
    const MIN_COMMENTS = 5;
    const MIN_LIKES = 10;
    const POST_SELECTOR = '.wb-item-wrap, .card.weibo-member';

    // 将所有需要移除的元素的选择器放在这里
    const SELECTORS_TO_REMOVE = [
        '.lite-topbar.main-top',  // 顶部导航栏
        '.refresh-btn.lite-iconf' // 悬浮刷新按钮
    ];

    // --- 核心功能函数 ---

    /**
     * 解析互动数 (评论/点赞)。
     * @param {Element} iconElement - 图标元素
     * @returns {number} - 解析后的数值
     */
    function parseCount(iconElement) {
        if (!iconElement) return 0;
        const h4 = iconElement.parentElement.querySelector('h4');
        if (!h4 || !h4.textContent) return 0;
        const text = h4.textContent.trim();
        if (text.includes('万')) return parseFloat(text) * 10000;
        const num = parseInt(text, 10);
        return isNaN(num) ? 0 : num;
    }

    /**
     * 判断微博帖子是否应保留。
     * @param {Element} box - 微博帖子的根元素
     * @returns {boolean} - true 表示保留
     */
    function shouldKeep(box) {
        let commentIcon, likeIcon;
        if (box.matches('.wb-item-wrap')) {
            commentIcon = box.querySelector('.lite-iconf-comments');
            likeIcon = box.querySelector('.lite-iconf-like');
        } else if (box.matches('.card.weibo-member')) {
            commentIcon = box.querySelector('.m-font-comment');
            likeIcon = box.querySelector('.m-icon-like');
        } else {
            return true;
        }
        const commentNum = parseCount(commentIcon);
        const likeNum = parseCount(likeIcon);
        return commentNum >= MIN_COMMENTS && likeNum >= MIN_LIKES;
    }

    /**
     * 过滤单个微博帖子。
     * @param {Element} box - 微博帖子的根元素
     */
    function filterSingle(box) {
        if (!shouldKeep(box)) {
            box.remove();
        }
    }

    /**
     * 批量过滤一个根元素下的所有微博帖子。
     * @param {Element|Document} root - 搜索的根节点
     */
    function filterAll(root = document) {
        root.querySelectorAll(POST_SELECTOR).forEach(filterSingle);
    }

    /**
     * [重构] 移除所有在配置列表中指定的UI元素。
     */
    function cleanupUI() {
        SELECTORS_TO_REMOVE.forEach(selector => {
            document.querySelectorAll(selector).forEach(element => element.remove());
        });
    }


    // --- 主逻辑 ---

    // 观察DOM变化,处理动态加载的内容
    const observer = new MutationObserver(() => {
        // 每次DOM变动时,都清理UI元素并过滤帖子
        cleanupUI();
        filterAll();
    });

    observer.observe(document.documentElement, {
        childList: true,
        subtree: true
    });

    // 脚本运行时,也对已存在的内容进行一次初始处理
    function initialRun() {
        cleanupUI();
        filterAll();
    }

    if (document.readyState === 'loading') {
        document.addEventListener('DOMContentLoaded', initialRun);
    } else {
        initialRun();
    }
})();