同步配置
This commit is contained in:
@@ -1 +1 @@
|
||||
{"schema":"openclaw.skill-workshop.proposals-manifest.v1","updatedAt":"2026-07-09T09:56:20.877Z","proposals":[{"id":"dianping-review-20260611-d402abec10","kind":"create","status":"applied","title":"Create dianping-review","description":"通过大众点评搜索查询餐厅、老店、美食推荐和评论","skillName":"dianping-review","skillKey":"dianping-review","createdAt":"2026-06-11T23:50:15.731Z","updatedAt":"2026-07-09T09:56:20.865Z","scanState":"clean"},{"id":"calibre-cleaner-20260624-0fc374efd7","kind":"update","status":"applied","title":"Update calibre-cleaner","description":"清洗 Calibre 书库:修复损坏书名/提取作者/检测编码损坏、小文件的批量删除","skillName":"calibre-cleaner","skillKey":"calibre-cleaner","createdAt":"2026-06-24T03:23:27.062Z","updatedAt":"2026-07-09T09:56:20.404Z","scanState":"clean"},{"id":"jellyfin-nfo-builder-20260701-6434352e0d","kind":"create","status":"applied","title":"Create jellyfin-nfo-builder","description":"为剧集整理统一文件名、生成缺失的 Jellyfin .nfo 剧集元数据","skillName":"jellyfin-nfo-builder","skillKey":"jellyfin-nfo-builder","createdAt":"2026-07-01T23:52:24.406Z","updatedAt":"2026-07-09T09:56:19.928Z","scanState":"clean"},{"id":"jav-media-sorter-20260707-b1f90c8a4d","kind":"create","status":"applied","title":"Create jav-media-sorter","description":"JAV 视频整理:组装文件、按演员分组、刮削 nfo 元数据与封面图","skillName":"jav-media-sorter","skillKey":"jav-media-sorter","createdAt":"2026-07-07T12:14:43.074Z","updatedAt":"2026-07-09T09:56:18.413Z","scanState":"clean"},{"id":"f-download-sorter-20260706-902cc0d5aa","kind":"create","status":"applied","title":"Create f-download-sorter","description":"整理 /mnt/f 下下载的视频文件:扫描→清垃圾→按规则归档到7个大类目录","skillName":"f-download-sorter","skillKey":"f-download-sorter","createdAt":"2026-07-06T09:03:54.941Z","updatedAt":"2026-07-06T09:04:18.513Z","scanState":"clean"},{"id":"weekly-report-g5-20260626-7595273f1d","kind":"create","status":"applied","title":"Create weekly-report-g5","description":"维云智造G5周报生成:整理每日工作→多段邮件(纯文本+HTML含签名图)→存入钉邮草稿箱","skillName":"weekly-report-g5","skillKey":"weekly-report-g5","createdAt":"2026-06-26T00:46:22.478Z","updatedAt":"2026-06-26T00:46:35.812Z","scanState":"clean"},{"id":"calibre-cleaner-20260624-cdbeb219a3","kind":"update","status":"applied","title":"Update calibre-cleaner","description":"清洗 Calibre 书库:修复损坏书名/提取作者/检测编码损坏、小文件的批量删除","skillName":"calibre-cleaner","skillKey":"calibre-cleaner","createdAt":"2026-06-24T03:03:28.166Z","updatedAt":"2026-06-24T03:03:30.915Z","scanState":"clean"},{"id":"calibre-cleaner-20260624-a441798af9","kind":"create","status":"applied","title":"Create calibre-cleaner","description":"清洗 Calibre 书库:修复损坏书名/提取作者/检测编码损坏、小文件的批量删除","skillName":"calibre-cleaner","skillKey":"calibre-cleaner","createdAt":"2026-06-24T02:29:02.278Z","updatedAt":"2026-06-24T02:29:27.227Z","scanState":"clean"},{"id":"calibre-title-cleaner-20260624-3760b64e8b","kind":"create","status":"applied","title":"Create calibre-title-cleaner","description":"清洗 Calibre 书库中损坏的 txt 文档书名(HTML标签/长文本/乱码/路径超限修复)","skillName":"calibre-title-cleaner","skillKey":"calibre-title-cleaner","createdAt":"2026-06-24T01:10:56.296Z","updatedAt":"2026-06-24T01:13:39.670Z","scanState":"clean"}]}
|
||||
{"schema":"openclaw.skill-workshop.proposals-manifest.v1","updatedAt":"2026-07-31T02:09:58.941Z","proposals":[{"id":"weekly-report-dingtalk-draft-20260731-610f0943bc","kind":"create","status":"applied","title":"Create weekly-report-dingtalk-draft","description":"生成项目周报草稿存入钉邮草稿箱(仅草稿禁发)。固化杨轩周报标准格式/签名/收件抄送。","skillName":"weekly-report-dingtalk-draft","skillKey":"weekly-report-dingtalk-draft","createdAt":"2026-07-31T02:07:55.496Z","updatedAt":"2026-07-31T02:09:58.896Z","scanState":"clean"},{"id":"dianping-review-20260611-d402abec10","kind":"create","status":"applied","title":"Create dianping-review","description":"通过大众点评搜索查询餐厅、老店、美食推荐和评论","skillName":"dianping-review","skillKey":"dianping-review","createdAt":"2026-06-11T23:50:15.731Z","updatedAt":"2026-07-09T09:56:20.865Z","scanState":"clean"},{"id":"calibre-cleaner-20260624-0fc374efd7","kind":"update","status":"applied","title":"Update calibre-cleaner","description":"清洗 Calibre 书库:修复损坏书名/提取作者/检测编码损坏、小文件的批量删除","skillName":"calibre-cleaner","skillKey":"calibre-cleaner","createdAt":"2026-06-24T03:23:27.062Z","updatedAt":"2026-07-09T09:56:20.404Z","scanState":"clean"},{"id":"jellyfin-nfo-builder-20260701-6434352e0d","kind":"create","status":"applied","title":"Create jellyfin-nfo-builder","description":"为剧集整理统一文件名、生成缺失的 Jellyfin .nfo 剧集元数据","skillName":"jellyfin-nfo-builder","skillKey":"jellyfin-nfo-builder","createdAt":"2026-07-01T23:52:24.406Z","updatedAt":"2026-07-09T09:56:19.928Z","scanState":"clean"},{"id":"jav-media-sorter-20260707-b1f90c8a4d","kind":"create","status":"applied","title":"Create jav-media-sorter","description":"JAV 视频整理:组装文件、按演员分组、刮削 nfo 元数据与封面图","skillName":"jav-media-sorter","skillKey":"jav-media-sorter","createdAt":"2026-07-07T12:14:43.074Z","updatedAt":"2026-07-09T09:56:18.413Z","scanState":"clean"},{"id":"f-download-sorter-20260706-902cc0d5aa","kind":"create","status":"applied","title":"Create f-download-sorter","description":"整理 /mnt/f 下下载的视频文件:扫描→清垃圾→按规则归档到7个大类目录","skillName":"f-download-sorter","skillKey":"f-download-sorter","createdAt":"2026-07-06T09:03:54.941Z","updatedAt":"2026-07-06T09:04:18.513Z","scanState":"clean"},{"id":"weekly-report-g5-20260626-7595273f1d","kind":"create","status":"applied","title":"Create weekly-report-g5","description":"维云智造G5周报生成:整理每日工作→多段邮件(纯文本+HTML含签名图)→存入钉邮草稿箱","skillName":"weekly-report-g5","skillKey":"weekly-report-g5","createdAt":"2026-06-26T00:46:22.478Z","updatedAt":"2026-06-26T00:46:35.812Z","scanState":"clean"},{"id":"calibre-cleaner-20260624-cdbeb219a3","kind":"update","status":"applied","title":"Update calibre-cleaner","description":"清洗 Calibre 书库:修复损坏书名/提取作者/检测编码损坏、小文件的批量删除","skillName":"calibre-cleaner","skillKey":"calibre-cleaner","createdAt":"2026-06-24T03:03:28.166Z","updatedAt":"2026-06-24T03:03:30.915Z","scanState":"clean"},{"id":"calibre-cleaner-20260624-a441798af9","kind":"create","status":"applied","title":"Create calibre-cleaner","description":"清洗 Calibre 书库:修复损坏书名/提取作者/检测编码损坏、小文件的批量删除","skillName":"calibre-cleaner","skillKey":"calibre-cleaner","createdAt":"2026-06-24T02:29:02.278Z","updatedAt":"2026-06-24T02:29:27.227Z","scanState":"clean"},{"id":"calibre-title-cleaner-20260624-3760b64e8b","kind":"create","status":"applied","title":"Create calibre-title-cleaner","description":"清洗 Calibre 书库中损坏的 txt 文档书名(HTML标签/长文本/乱码/路径超限修复)","skillName":"calibre-title-cleaner","skillKey":"calibre-title-cleaner","createdAt":"2026-06-24T01:10:56.296Z","updatedAt":"2026-06-24T01:13:39.670Z","scanState":"clean"}]}
|
||||
|
||||
@@ -0,0 +1,93 @@
|
||||
---
|
||||
name: "weekly-report-dingtalk-draft"
|
||||
description: "生成项目周报草稿存入钉邮草稿箱(仅草稿禁发)。固化杨轩周报标准格式/签名/收件抄送。"
|
||||
status: proposal
|
||||
version: "v1"
|
||||
date: "2026-07-31T02:07:55.496Z"
|
||||
---
|
||||
|
||||
# 周报草稿生成技能(钉邮草稿箱)
|
||||
|
||||
## 用途
|
||||
为杨轩生成项目周报并保存到钉钉企业邮箱(钉邮)**草稿箱**,**禁止直接发送**(红线)。
|
||||
|
||||
## 发送渠道
|
||||
- **himalaya IMAP 存草稿不可用**(`feature not available`)——不要用它存草稿/send。
|
||||
- 使用 **Python imaplib + 钉邮 IMAP**:`imap.mxhichina.com:993`(SSL),账号密码从 himalaya 配置读取。
|
||||
- SMTP 可发不用;本技能**只存草稿**。
|
||||
- 草稿文件夹 IMAP 名(modified UTF7):`&g0l6Pw-`(即「草稿」)。可用 `m.list()` 复核。
|
||||
|
||||
## 凭据读取(不硬编码、不外泄)
|
||||
从 `/home/yangxuan/.config/himalaya/config.toml` 读取:
|
||||
`accounts.yangxuan."imap.sasl.plain.username"`、`"imap.sasl.plain.password.raw"`。
|
||||
用正则匹配键名取值;脚本里用变量引用,**不要把密码打印到日志/聊天**。
|
||||
|
||||
## 固定配置(每次执行仍须向用户确认)
|
||||
- 收件人:刘强 `<liuqiang@witsoft.cn>`
|
||||
- 抄送:陈明 `<chenm@witsoft.cn>`、曾莉 `<zengli@witsoft.cn>`(**不含吴睿东 wurd,已去除**)
|
||||
|
||||
## 主题格式
|
||||
半角括号 + 空格~空格,RFC2047 编码(整个主题做 base64):
|
||||
`Gx开发周报 (YYYY-MM-DD ~ YYYY-MM-DD)`
|
||||
示例:`G6开发周报 (2026-07-27 ~ 2026-07-31)`
|
||||
|
||||
## 正文结构(text/plain + text/html 双部分 multipart/alternative)
|
||||
```
|
||||
项目名称: 维云智造Gx
|
||||
主要任务: <简短短语>
|
||||
|
||||
本周工作内容
|
||||
周一(YYYY-MM-DD)
|
||||
- <条目>
|
||||
- <条目>
|
||||
周二(YYYY-MM-DD)
|
||||
- ...
|
||||
(周一到周五)
|
||||
|
||||
存在问题
|
||||
无
|
||||
|
||||
Best regards,
|
||||
杨轩
|
||||
地址:中国·南京云密城L栋5/10楼
|
||||
手机:18726128489
|
||||
邮箱:yangxuan@witsoft.cn
|
||||
```
|
||||
- HTML 用 `<b>` 加粗标题、` ` 空格、`<br >` 换行、条目 ` - `。
|
||||
- **签名含图片**(外链):`https://mail-online.nosdn.127.net/wzpmmc/65e8a1396c5c0dbb66cecd9792d4504b.jpg`,签名文字灰色(#bfbfbf, Microsoft Yahei 13px)。
|
||||
|
||||
## Header 编码(关键,易踩坑)
|
||||
RFC2047,**姓名单独编码成带引号 `"=?UTF-8?B?...?="`,邮箱明文**;不要把姓名+邮箱一起编码(会导致收件人重叠乱码)。
|
||||
```
|
||||
From: "=?UTF-8?B?5p2o6L2p?=" <yangxuan@witsoft.cn>
|
||||
To: "=?UTF-8?B?5YiY5by6?=" <liuqiang@witsoft.cn>
|
||||
Cc: "=?UTF-8?B?6ZmI5piO?=" <chenm@witsoft.cn>, "=?UTF-8?B?5pu+6I6J?=" <zengli@witsoft.cn>
|
||||
Subject: =?UTF-8?B?<base64(整个主题)>?=
|
||||
```
|
||||
人名 base64 速查:
|
||||
- 杨轩 `5p2o6L2p`、刘强 `5YiY5by6`、陈明 `6ZmI5piO`、曾莉 `5pu+6I6J`、吴睿东 `5ZC0552/5Lic`(勿用其抄送)
|
||||
|
||||
## 存草稿命令(Python)
|
||||
```python
|
||||
import imaplib, time, re, base64
|
||||
# 读取凭据 ...
|
||||
m = imaplib.IMAP4_SSL('imap.mxhichina.com', 993); m.login(USER, PASS)
|
||||
m.select(DRAFT)
|
||||
typ, data = m.search(None, 'ALL'); ids = data[0].split()
|
||||
if ids: # 先清空旧草稿再覆盖
|
||||
m.store(b','.join(ids), '+FLAGS', r'(\Deleted)'); m.expunge()
|
||||
m.append(DRAFT, None, imaplib.Time2Internaldate(time.time()), raw_eml_bytes)
|
||||
m.logout()
|
||||
```
|
||||
- 用 `EmailMessage`/`MIMEText` 组装,或字节级拼接 header + body(推荐字节级拼接避免库自动编码干扰 header)。
|
||||
|
||||
## 红线
|
||||
- **仅存草稿箱,禁止直接发送/`send`**。未获杨轩明确放行绝不执行 SMTP 发送。
|
||||
- 草稿进入草稿箱后,交付给杨轩到钉邮核对;杨轩放行后才允许发送。
|
||||
|
||||
## 工作流
|
||||
1. 收集本周(周一到周五)日报内容。
|
||||
2. 组装 plain + html,套用固定签名。
|
||||
3. 正确 RFC2047 header。
|
||||
4. imaplib APPEND 到草稿箱(先清旧草稿)。
|
||||
5. 回报草稿信息(主题/收件/抄送/有无签名)给杨轩,等放行。
|
||||
+1
@@ -0,0 +1 @@
|
||||
{"schema":"openclaw.skill-workshop.proposal.v1","id":"weekly-report-dingtalk-draft-20260731-610f0943bc","kind":"create","status":"applied","title":"Create weekly-report-dingtalk-draft","description":"生成项目周报草稿存入钉邮草稿箱(仅草稿禁发)。固化杨轩周报标准格式/签名/收件抄送。","createdAt":"2026-07-31T02:07:55.496Z","updatedAt":"2026-07-31T02:09:58.896Z","createdBy":"skill-workshop","origin":{"agentId":"main","sessionKey":"agent:main:openclaw-weixin:direct:o9cq80w6znnpgitw-ggackwd69ba@im.wechat","runId":"16559456-06ef-4d28-921b-40da704d8ae5","messageId":"openclaw-weixin:1785463647241-96c14cef"},"proposedVersion":"v1","draftFile":"PROPOSAL.md","draftHash":"7b8f70e32ea9f8779a96717cf930d7ee71e8d705999547ac82ff2e01d88029eb","target":{"skillName":"weekly-report-dingtalk-draft","skillKey":"weekly-report-dingtalk-draft","skillDir":"/home/yangxuan/.openclaw/workspace/skills/weekly-report-dingtalk-draft","skillFile":"/home/yangxuan/.openclaw/workspace/skills/weekly-report-dingtalk-draft/SKILL.md","source":"openclaw-workspace"},"scan":{"state":"clean","scannedAt":"2026-07-31T02:09:58.869Z","critical":0,"warn":0,"info":0,"findings":[]},"goal":"把本次验证通过的周报草稿生成流程固化为可复用技能,每周五自动复用正确的格式与编码,避免重蹈格式/编码踩坑。","appliedAt":"2026-07-31T02:09:58.896Z"}
|
||||
+1
@@ -0,0 +1 @@
|
||||
{"schema":"openclaw.skill-workshop.rollback.v1","proposalId":"weekly-report-dingtalk-draft-20260731-610f0943bc","writtenAt":"2026-07-31T02:09:58.873Z","targetSkillFile":"/home/yangxuan/.openclaw/workspace/skills/weekly-report-dingtalk-draft/SKILL.md","action":"create"}
|
||||
Reference in New Issue
Block a user