博客每日早报自动生成:Hexo + 每天 60 秒读懂世界
‘’, ‘自动草稿’, ‘’, ‘auto-draft’, ‘open’, ‘open’, ‘’, ‘’, ‘’, ‘’, ‘2026-07-30 15:16:02’, ‘0000-00-00 00:00:00’, ‘’, 0, ‘./?p=5’, 0, ‘post’, ‘’, 0);
INSERT INTO wpnk_posts (ID, post_author, post_date, post_date_gmt, post_content, post_title, post_excerpt, post_status, comment_status, ping_status, post_password, post_name, to_ping, pinged, post_modified, post_modified_gmt, post_content_filtered, post_parent, guid, menu_order, post_type, post_mime_type, comment_count) VALUES
(9, 1, ‘2026-07-30 16:40:06’, ‘2026-07-30 16:40:06’, ‘<article class="post-content" id="article-container"><div id="postchat_postcontent">
<a href="#%E4%B8%80%E3%80%81%E4%BB%8B%E7%BB%8D" class="headerlink" title="一、介绍">一、介绍
之前一直想做的功能,今天终于有机会来实现一下,正如描述那样,计划任务每天生成一篇文章用于展示每日新闻
\r
具体效果如下
\r
<img src="./wp-content/uploads/2026/07/1778491822678_670fbe73aa961.png" alt="image-20240620184437493" loading="lazy" />
\r
详情页如下所示
\r
<img src="./wp-content/uploads/2026/07/1778491821891_670fbe743a377.png" alt="image-20240620185945691" loading="lazy" />
\r
<a href="#%E4%BA%8C%E3%80%81%E5%AE%9E%E7%8E%B0" class="headerlink" title="二、实现">二、实现
<a href="#2-1%E3%80%81-%E4%BB%85%E5%9B%BA%E5%AE%9A%E5%8D%95%E9%A1%B5%E9%9D%A2%E8%AE%BF%E9%97%AE" class="headerlink" title="2.1、 仅固定单页面访问">2.1、 仅固定单页面访问
需要使用到 <a target="_blank" rel="noopener" href="https://www.alapi.cn/\">ALAPI 的 <a target="_blank" rel="noopener" href="https://www.alapi.cn/api/view/93\">每日60秒早报 接口,可免费调用
\r
注册登录后在 个人管理 => 个人中心 => 获取token
\r
如果只想生成一个固定的静态页面访问,可以直接使用以下代码,替换自己的token即可
\r
<!DOCTYPE html>\r <html lang=\"en\">\r \r <head>\r <meta charset=\"UTF-8\">\r <meta http-equiv=\"X-UA-Compatible\" content=\"IE=edge\">\r <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\r <title>每日早报</title>\r </head>\r \r <body>\r <div style=\"text-align: center;\"> <img src=\"https://img.shiguang666.eu.org/file/1778491852710_zaobao\"\r alt=\"每日早报\" width=\"100%\"> </div>\r </body>\r \r </html>\r
\r
将代码保存到一个html文件内,存放博客主目录`source`文件夹即可 \r
例如我保存到 source\\api\\60s.html
\r
<img src="./wp-content/uploads/2026/07/1778491824218_670fbe748b79e.png" alt="image-20240620202425352" loading="lazy" />
\r
直接访问该目录即可
\r
<img src="./wp-content/uploads/2026/07/1778491830827_670fbe750ef6b.png" alt="image-20240620202608057" loading="lazy" />
\r
或者创建一个page页面,例如
\r
hexo new page \"daily-news-detail\"\r
\r
然后修改 `source\\daily-news-detail\\index.md`文件,打开源码模式,粘贴以下代码,替换`token`内容 \r
---\r title: 每日早报\r ---\r \r <!DOCTYPE html>\r <html lang=\"en\">\r \r <head>\r <meta charset=\"UTF-8\">\r <meta http-equiv=\"X-UA-Compatible\" content=\"IE=edge\">\r <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\r <title>每日早报</title>\r </head>\r <body>\r <div style=\"text-align: center;\"> <img src=\"https://img.shiguang666.eu.org/file/1778491852710_zaobao\"\r alt=\"每日早报\" width=\"100%\"> </div>\r </body>\r \r </html>\r
\r
直接访问刚才生成的 `daily-news-detail `目录即可 \r
<img src="./wp-content/uploads/2026/07/1778491830181_670fbe75dde2d.png" alt="image-20240620203357815" loading="lazy" />
\r
<a href="#2-2%E3%80%81-%E6%AF%8F%E5%A4%A9%E7%94%9F%E6%88%90%E6%96%B0%E7%9A%84%E6%96%87%E7%AB%A0" class="headerlink" title="2.2、 每天生成新的文章">2.2、 每天生成新的文章
由于 Front Matter 是静态的,不能直接在 Markdown 文件中动态引用 JSON 文件的内容。所以如果想仅生成一篇文章每天动态加载文章标题及封面也需要使用下面的方法。
\r
在 主题目录scripts 文件夹下创建一个新的JavaScript文件,例如 fetch-daily-news.js,我使用的主题是 Butterfly,具体目录为 themes\\butterfly\\scripts,替换代码中的token
\r
const axios = require(\'axios\');\r const fs = require(\'fs\');\r const path = require(\'path\');\r const moment = require(\'moment\');\r \r // 设置 moment 的语言环境为中文\r moment.locale(\'zh-cn\');\r \r hexo.on(\'ready\', () => {\r const apiUrl = \'https://v2.alapi.cn/api/zaobao\';\r const token = \'xxxxxxxxxxx\'; // 替换为你的token\r \r axios.get(apiUrl, {\r params: {\r token: token\r }\r })\r .then(response => {\r const data = response.data;\r if (data.code === 200) {\r let newsData = data.data;\r \r \r // 执行历史数据 Start\r \r // const oldDataFileName = \"daily_news_2024-06-20.json\" // 修改需要执行的数据文件名称\r // const oldDataPath = path.join(__dirname, \'../../../source/_data/\'+oldDataFileName);\r // console.log(\"Daily news oldDataPath is :\",oldDataPath);\r // const oldData = JSON.parse(fs.readFileSync(oldDataPath, \'utf8\'));\r // newsData = oldData;\r \r // 执行历史数据 End\r \r \r // 使用 newsData.date 转换为星期几\r const postDate = newsData.date;\r const postDayOfWeek = moment(postDate).format(\'dddd\');\r \r const filePath = path.join(__dirname, \'../../../source/_data/daily_news_\'+postDate+\'.json\');\r console.log(\'Daily news save data filePath is :\', filePath);\r \r // 生成json文件\r fs.writeFileSync(filePath, JSON.stringify(newsData, null, 2));\r \r \r // 生成 Markdown 文件\r // const postDayOfWeek = moment().format(\'dddd\'); // 获取中文的星期几\r const postTitle = 【每日早报】-${postDate} - ${postDayOfWeek};\r const postContent = —\r
title: ${postTitle}\r
date: ${postDate} 00:00:00\r
tags:\r
- 每日早报\r
categories:\r - 每日早报\r
series: 每日早报\r
cover: ${newsData.head_image}\r
—\r
\r
<!DOCTYPE html>\r
<html lang="en">\r
\r
<head>\r
<meta charset="UTF-8">\r
<meta http-equiv="X-UA-Compatible" content="IE=edge">\r
<meta name="viewport" content="width=device-width, initial-scale=1.0">\r
<title>每日早报</title>\r
</head>\r
\r
<body>\r
<div style="text-align: center;"> <img src="https://blog.shiguang666.eu.org/`+newsData.image+`\"\r
alt="每日早报" width="100%"> </div>\r
</body>\r
\r
</html>;\r \r const postFilePath = path.join(__dirname, \'../../../source/_posts\', ${postTitle}.md);\r fs.writeFileSync(postFilePath, postContent);\r \r \r console.log(\'Daily news post generated successfully:\', postFilePath);\r } else {\r console.error(\'Failed to fetch daily news:\', data.msg);\r }\r })\r .catch(error => {\r console.error(\'Error fetching daily news:\', error);\r });\r });\r
\r
此处需要 用到两个插件 `axios` 和 `moment` \r
安装 axios
\r
npm install axios\r
\r
安装 `moment` \r
npm install moment\r
\r
调用接口生成的数据会保存在博客主目录 `/source/_data/daily_news_xxxx-xx-xx.json`,如果没有`_data`目录可以手动创建一下,防止因找不到目录文件保存失败。 \r
注意根据实际情况调整文件的存放路径
\r
const postFilePath = path.join(__dirname, \'../../../source/_posts\', ${postTitle}.md);\r
\r
文章的标题,目录,标签,系列文章分类等也可自行调整 \r
`tags:\r
- 每日早报\r
categories:\r - 每日早报\r
series: 每日早报`\r
\r
\r
\r为了确保 Hexo 能够正确加载 `_data` 目录下的数据文件。可以在 `_config.yml` 文件中添加以下配置,确保 `_data` 目录被正确加载 \r
data_dir: source/_data\r
\r
执行 `hexo g` 重新生成html文件时会保存 `daily_news_xxxx-xx-xx.json` 并 生成一篇新的文章,控制台会打印相应日志 \r
<img src="./wp-content/uploads/2026/07/1778491837973_670fbe765e6c2.png" alt="image-20240621103332176" loading="lazy" />
\r
获取到的数据如下,只要有了数据,我们就能自由发挥,实现无限可能,例如挂载到侧边栏等等
\r
<img src="./wp-content/uploads/2026/07/1778491831853_670fbe76c444f.png" alt="image-20240620205056880" loading="lazy" />
\r
如果你只想生成一篇文章,然后把这篇文章置顶,那只需要将生成的markdown文件名固定就可以了,例如
\r
const postFilePath = path.join(__dirname, \'../../../source/_posts\', 每日早报.md);\r
\r
这样每次执行 `hexo g` 时重新生成的文件会覆盖原来的文件 \r
如果想要执行历史数据,只需将执行历史数据部分取消注释,修改数据文件名称就可以了
\r
// 执行历史数据 Start\r \r // const oldDataFileName = \"daily_news_2024-06-20.json\" // 修改需要执行的数据文件名称\r // const oldDataPath = path.join(__dirname, \'../../../source/_data/\'+oldDataFileName);\r // console.log(\"Daily news oldDataPath is :\",oldDataPath);\r // const oldData = JSON.parse(fs.readFileSync(oldDataPath, \'utf8\'));\r // newsData = oldData;\r \r // 执行历史数据 End\r
\r
\r
\r
<a href="#2-4%E3%80%81%E9%80%9A%E8%BF%87%E8%AE%A1%E5%88%92%E4%BB%BB%E5%8A%A1%E8%87%AA%E5%8A%A8%E7%94%9F%E6%88%90%E5%B9%B6%E9%83%A8%E7%BD%B2%E5%8D%9A%E5%AE%A2%E6%96%87%E4%BB%B6" class="headerlink" title="2.4、通过计划任务自动生成并部署博客文件">2.4、通过计划任务自动生成并部署博客文件
每天都需手动执行命令生成文件不够优雅,我们可以创建计划任务,每天自动执行命令生成文件 \r
在 Windows 上,你可以使用任务计划程序(Task Scheduler)来设置一个计划任务,以便每天自动执行 hexo g 命令来生成文件。以下是详细步骤:
\r
<a href="#%E6%89%93%E5%BC%80%E4%BB%BB%E5%8A%A1%E8%AE%A1%E5%88%92%E7%A8%8B%E5%BA%8F" class="headerlink" title="打开任务计划程序">打开任务计划程序
\r
-
按 Win + S 打开搜索栏,输入 任务计划程序,或者 Win + R 打开运行输入框输入 taskschd.msc然后按回车键。
\r
<img src="./wp-content/uploads/2026/07/1778491833429_670fbe772b1e2.png" alt="image-20240620210504118" loading="lazy" />
\r
\r
\r
<a href="#%E5%88%9B%E5%BB%BA%E5%9F%BA%E6%9C%AC%E4%BB%BB%E5%8A%A1" class="headerlink" title="创建基本任务">创建基本任务
\r
- 在任务计划程序窗口的右侧,点击
创建基本任务。\r
\r
\r
-
填写基本任务信息:
\r
\r
<img src="./wp-content/uploads/2026/07/1778491838679_670fbe77b1170.png" alt="image-20240620211411416" loading="lazy" />
\r
\r
-
点击 下一页。
\r
\r
\r
-
设置触发器:
\r
\r
<img src="./wp-content/uploads/2026/07/1778491835519_670fbe7819e92.png" alt="image-20240620211511880" loading="lazy" />
\r
\r
-
设置开始日期和时间,以及重复间隔(例如每天),例如我设置为每天早上9点执行一次
\r
<img src="./wp-content/uploads/2026/07/1778491835408_670fbe786a0ac.png" alt="image-20240620211712722" loading="lazy" />
\r
\r
-
点击 下一页。
\r
\r
\r
-
设置操作:
\r
\r
<img src="./wp-content/uploads/2026/07/1778491842553_670fbe78ab9a7.png" alt="image-20240620211803878" loading="lazy" />
\r
\r
\r
-
配置启动程序:
\r
\r
-
在 添加参数 字段中,输入 /c \"cd /d D:\\path\ o\\your\\hexo\\blog && hexo g && hexo d\",其中 D:\\path\ o\\your\\hexo\\blog 是你的 Hexo 博客目录的路径。
\r
\r
-
点击 下一页。
\r
<img src="./wp-content/uploads/2026/07/1778491842874_670fbe78e92a4.png" alt="image-20240620212207650" loading="lazy" />
\r
\r
\r
-
完成任务创建:
\r
\r
\r
-
检查任务:
\r
\r
\r
-
启用历史记录
\r
\r
\r
<img src="./wp-content/uploads/2026/07/1778491846711_670fbe79506ae.png" alt="image-20240620215553151" loading="lazy" />
\r
这样,任务计划程序会每天在指定的时间自动执行 hexo g && hexo d 命令来生成并部署你的 Hexo 博客文件。
\r
当然,也可以执行 hexo clean && hexo g && hexo d 清除缓存数据
\r
<a href="#%E6%B3%A8%E6%84%8F%E4%BA%8B%E9%A1%B9" class="headerlink" title="注意事项">注意事项
\r
-
确保你的 Hexo 博客目录路径正确无误。
\r
\r
-
确保你的系统中已经安装了 Node.js 和 Hexo,并且 hexo 命令可以在命令行中正常运行。
\r
\r
-
如果你在执行命令时需要管理员权限,可以在任务计划程序中属性设置使用最高权限运行该任务。
\r
<img src="./wp-content/uploads/2026/07/1778491842369_670fbe7993958.png" alt="image-20240620214050771" loading="lazy" />
\r
如果保存时提示”一个或多个指定的参数无效”错误,可参考下面的文章
\r
<a target="_blank" rel="noopener" href="https://jingyan.baidu.com/article/3052f5a116814597f31f86b8.html\">解决任务计划程序出错一个或多个指定的参数无效
\r
\r
\r
<a href="#2-5%E3%80%81%E5%90%8E%E7%BB%AD" class="headerlink" title="2.5、后续">2.5、后续
现已将插件发布到<a target="_blank" rel="noopener" href="https://www.npmjs.com/package/hexo-daily-news\">NPM,并开源到 <a target="_blank" rel="noopener" href="https://github.com/Shiguang-coding/hexo-daily-news/\">Github,可直接通过命令安装
\r
npm install hexo-daily-news --save\r
\r
现插件已被 Hexo官方收录,你可也在 Hexo 插件列表里查看 \r
<img src="./wp-content/uploads/2026/07/1778491846481_670fbe7a0a118.png" alt="image-20240625182035596" loading="lazy" />
\r
