别再当“人肉Selenium”了:一条命令终结你每天45分钟的浏览器体力活
每天早上,你端着咖啡坐到电脑前,打开浏览器,开始一系列固定操作:登录 Google Search Console 看索引,打开 Ahrefs 查排名,再去 Bing 提交站点地图,接着检查外链、同步文章到 Medium 和 Dev.to……等你忙完,咖啡已经凉了,大半个上午也没了。
这些操作真的很难吗?并不。它们只是特别“费人”——需要你亲手点开网页、登录账号、找按钮、填内容。你是工程师,又不是“人形自动化脚本”。
如果所有这些操作,都能变成一行命令、按一下回车就搞定呢?
# 向 Google 提交站点地图
seo ping --sitemap https://mysite.com/sitemap.xml
# 查询关键词在 Google 的排名
google search "my keyword" --json | jq '.[0].position'
# 发布文章到 Dev.to
devto publish --file article.md --tags "javascript,webdev"
# 检查外链中是否包含本站
curl-check --url https://partner.com --find "mysite.com"
这就是命令行自动化浏览器的核心思路。
第一步:把操作拆成命令
任何浏览器操作都可以拆成:打开网页 → 找到元素 → 执行动作 → 拿到结果。
比如“向 Google 提交站点地图”,手动做要打开网页、复制链接、粘贴、点提交。用命令行只要:
# 让命令行浏览器直接访问 Google 的站点地图提交接口
xbrowser navigate "https://www.google.com/ping?sitemap=https://mysite.com/sitemap.xml"
再比如“检查新文章有没有被 Google 收录”,手动要打开 Google 搜 site:xxx。命令行是:
# 搜索并直接返回 JSON 格式结果,方便后续处理
xbrowser google search "site:mysite.com/my-new-article" --json
你拿到的是结构化数据,可以直接用 jq 过滤,或者传给下一个命令继续处理。
第二步:把命令拼成脚本
单条命令解决单个任务,但早上通常是一串任务的组合。把命令写进 Bash 脚本,就能一键跑完。
#!/bin/bash
# daily-seo-check.sh
# 这是一个每日自动检查 SEO 的脚本
SITE="https://mysite.com"
KEYWORDS=("javascript tutorial" "node.js guide" "react best practices")
LOG_FILE="/var/log/seo-$(date +%Y%m%d).log"
echo "=== SEO Daily Report $(date) ===" >> "$LOG_FILE"
# Submit sitemap
echo "[1/4] Submitting sitemap..." >> "$LOG_FILE"
# 向 Google 提交站点地图
xbrowser seo ping --sitemap "$SITE/sitemap.xml" >> "$LOG_FILE" 2>&1
# Check rankings
echo "[2/4] Checking rankings..." >> "$LOG_FILE"
for kw in "${KEYWORDS[@]}"; do
# 查询关键词排名,如果没找到则显示 "Not found"
position=$(xbrowser google search "$kw" --json | jq -r '.[0].position // "Not found"')
echo " $kw: Position $position" >> "$LOG_FILE"
done
# Check index count
echo "[3/4] Checking index count..." >> "$LOG_FILE"
# 统计被索引的页面数量
count=$(xbrowser google search "site:$SITE" --json | jq 'length')
echo " Indexed pages: $count" >> "$LOG_FILE"
# Check backlinks
echo "[4/4] Checking backlinks..." >> "$LOG_FILE"
# 逐行读取 backlinks.csv,检查外链是否正常
while IFS=',' read -r url anchor; do
found=$(xbrowser crawl "$url" --find "$anchor" | jq -r '.found')
echo " $url: $found" >> "$LOG_FILE"
done < backlinks.csv
echo "Done. Report saved to $LOG_FILE"
给脚本加上执行权限,然后运行:
# 给脚本添加可执行权限
chmod +x daily-seo-check.sh
# 执行脚本
./daily-seo-check.sh
20 秒后,你的每日数据就全部汇总好了。不需要浏览器,不需要点点点。
第三步:交给定时任务
手动执行脚本已经很快了,但你可能还会忘。交给 cron,让电脑自己跑腿。
# 编辑当前用户的定时任务表
crontab -e
在里面添加你的任务计划:
# 每天早上 9 点执行每日 SEO 检查
0 9 * * * /home/user/scripts/daily-seo-check.sh
# 每小时检查一次排名,并将结果追加到日志
0 * * * * xbrowser google search "javascript tutorial" --json >> /var/log/rankings-hourly.log
# 每天凌晨 3 点(非高峰时段)重新提交站点地图
0 3 * * * xbrowser seo ping --sitemap https://mysite.com/sitemap.xml
# 每周一早上 8 点执行外链审计
0 8 * * 1 /home/user/scripts/check-backlinks.sh
从明天开始,你到公司后的第一件事不再是打开浏览器,而是查看日志:
# 查看今天生成的 SEO 报告日志
cat /var/log/seo-$(date +%Y%m%d).log
日志大概长这样:
=== SEO Daily Report 2025-01-15 09:00:01 ===
[1/4] Submitting sitemap... OK
[2/4] Checking rankings...
javascript tutorial: Position 7
node.js guide: Position 12
react best practices: Position 3
[3/4] Checking index count...
Indexed pages: 847
[4/4] Checking backlinks...
https://partner1.com: found
https://partner2.com: found
https://partner3.com: NOT FOUND ⚠️
Done.
30 秒看完报告,剩下的时间你可以专心写代码、喝咖啡,或者干脆摸会儿鱼。
不止 SEO,任何重复浏览器劳动都能自动化
也许你并不做 SEO,但你一定也有每天重复点的浏览器任务。
- 开发者想每小时看一眼 GitHub Actions 有没有挂?
bash
# 每小时检查 CI 状态,若失败则记录到日志
xbrowser github actions --repo myorg/myrepo --status failed >> /var/log/ci-monitor.log
- 内容创作者想一篇草稿同时发到 Medium、Dev.to?
bash
# 分别发布到 Dev.to 和 Medium
xbrowser devto publish --file article.md --tags "js,webdev"
xbrowser medium publish --file article.md --tags "javascript,web-development"
- 电商或运营想每天看看竞品价格变了没?
bash
# 每天早上抓取竞品价格并存入日志
xbrowser crawl "https://competitor.com/product/123" --extract '.price' >> /var/log/price-monitor.log
- 社媒运营想每小时搜一次品牌关键词?
bash
# 每小时搜索品牌提及,并提取文本内容
xbrowser twitter search "mybrand" --json | jq '.[].text' >> /var/log/brand-mentions.log
任务本身不重要,重要的是模式都一样:打开网页、拿数据、做动作。只要模式固定,就能写成命令。
管道的力量:Unix 哲学才是灵魂
你可能会说:“这些我用 Python 也能写。” 没错,但命令行真正的优势是管道拼接——每个工具只做一件事,然后用管道串起来。
# 查询排名 → 筛选出前 10 的结果 → 推送到 Slack
xbrowser google search "javascript tutorial" --json \
| jq '[.[] | select(.position <= 10)]' \
| curl -X POST "$SLACK_WEBHOOK" -d @-
# 抓取竞品价格 → 对比阈值 → 发现降价后发邮件告警
xbrowser crawl "$COMPETITOR_URL" --extract '.price' \
| awk -v threshold=99 '{if ($1 < threshold) print "ALERT: Competitor price dropped to " $1}' \
| mail -s "Price Alert" me@example.com
# 读取每日 SEO 日志 → 生成 Markdown → 转成 PDF → 邮件发送给团队
cat /var/log/seo-$(date +%Y%m%d).log \
| pandoc -f markdown -o /tmp/seo-report.pdf \
| mail -s "Daily SEO Report" team@example.com -A /tmp/seo-report.pdf
不需要写大段脚本,只要你会用管道,就能像搭积木一样快速组合出新的工作流。
你可能担心的几个问题
“自动操作会不会被封号?”
只要控制好频率就行。cron 最慢可以每分钟跑一次,你设成每小时或每天一次,这和真人手动操作没区别,不会被当成机器人。
“任务失败了怎么办?”
脚本完全可以处理错误。比如让 cron 在失败时发邮件:
# 如果 SEO 脚本执行失败,发送告警邮件
0 9 * * * /home/user/scripts/daily-seo.sh || echo "SEO check failed" | mail -s "Alert" me@example.com
或者在脚本内部加上更精细的错误捕获:
#!/bin/bash
set -euo pipefail
# 出错时调用 cleanup 函数,并告知具体行号
cleanup() {
echo "Script failed at line $1" | mail -s "SEO Script Error" me@example.com
}
trap 'cleanup $LINENO' ERR
“我没有服务器,能跑 cron 吗?”
能。macOS 有 launchd,Linux 有 systemd,Windows 有任务计划程序。哪怕花几美元买个最便宜的 VPS,把脚本丢上去,也能 24 小时自动跑。
算笔时间账
我们来看看这些“浏览器基本功”到底吃掉你多少时间:
- 提交站点地图:手动 3 分钟 → 命令行 2 秒
- 检查 5 个关键词排名:手动 10 分钟 → 命令行 10 秒
- 检查收录数量:手动 2 分钟 → 命令行 2 秒
- 检查 10 条外链:手动 15 分钟 → 命令行 5 秒
- 同步发布到 3 个平台:手动 10 分钟 → 命令行 15 秒
- 查看竞品价格:手动 5 分钟 → 命令行 3 秒
全部加起来,手动需要整整 45 分钟,而脚本跑完只要 37 秒。一天省下 45 分钟,一个月就是 22.5 小时——将近三个完整工作日。
这些时间拿去写代码、做分析,或者单纯多休息一会儿,都比机械地点浏览器强。
今天就能开始
如果你想马上动手,建议从最小的自动化开始:
- 找出你今天重复最多的那个浏览器操作
- 找到能替代它的命令行工具
- 跑一遍,确认结果正确
- 丢进 cron
不要追求一次性自动化所有事情。先自动化一个,省出一点时间,再搞下一个。慢慢来,持续迭代。
我自己一直在用 xbrowser 来处理这些重复劳动。它是一个把 Puppeteer 能力封装成命令行接口的工具,支持 Google 搜索、网页抓取、SEO 提交等常用操作,配合 cron 就能实现定时自动化。如果你也有类似的日常重复任务,可以试试看。
