单向历
v1.0.0每日单向历图片发送工具。自动获取当天日期,构造图片 URL,并通过飞书发送单向历图片。支持配置向导和定时任务。
Security Scan
OpenClaw
Suspicious
medium confidencePurpose & Capability
技能名、描述、SKILL.md 与代码(setup.js / send.js)一致:构造单向历图片 URL 并通过 openclaw CLI 将图片发送到飞书用户 ID。所需能力(openclaw 可用且已配置飞书渠道)与实现相符。
Instruction Scope
运行说明仅要求启动配置向导、运行发送脚本或通过 openclaw 添加定时任务,未要求读取系统中其它敏感路径或环境变量。需注意:指令依赖 openclaw 日志/CLI 来发现并发送消息,这隐含该 agent 环境已配置飞书渠道并拥有发送消息的权限。
Install Mechanism
无安装规范(instruction-only + 附带脚本),不会在安装阶段下载或执行远端二进制,风险较低。
Credentials
不要求任何环境变量或外部凭据;仅在本地写入/读取 skill 目录下的 config.json(包含飞书 userId)。这与技能用途相称。不过实际发送依赖 OpenClaw 已配置的飞书通道,该凭据不由此技能管理。
Persistence & Privilege
技能不强制常驻(always:false),也不修改其它技能配置,但 send.js 和 setup.js 使用 child_process.execSync 拼接并执行 shell 命令:send.js 将 userId 直接插入 --target 参数且未进行充分转义/引用(userId 只做 startsWith('ou_') 校验)。若 config.json 被篡改或输入包含特殊字符,存在命令注入风险。建议对外部值进行严格校验或使用安全 API(避免 shell 拼接)。
What to consider before installing
这个技能实现与你看到的说明一致:它在本地生成 config.json(包含飞书 userId),构造当天图片 URL,然后使用 openclaw CLI 发消息。主要风险不是隐藏后门,而是代码在执行 shell 命令时直接拼接了来自 config.json 的值(尤其是 userId),如果该文件被篡改或你输入了恶意字符串,可能导致命令被注入并执行。建议在安装/运行前:
- 检查 config.json 内容并仅填写可信的 ou_ 开头 userId;不要把不明字符粘贴进去。\
- 临时把技能放在隔离会话/用户下运行,避免以高权限执行脚本。\
- 修补 send.js:在构造命令时为所有外部输入加上严格的引用或直接使用无 shell 的 spawn API(传数组参数),例如不把 userId 放到未经转义的字符串里。\
- 确认你的 OpenClaw/飞书通道凭据只授权发送消息,不授予多余权限。\
如果你 want,我可以给出一个更安全的 send.js 改写示例,移除命令拼接并用 child_process.spawn/execFile 或直接调用 OpenClaw/飞书 API 来降低注入风险。Like a lobster shell, security has layers — review code before you run it.
latest
One Calendar - 单向历
📅 一天,一张图,一份日历的温度。
快速开始
1. 配置
cd ~/.openclaw/workspace/skills/one-calendar
node scripts/setup.js
向导会引导你输入飞书用户 ID 并保存配置。
2. 使用
手动发送:
node scripts/send.js
对话触发:
单向历
今日单向历
发单向历
定时任务(每天早上 8 点):
openclaw cron add \
--name "每日单向历" \
--at "0 8 * * *" \
--session isolated \
--message "node ~/.openclaw/workspace/skills/one-calendar/scripts/send.js" \
--workdir ~/.openclaw/workspace
配置说明
配置文件:config.json(由 setup.js 生成)
{
"feishu": {
"userId": "ou_xxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
},
"settings": {
"timezone": "Asia/Shanghai",
"baseUrl": "https://img.owspace.com/Public/uploads/Download"
}
}
获取飞书用户 ID:运行 openclaw logs --follow,然后在飞书中给机器人发消息,日志中 ou_ 开头的字符串即为你的 ID。
文件结构
one-calendar/
├── config.example.json # 配置模板
├── config.json # 用户配置(setup.js 生成)
├── SKILL.md # 技能定义
├── README.md # 详细文档
└── scripts/
├── send.js # 发送脚本
└── setup.js # 配置向导
注意事项
- 首次使用请先运行
node scripts/setup.js - 飞书用户 ID 必须以
ou_开头 - 图片源为单向历官方服务器,格式:
{YEAR}/{MMDD}.jpg
Comments
Loading comments...
