为啥我总是在美国?
最近在发布公众号和视频号内容时,我碰到一个问题
- 因为查阅资料的需要,我的网络环境通常会保持在全局模式。这样一来,发布作品时,我经常会忘记切换回来,导致内容的 IP 属地显示在美国。
我也观察到,一些我关注的作者,他们的文章 IP 属地有时也会在海外(不确定他们是真的身处国外,还是与我的情况类似)。
这个小细节让我开始思考,有没有办法能让这个发布流程更顺畅一些?
我最初的想法是,或许可以通过一个提醒,来让我记得手动切换网络模式。但在几个主流的内容平台(如公众号、视频号、小红书)上,似乎没有现成的工具,能在我打开编辑页面时恰好弹出提醒。
发现Mac 自动化工具 Keyboard maestro
后来,我将目光转向了 Mac 上的自动化工具。我花时间了解了一款名为 Keyboard Maestro 的工具,它与我之前所知道的 n8n 不同。
n8n 更偏向于连接不同网络服务(API)的云端自动化,而 Keyboard Maestro 则专注于电脑本地,可以在不同的软件和窗口之间,依据预设的条件执行某些动作,更像是一个本地的“宏”处理器。
有了这个工具,我的思路也变得清晰起来:当它监测到我打开特定平台的发布页面时,就自动将网络切换到“规则模式”;而当我完成发布,关闭这些页面后,再自动切回“全局模式”。
构建自动化工作流
不过,实际的工作流比设想的要复杂一些。
因为在整个发布过程中,我需要反复离开编辑页面,去查找资料、复制内容或设计封面。
一个理想的自动化流程,不应该在我短暂离开时就立刻切换回全局模式,而应在我完成所有操作后,再恢复初始状态。
经过一些尝试和调整,我最终设定好了一套符合我需求的流程。这套流程的实现,主要由三个“宏”组合而成,它们各司其职,又相互配合,共同构建了一个无感的自动化体验。
这个过程也并非一帆风顺。我最初使用的魔法客户端,并不支持通过脚本来查询或控制模式。为此,我更换到了 ClashX Pro,才让后续的自动化成为可能。可以说,这是整个问题的“地基”。
第一个宏,是整个系统的基石:全局状态监测
它是
哨兵。每 3 分钟巡逻一次,确保 KM 知道真相。
它的任务很简单,就是确保自动化工具(Keyboard Maestro)里的网络状态变量,始终与我 VPN 客户端的实际模式保持一致。我让它每隔3分钟就在后台静默地查询一次,并同步状态。这样,无论我之前是否手动更改过网络模式,后续的自动化判断都能基于最准确的信息进行,避免了决策失误。
第二个宏,是核心的智能提醒与切换
它是
管家。看到你进书房(打开公众号后台),就贴心地问你要不要开灯(切模式).
这个宏会持续监测我当前激活的窗口标题。一旦发现我打开了公众号、视频号这类平台的发布页面,它会立刻检查我当前的网络模式。如果发现不是我想要的“规则模式”,它便会弹出一个简洁的窗口,询问我是否需要切换。我只需点击一下按钮,它就会自动完成切换操作,并将最新的状态记录下来。这个设计既实现了自动化,又保留了人工确认的环节,让我觉得很安心。
第三个宏,负责善后:自动恢复初始状态
它是
保洁。等你人走茶凉(关闭页面),它负责把环境恢复原状。
这一步的设计需要一些考量,因为它要能判断出我“彻底完成了发布工作”。我的方法是,让这个宏在我离开特定的发布窗口后,并不立即触发,而是会进入一种观察状态。只有当它确认我已经关闭了所有相关的发布页面,真正结束了工作流,它才会将网络模式自动切换回“全局模式”。这样,就完美地解决了我在发布过程中需要临时切换到其他应用查资料的问题,保证了整个发布期间网络环境的稳定。
为了验证流程的可靠性,我为每一次自动切换都设置了弹窗提醒。不仅如此,我还额外用 Raycast 写了一个脚本,方便随时检查当前的网络模式,做到双重确认。
不知道 Raycast 是什么的朋友,可以阅读mac终极效率中枢:Raycast入坑指南了解一下。
这是我用 Raycast 查询当前的模式的脚本,有动手能力的朋友也可以设置起来。
注意:这个脚本依赖 jq 工具来解析数据。在使用前,你需要先在终端运行 brew install jq 安装它
#!/bin/bash
# Required parameters:
# @raycast.schemaVersion 1
# @raycast.title Check VPN Mode
# @raycast.mode compact
# Optional parameters:
# @raycast.icon 🌐
# @raycast.packageName VPN Tools
# Documentation:
# @raycast.description Checks the current mode of the VPN proxy (e.g., Clash).
# @raycast.author YourName
# @raycast.authorURL https://github.com/your-github
# 使用 jq 直接解析 JSON,更稳定和简洁
MODE=$(curl -sX GET 'http://127.0.0.1:9090/configs' | jq -r '.mode')
# 对输出进行判断,增加可读性
if [ -n "$MODE" ]; then
# 将首字母转换为大写
DISPLAY_MODE="$(tr '[:lower:]' '[:upper:]' <<< ${MODE:0:1})${MODE:1}"
echo "Current Mode: $DISPLAY_MODE"
else
echo "Error: Unable to connect to proxy on port 9090."
fi
自从这三个宏”岗后,我终于不再是“精神美国人”了。 看着朋友圈和公众号文章下方的 IP 属地稳稳地显示为广东,那种掌控感让我觉得,这番折腾是值得的。
自动化工具的魅力或许就在于此:它不显山不露水,但在每一次你忘记切换、忘记关灯的时刻,默默地为你兜底。
///
关注起来,一起学习交流呀