别再当“人肉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 小时——将近三个完整工作日。

这些时间拿去写代码、做分析,或者单纯多休息一会儿,都比机械地点浏览器强。

今天就能开始

如果你想马上动手,建议从最小的自动化开始:

  1. 找出你今天重复最多的那个浏览器操作
  2. 找到能替代它的命令行工具
  3. 跑一遍,确认结果正确
  4. 丢进 cron

不要追求一次性自动化所有事情。先自动化一个,省出一点时间,再搞下一个。慢慢来,持续迭代。

我自己一直在用 xbrowser 来处理这些重复劳动。它是一个把 Puppeteer 能力封装成命令行接口的工具,支持 Google 搜索、网页抓取、SEO 提交等常用操作,配合 cron 就能实现定时自动化。如果你也有类似的日常重复任务,可以试试看。

直达网址:https://github.com/yanqdinho/xbrowser

类似文章