Typecho博客文章自动推送到百度收录
本文介绍如何在Typecho博客中实现文章自动推送到百度收录的功能,包含最新的配额管理和分批处理功能。
开发背景
- 很简单,网上的插件用不了,最新的也是2022年的,我的云服务器操作系统是
Centos stream 9
,所以就自己做一个插件,
文章发布完提示自动提交后,百度收录的数据反馈并不会立马刷新,一般是一天后。
1. 准备工作
1.1 开启伪静态
- 登录Typecho后台
- 进入"设置" -> "永久链接"
- 选择"启用地址重写功能"
- 选择"自定义文章路径",支持以下格式:
/{slug}.html
/{category}/{slug}.html
/archives/{slug}.html
/archives/{cid}/
- 保存设置
1.2 安装插件
- 下载插件文件:
在我的github中,文章末尾有地址 - 在Typecho的插件目录下的文件夹:
usr/plugins/BaiduPush/ ├── Plugin.php └── baidu-push.php
- 刷新Typecho后台,在插件列表中启用"百度推送"插件
- 在插件设置中配置:
- 网站地址
- 百度推送Token
1.3 获取百度推送接口
- 登录百度站长平台
- 添加并验证你的网站
- 找到"普通收录"下的"接口调用"
- 获取接口地址,格式如:
http://data.zz.baidu.com/urls?site=你的网站&token=你的token
1.4 我的环境是
- Centos stream 9
- PHP 8.0
- curl扩展
2. 配置说明
2.1 核心配置项
在插件设置中配置:
网站地址:你的网站完整地址(如:https://www.example.com)
百度推送Token:从百度站长平台获取的token
2.2 文件说明
-
日志文件 (
baidu-push.log
)- 位置:
usr/plugins/BaiduPush/baidu-push.log
- 内容:记录每次推送的详细信息
- 格式:
时间 推送结果
- 示例:
2024-01-01 12:00:00 文章推送成功: https://example.com/post.html 2024-01-01 12:01:00 推送完成:成功1个,失败0个,总计1个URL
- 位置:
-
URL列表文件 (
url-list.txt
)- 位置:
usr/plugins/BaiduPush/url-list.txt
- 内容:存储所有需要推送的URL
- 格式:每行一个URL
- 示例:
https://example.com/post1.html https://example.com/post2.html
- 位置:
2.3 文件权限
确保以下文件可写:
usr/plugins/BaiduPush/baidu-push.log
usr/plugins/BaiduPush/url-list.txt
设置权限:
chmod 666 usr/plugins/BaiduPush/baidu-push.log
chmod 666 usr/plugins/BaiduPush/url-list.txt
2.4 安全配置
- 修改默认的访问令牌(token)
- 建议设置较低的每日配额,避免超限
- 确保日志文件路径可写
3. 使用方法
3.1 自动推送
- 插件安装并配置完成后,新发布的文章会自动推送到百度
- 文章更新时也会自动推送
- 推送结果会记录在日志文件中
3.2 手动推送
- 访问以下URL生成URL列表:
https://你的域名/usr/plugins/BaiduPush/baidu-push.php?action=generate&token=你的令牌
- 访问以下URL执行推送:
https://你的域名/usr/plugins/BaiduPush/baidu-push.php?action=push&token=你的令牌
3.3 查看推送结果
- 检查
baidu-push.log
文件中的推送记录 - 在百度站长平台查看收录情况
4. 特性说明
4.1 自动推送
- 新文章发布时自动推送
- 文章更新时自动推送
- 支持文章和页面推送
4.2 配额管理
- 默认每日限额:500条URL
- 通过日志记录准确追踪已提交数量
- 自动停止当达到配额限制
4.3 分批处理
- 每批次最多50个URL
- 批次间自动暂停1秒
- 出错时自动停止后续批次
4.4 日志记录
- 记录每次推送的详细结果
- 包含成功数量和失败原因
- 用于配额计算和问题诊断
5. 常见问题
5.1 推送后未显示收录
可能原因:
- 百度需要时间处理推送的URL(通常需要几分钟到几小时)
- 推送的URL格式不正确
- 网站未通过百度验证
- 网站内容质量不符合百度收录标准
解决方案:
- 等待一段时间后再次检查
- 确认URL格式正确
- 检查百度站长平台的网站验证状态
- 确保网站内容符合百度收录标准
5.2 配额超限
如果遇到"over quota"错误:
- 检查
baidu-push.log
中的今日提交数量 - 等待次日配额重置
- 考虑调低
maxDailySubmit
值
5.3 推送失败
常见原因及解决方案:
- URL格式错误:确保域名配置正确
- 网络问题:检查服务器网络连接
- 接口限制:确认API地址和token正确
5.4 性能优化
- 使用URL列表文件避免数据库查询
- 分批处理减少服务器负载
- 自动控制推送频率
5.5 日志文件问题
如果日志文件未生成或未记录:
- 检查文件权限是否正确
- 检查文件路径是否正确
- 检查PHP是否有写入权限
- 检查磁盘空间是否充足
5.6 URL列表问题
如果URL列表未生成或内容不正确:
- 检查文件权限是否正确
- 检查数据库连接是否正常
- 检查文章状态是否正确
- 检查URL格式是否正确
6. 安全建议
- 修改默认访问令牌
- 定期清理日志文件
- 设置合理的每日配额
- 限制IP访问(可选)
7. 更新日志
最新版本改进:
- 支持Typecho插件系统
- 添加自动推送功能
- 支持所有Typecho文章URL格式
- 添加分批处理功能
- 优化配额管理机制
- 改进日志记录格式
- 添加URL列表生成功能