mac快捷指令可通过safari阅读器+apple智能稳定提取网页正文,支持javascript精准抓取dom元素,或调用url scheme/shell脚本扩展能力,但需授权自动化权限且仅限safari。
mac 上的快捷指令本身不能直接“爬取”网页内容,但可以通过组合系统能力实现自动化网页内容抓取——关键在于利用 “在网页上运行 javascript” 操作配合 safari 的阅读器模式或页面 dom 访问,再结合 apple 智能摘要、文本提取与后续处理,形成轻量级、隐私可控的抓取流程。
用 Safari 阅读器 + Apple 智能快速获取结构化正文
这是最稳定、无需脚本的方式,适合新闻、博客、文档类网页:
- 确保 macOS 已启用 Apple 智能(需支持机型+系统版本 ≥ macOS Sequoia 15.4,且账户地区非中国大陆)
- 在快捷指令中添加“获取网址”操作(可手动输入、从剪贴板读取或通过变量传入)
- 接“在网页上运行 JavaScript”操作,填入以下代码(触发 Safari 阅读器并等待加载):
if (document.querySelector('button[aria-label=\"显示阅读器\"]')) { document.querySelector('button[aria-label=\"显示阅读器\"]').click(); } else { window.location.reload(); }
⚠️ 注意:该操作需在 Safari 前台运行,且快捷指令需有“控制浏览器”权限 - 紧接着加“通过 Apple 智能获取网页摘要”操作——它会自动提取阅读器下的纯文本主体,过滤广告、导航栏等干扰内容
用 JavaScript 直接提取指定元素(如标题、列表、JSON 数据)
适用于目标结构清晰的网页(如 API 文档、商品页、内部管理系统):
部署和使用军舰的 macOS Automator 自动化服务集合。包含 5 个实用工作流:PDF转JPG、PNG重命名并转JPG、图像拼接、解压RAR、顺序命名图像文件。一键安装所有服务到 ~/Library/Services/ 目录。使用场景:(1) "安装我的自动化服务",(2) "部署所有 Automato...
- “在网页上运行 JavaScript”操作中,返回值必须是字符串、数字或数组(快捷指令只接收 JSON 可序列化的类型)
- 示例:提取所有 h2 标题文本并转为换行分隔的字符串
Array.from(document.querySelectorAll('h2')).map(el => el.textContent.trim()).filter(t => t).join('\n'); - 若页面含动态加载内容(如 React/Vue SPA),建议先加“暂停”操作(0.8 秒),再执行提取;也可用
document.readyState === 'complete'判断 - 提取后可用“文本”操作做清洗,例如“移除空白行”“替换多个空格为单空格”
绕过限制:用 URL Scheme 调用外部工具辅助抓取
当 JavaScript 提取受限(如跨域 iframe、CSP 严格策略),可借助支持自动化网页操作的第三方 App:
- 确认目标 App 支持 URL Scheme(如 Obsidian、Notion、Raycast、甚至 Python 脚本封装成 CLI 工具)
- 在快捷指令中使用“打开 URL”操作,构造带参数的 scheme,例如:
obsidian://advanced-uri?text={{提取的文本}}&title={{网页标题}} - 更进阶方案:用“运行 Shell 脚本”调用 curl + jq 或 Puppeteer CLI,但需提前配置好环境与权限(不推荐新手)
注意事项与常见问题
这类自动化对权限、上下文和稳定性较敏感,实际使用时注意:
- 首次运行需授权“快捷指令”控制 Safari —— 在「系统设置 > 隐私与安全性 > 自动化」中开启
- JavaScript 操作仅在 Safari 中生效,Chrome / Edge 不支持;且无法访问被 iframe sandbox 隔离的内容
- 若网页反爬较强(如检测 navigator.webdriver、频繁跳转),快捷指令无对抗能力,此时应转向专用爬虫工具
- 输出内容默认在快捷指令编辑器内预览;若从程序坞或菜单栏运行,需接“显示通知”“存入剪贴板”或“追加到文件”才能留存结果










