自动打卡 Serverless 程序,支持 GitHub Actions 自动执行。
- ✅ 支持 GitHub Actions 自动执行
- ✅ 自动判断工作日(考虑中国节假日)
- ✅ 根据时间自动判断打卡类型(上班卡/下班卡)
- ✅ 支持通过环境变量配置 URL、TOKEN 和 APP_VERSION_NUMBER
- ✅ 上班卡时间:工作日北京时间上午 7:00-8:00
- ✅ 下班卡时间:工作日北京时间下午 18:00-22:00
- ✅ 支持打卡结果推送到飞书机器人
- ✅ 支持使用 LLM 生成有情绪价值的打卡消息
需要在 GitHub Actions Secrets 中配置以下环境变量:
变量名 | 描述 | 默认值 |
---|---|---|
PUNCH_URL | 打卡接口URL | https://example.com/api/attendance/app/attendance/punchCard |
PUNCH_TOKEN | 认证Token | 无默认值(必须配置) |
APP_VERSION_NUMBER | 应用版本号 | 3 |
FEISHU_BOT_WEBHOOK | 飞书机器人Webhook (可选) | 无 |
ZHIPU_API_KEY | 智谱AI API Key (可选) | 无 |
-
Fork 本项目到你的 GitHub 账户
-
进入项目 Settings > Secrets and variables > Actions
-
添加以下 Secrets:
PUNCH_TOKEN
: 你的认证 TokenPUNCH_URL
: (可选) 打卡接口 URLAPP_VERSION_NUMBER
: (可选) 应用版本号FEISHU_BOT_WEBHOOK
: (可选) 飞书机器人 Webhook URLZHIPU_API_KEY
: (可选) 智谱AI API Key
-
工作流会根据以下时间自动执行:
- 上班卡:工作日上午 7:05 (UTC+8)
- 下班卡:工作日下午 18:05 (UTC+8)
⏰ 时间说明: 由于 GitHub Actions 使用 UTC 时间,而我们的需求是北京时间,因此:
- 上班卡时间 (北京时间 7:05) 对应 UTC 时间前一天 23:05
- 下班卡时间 (北京时间 18:05) 对应 UTC 时间 10:05
更多关于 cron 调度的详细信息,请查看 CRON_SCHEDULE.md 文件。
- 在飞书群聊中添加自定义机器人
- 复制机器人的 Webhook 地址
- 将 Webhook 地址添加到 GitHub Secrets 中,变量名为
FEISHU_BOT_WEBHOOK
- 打卡结果将自动推送到飞书群聊中
本项目支持使用智谱AI的免费 glm-4.5-flash 模型为打卡消息提供情绪价值:
- 访问 智谱AI开放平台 并注册账号
- 在 API Keys 管理页面创建 API Key
- 将 API Key 添加到 GitHub Secrets 中,变量名为
ZHIPU_API_KEY
- 打卡消息将使用 LLM 生成更加温馨和有情绪价值的内容
-
克隆项目:
git clone https://github.com/your-username/auto-punch-serverless.git
-
安装依赖:
npm install
-
配置环境变量:
export PUNCH_TOKEN="your_token_here" export PUNCH_URL="https://example.com/api/attendance/app/attendance/punchCard" export APP_VERSION_NUMBER="3" export FEISHU_BOT_WEBHOOK="your_feishu_webhook_here" # 可选 export ZHIPU_API_KEY="your_zhipu_api_key_here" # 可选
-
运行程序:
node index.js
- 请确保 Token 的有效性
- 程序会自动判断是否为工作日(使用公共节假日 API)
- 只在指定时间范围内执行打卡操作
- 打卡位置固定为广东省广州市天河区华景路1号
- 如需修改打卡位置,请修改源代码中的经纬度和地址信息
- 飞书机器人推送为可选功能,如不配置
FEISHU_BOT_WEBHOOK
环境变量则不会推送消息 - LLM 消息生成功能为可选功能,如不配置
ZHIPU_API_KEY
环境变量则使用默认消息格式
本项目采用 GNU General Public License v3.0 许可证。
GPL-3.0