Beijing, China: ☀️ 🌡️+30°C 🌬️←7km/h

写在前面

之前尝试提交 sitemap 到 🐶 百度站点进行收录,修改多次还是失败(谷歌和必应都能正常收录 🤏),经过查询相关资料,实践探索,整理内容,构建了通过 API 批量自动化定期 收录方式,同时还能可将提交结果的日志发送至手机通知

手机通知

  1. 目前,我使用的是 iPhone,可安装 Bark 应用,适用于安卓的 APP 可自行探索
  2. 安装
    • AppStore直接搜索 Bark 安装
    • 打开 APP,注册设备(需要打开针对该 APP 的通知权限)
    • 直接复制推送内容的命令,例如curl -k -X POST https://api.day.app/3TMS6fi5A/hello,即可将hello这个单词推送到手机的通知;
  3. 注意: 使用 Windows 自带的 power shell 推送中文容易出现乱码,需要进入 Windows 的管理语言设置,开启非Unicode字符编码;
  4. 有条件,可以直接在自己的服务器部署Bark docker server,保证信息隐私安全

脚本构建

public 文件夹下新建baidu_site_api文件夹,复制站点的 sitemap.xml 至该路径,编辑脚本vim run.sh并写入以下内容,添加chmod 777 run.sh确保脚本有执行权限:

#!/usr/bin/zsh

# 找到所有的网址
grep -o '<loc>.*</loc>' sitemap.xml | sed 's/<loc>\(.*\)<\/loc>/\1/' > allurl.txt

# 从allurl.txt中找到10条不在success.txt中的文本行 写入sendurl.txt
# baidu API限制每个站点每天提交的数量为10
[ ! -f "success.txt" ] && touch success.txt
grep -v -F -x -f success.txt allurl.txt | head -n 10 > sendurl.txt

# 调用百度API(可在百度站点中查询个人 token)
curl -H 'Content-Type:text/plain' --data-binary @sendurl.txt "http://data.zz.baidu.com/urls?site=https://www.shaohanyun.top&token=your_token" -o result.txt

# 收录成功则追加 sendurl.txt 的内容到 success.txt 文件
if grep -q "success" result.txt; then
  cat sendurl.txt >> success.txt
fi

# 将结果通知到自己手机
result="百度搜索网址收录同步结果 $(cat result.txt)"
curl -k -X POST "https://api.day.app/3zgktMtZksPA/$result"

定时运行

运行crontab -e,写入以下内容,设置每天早晨 6 点调用:

0 6 * * * cd /home/aliyun/MyBlog/public/baidu_sitemap_submit/ && bash run.sh > run.log

# 基本格式
# *  *  *  *  *  command
# 分  时  日  月  周   命令

# 第1列表示分钟 00~59 每分钟用*或者 */1表示
# 第2列表示小时 00~23(0表示0点)
# 第3列表示日期 01~31
# 第4列表示月份 01~12
# 第5列标识号星期 0~6(0表示星期天)
# 第6列要运行的命令

# 此外每一列除了数字,还可以有这些符号,其含义如下所示:

# *    代表任何时间,比如第一个 * 就代表一小时中的每分钟都执行
# ,    代表不连续的时间,比如 0 8,12,16 * * * 代表每天8,12,16点0分执行
# -    代表连续的时间范围,比如0 5 * * 1-6 代表在周一到周六凌晨5点0分执行
# */n  代表每个多久执行一次,比如*/10 * * * *代表每隔10分钟执行一次

📖 参考文献

  1. 脚本定期将 hugo 博客网址收录到百度 | 疯子爱淡定
  2. 自建苹果消息通知推送工具 | 疯子爱淡定
  3. Linux 定时执行 shell 脚本-CSDN 博客
  4. Crontab.guru - The cron schedule expression generator
  5. Bark Document
  6. GitHub - Finb/bark-server: Backend of Bark
  7. curl 命令的使用 – 黯然奋发
  8. windows 下使用 curl 控制台乱码问题
  9. Using UTF-8 in the Windows Terminal