惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Hacker News: Ask HN
Hacker News: Ask HN
Recent Commits to openclaw:main
Recent Commits to openclaw:main
cs.CV updates on arXiv.org
cs.CV updates on arXiv.org
C
Check Point Blog
S
Security Affairs
Hacker News - Newest:
Hacker News - Newest: "LLM"
S
Secure Thoughts
Recorded Future
Recorded Future
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
T
The Blog of Author Tim Ferriss
B
Blog
C
Cybersecurity and Infrastructure Security Agency CISA
Google DeepMind News
Google DeepMind News
CTFtime.org: upcoming CTF events
CTFtime.org: upcoming CTF events
A
Arctic Wolf
T
The Exploit Database - CXSecurity.com
Stack Overflow Blog
Stack Overflow Blog
T
Threat Research - Cisco Blogs
GbyAI
GbyAI
AWS News Blog
AWS News Blog
MongoDB | Blog
MongoDB | Blog
Y
Y Combinator Blog
Google Online Security Blog
Google Online Security Blog
T
Troy Hunt's Blog
I
InfoQ
L
LINUX DO - 热门话题
WordPress大学
WordPress大学
C
Cisco Blogs
G
GRAHAM CLULEY
The Register - Security
The Register - Security
A
About on SuperTechFans
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
Schneier on Security
Schneier on Security
Project Zero
Project Zero
H
Hackread – Cybersecurity News, Data Breaches, AI and More
P
Privacy & Cybersecurity Law Blog
Cloudbric
Cloudbric
H
Hacker News: Front Page
小众软件
小众软件
雷峰网
雷峰网
The Hacker News
The Hacker News
www.infosecurity-magazine.com
www.infosecurity-magazine.com
T
Tor Project blog
博客园 - 聂微东
N
Netflix TechBlog - Medium
V
Vulnerabilities – Threatpost
The GitHub Blog
The GitHub Blog
腾讯CDC
P
Palo Alto Networks Blog
Scott Helme
Scott Helme

博客园 - 金石碼农

邓安庆的贴地叙事:最简单的东西,往往最复杂 不是1M上下文的不用,不是免费大模型不用,全面实现 token 自由 RustPress 零成本博客,它承载了我的软件开发思想 只用了 3 分钟,我把那个按钮钉在了主页上 太不真实了!以前一周的活儿,现在一天干完,连边框都得听我的 别做网页了,以后智能体就是交互终端 以后写代码也得考驾照?别笑,这是未来编程的常态 她一年涨 7 万粉,只用了这几点社交平台的“笨办法” 怒开 3 个 agy CLI 账号!我是怎么在老 Intel Mac 上实现顶级模型 Token 自由的? 从命令行到桌面自动化:AI辅助创作的黄金方案 你越休息越累的真正原因,藏在一个被忽略的常识里 别再当信息垃圾收集器了!我体验了 CatReader,AI 伴读确实爽,但也有几个槽点 摸头石头编程 如何在 agy 中高效管理 AI Skill? 折腾谷歌最新 SDK 两天后,我发现开源软件已经没必要写给人类看了 第三天了,你的谷歌Antigravity还能跑吗? 一天干完一百万字,谷歌 agy 这个工具简直是头不要命的洪水猛兽 提示语工程的新六条 谷歌发布 Antigravity 2.0:界面干净了,但我怎么感觉又被“白嫖”了? 都 2026 年了,竟然还有人在翻我 2023 年的“保姆级”旧贴? 为什么 AI 给的代码,鼠标一点就消失了? Vide Coding 经验总结,核心五点 Mise 是一种好软件 我用 AI 写了四五个软件之后的总结 板栗是人是狗? 写福字 那个把代码当拖拉机修的小镇青年,活成了王阳明眼中最好的状态 如梦令·雪后 论狂 有一个家伙说 Vide Coding 上瘾 龙骨 openclaw 能干多少事,取决于我们给它多少权限 社区终端软件支持 brew 安装了 社区终端发布新版,进一步去掉枷锁,让使用更简单 继 Claude Code 之后,Anthropic 又推出了 Cowork,为非程序员服务 人间美味——胡萝卜炒包菜粉丝 成为三剑客很难,手持两股剑倒有可能 手机和相机的区别是什么? 酒取阅自己,香水取阅他人 感觉又回去了
无敌脚本批量删除私有笔记
金石碼农 · 2026-01-20 · via 博客园 - 金石碼农

因为测试软件的关系我上传过一些测试笔记,有一些是我上传的,有一些是脚本上传的。留着怕占用社长的服务器存储空间,准备删掉。于是写了一个无敌脚本:

// 删除一个item并确认
async function deleteOneItem() {
  const noteOps = document.querySelectorAll([class*="note-operation"]);

  if (noteOps.length === 0) {
    console.log("没有items了");
    return false;
  }

  const firstNoteOp = noteOps[0];
  const parent = firstNoteOp.parentElement;
  const grandParent = parent?.parentElement;

  if (grandParent) {
    const titleEl = grandParent.querySelector([class*="title"]);
    const title = titleEl ? titleEl.textContent.trim() : "";

    console.log("删除: " + title);

    // 找索引1的按钮(真正的删除按钮)
    const allButtons = firstNoteOp.querySelectorAll("button, div[class*=\"button\"]");

    if (allButtons.length >= 2) {
      const deleteBtn = allButtons[1]; // 索引1是删除按钮
      console.log("  点击删除按钮");
      deleteBtn.click();

      // 等待确认面板出现
      await new Promise(resolve => setTimeout(resolve, 300));

      // 找并点击确定按钮
      const confirmBtn = document.querySelector(".button.button-primary.alert");
      if (confirmBtn) {
        console.log("  点击确定");
        confirmBtn.click();
        await new Promise(resolve => setTimeout(resolve, 300));
        return true;
      }
    }
  }

  return false;
}

// 连续删除直到目标
async function deleteAllBeforeTarget() {
  const targetTitle = "黄宗义规律";
  let deletedCount = 0;

  while (true) {
    const noteOps = document.querySelectorAll([class*="note-operation"]);

    if (noteOps.length === 0) {
      console.log("没有更多items了");
      break;
    }

    const firstNoteOp = noteOps[0];
    const parent = firstNoteOp.parentElement;
    const grandParent = parent?.parentElement;
    const titleEl = grandParent ? grandParent.querySelector([class*="title"]) : null;
    const title = titleEl ? titleEl.textContent.trim() : "";

    console.log("[" + (deletedCount + 1) + "] 检查: " + title);

    // 检查是否到达目标
    if (title === targetTitle) {
      console.log("到达目标: " + title);
      console.log("停止删除");
      break;
    }

    // 删除这一项
    const success = await deleteOneItem();
    if (success) {
      deletedCount++;
      console.log("已删除 " + deletedCount + " 项");
    } else {
      console.log("删除失败");
      break;
    }
  }
}

// 执行
window.deleteAllBeforeTarget();

使用方法很简单,打开 tab:

https://note.mowen.cn/my/notes?tab=private

在 console 面板粘入以上代码就可以了。

注意,一定要设置一个停止条件,例如我的是“黄宗义规律”,到这里就停止。你也要设置一条,防止都删除了。

写到这里想起一则旧笑话,一个程序员在网上找了一个教程,照着做,不小心执行 rm -rf 指令,然后电脑就坏了。他打开教程继续往下看,作者后面才写:以上操作是错误的,切莫尝试!

希望你看到了我写“黄宗义规律”。

image

技术·求真·AI

2026/01/20 周二 10:14