博客地址
[网站demo]
放个图在这吧 

前言
相信很多MJJ和我一样,因为平时没时间关注鸡圈,导致经常错过一些关键的时间节点,比如传家宝的续费,黑五抢购,一些限时的优惠,因此,我开发了这一款MJJ提醒工具,无需服务器,还是薅我们的赛博活佛——cloudflare的羊毛,为了避免网站沉寂不工作,我们使用监控工具 cron-job.org Console 进行定时触发。
灵感来自 woniu336大佬 的已有项目 MJJ订阅追踪,但是大佬的项目提醒和部署在服务器上不适合我,所以自建了一个
正文
下面就开始搭建吧
项目地址
准备工具
- Cloudflare 账号
- Cloudflare Pages
- Cloudflare D1 数据库
- Telegram Bot Token 和 Chat ID
- 企业微信 Webhook 地址
数据库
在 Cloudflare Workers 中创建 D1 数据库
然后在控制台执行查询命令
CREATE TABLE reminders (
id TEXT PRIMARY KEY,
title TEXT NOT NULL,
content TEXT NOT NULL,
remind_time TEXT NOT NULL,
cycle_type TEXT NOT NULL,
status INTEGER DEFAULT 0,
link TEXT,
cron_job_id INTEGER,
created_at TEXT
);

部署步骤
注册并且获取cron-job.org Console的api key只能创建一个,但是可以随时修改

- fork项目,1143520/deadline 或者下载源码,git上传
- 在 Cloudflare Pages 中创建 pages 新项目
- 连接您的 Git 仓库(GitHub、GitLab 等)
- 在 Pages 项目设置中:
- 绑定 D1 数据库,设置变量为
DB - 配置环境变量(见环境变量配置部分)
- 绑定 D1 数据库,设置变量为
-
CRON_SECRET: 定时任务的访问密钥(按照个人喜好设置) -
CRONJOB_API_KEY: cron-job.org 的 API KEY -
PASSWORD: 防止面板被随意查看(可选)(自定义密码) -
TG_BOT_TOKEN: Telegram Bot Token(推送到tg机器人)(这个应该都会吧)(必须至少设置一个通知,否则网站无法访问) -
TG_CHAT_ID: Telegram Chat ID -
WECOM_KEY: 企业微信 Webhook 地址(完整的url,推送到微信企业机器人,可选)(这个也可以网上找教程) -
BARK_KEY: bark提醒(可选)(来自论坛) -
FEISHU_KEY: 飞书提醒(可选)(来自提交代码) -
DINGTALK_KEY: 钉钉提醒(可选)(来自提交代码) -
其他通知渠道可以在deadline/functions/api/notify.js at main · 1143520/deadline自行设置 类似 if (env.BARK_KEY) {} 结构清晰
还有更多提醒方式欢迎提交代码
设置完成后重试部署
使用
网站界面

添加任务
注意,提醒时间不能在3min之内,否则会跳过第一次提醒
可选:
- 单次提醒:只提醒一次
- 每周循环:在指定的每周某一天重复提醒
- 每月循环:在每月的指定日期重复提醒
- 每年循环:在每年的指定日期重复提醒
【如果你还不满意,可以到cron-job.org Console自行编辑,除了单次任务会自动删除,其他的可以循环触发】


注意单次任务执行完成之后会自动删除任务,下面以周循环为例
点击任务的编辑可以看到下一次执行时间,实际上是循环的,只显示最近5个

提醒消息样式


总结
使用pages构建,js后端处理,引入外部定时任务cron-job.org Console 定时触发任务,避免轮询造成免费额度的浪费,和保持提醒的可靠性,请勿泄露API KEY!
使用 cron-job.org 的免费计划有以下限制:
- 最多创建 50 个定时任务
- 最短执行间隔为 1 分钟
- 每个任务的超时时间为 30 秒
- 每月可执行 10,000 次
- 每个任务最多可以设置 100 个不同的执行时间点
删除按钮是同时删除cron的定时任务和数据库,没有备份
欢迎点赞给鸡腿哦😚

nb 插眼了
谢谢,这下不会忘了
@dilidili #106 有一个前端验证防一下小学生,设置PASSWORD变量,你不泄露域名一般没有什么问题,因为需要cron定时发送get请求,你编辑定时任务的域名不能限的太死,我是直接在WAF里面把自己的ip和cron的ip放行的,因为cron的ip是变的,我根据事件大致推测是在德国,所以就直接放行了德国
主机名就是你的自定义域名和cloudflare分配给你的域名