
X/ Twitter 清空收藏夹,浏览器打开 https://x.com/i/history 登录 F12 控制台执行:
(async () => { const sleep = ms => new Promise(r => setTimeout(r, ms)); const KEY = 'bm_removed_total_v3'; let removed = +(sessionStorage.getItem(KEY) || 0); const before = removed; let idle = 0, skipped = 0; while (idle < 10) { const students = [...document.querySelectorAll('button[data-testid="removeBookmark"]')]; const btn = students.find(b => { const row = b.closest('article, [data-testid="cellInnerDiv"]'); return row && !row.dataset.bmSkip; }); if (!btn) { if (students.length > 0) break; // 剩下的都是失败跳过项 idle++; const el = document.scrollingElement; el.scrollTop = el.scrollHeight; await sleep(2500); continue; } idle = 0; const row = btn.closest('article, [data-testid="cellInnerDiv"]'); btn.click(); let ok = false; for (let i = 0; i < 12 && !ok; i++) { // 最多等 3 秒确认状态变化 await sleep(250); ok = !document.contains(row) || !row.querySelector('button[data-testid="removeBookmark"]'); } if (ok) { removed++; sessionStorage.setItem(KEY, removed); if (removed % 10 === 0) console.log('累计已取消 ' + removed + ' 条'); } else { row.dataset.bmSkip = '1'; skipped++; console.warn('有一条取消后状态没变,已标记跳过(可能是限流),稍后可重跑'); } } console.log('本轮取消 ' + (removed - before) + ' 条,累计 ' + removed + ' 条,失败跳过 ' + skipped + ' 条'); console.log('请刷新页面确认;如果还有书签,再跑一遍即可'); })();- 收藏支持反对打赏

你是坏人~清空我的收藏我会哭一天一夜。

再激进点,Deactivate your account点一下
@mubdao #1 看看你的收藏夹

@ping9timeout #2 X 从来没被冻结过

倒是 Telegram 被杜叔叔冻结过(申诉回来了
我 X 账号,自己注册的一个被冻结了。现在买了一个账号,先养着。
我缺的不是脚本,是收藏夹内容~
批量执行前最好先确认确实不需要这些收藏,脚本里的间隔也可以适当调大,避免触发平台限流。

@JamesLoc2027 #7 已经触发了,又改了下。
感觉很多东西你以为自己收藏了会看,其实都是吃灰,所以下定决心只要是当时没急着看的,说明都是没必要的