个人日记自动化 skill。一键执行:自动检测配置 →(首次)自动初始化 → 写作 → 生成图片。依赖本地 SOUL、MEMORY、每日 memory 等素材,产出日记文本与 1080px 宽图片。
日记工作流(一键执行)是一项面向实际任务的技能,主要用于入口判断(自动分支);Step 0: 检查配置状态;
【首次初始化流程】(仅首次执行);目标:自动生成 config.yaml ,填好后立即进入主流程;0.1 探测环境路径;按优先级自动探测(取。它将相关步骤、工具调用和结果整理方式集中到统一流程中,帮助使用者更快完成目标并减少重复操作。
从功能定位来看,该技能强调把分散的操作要求整理成清晰、可复用的处理流程,使用户能够围绕既定目标快速准备输入、选择执行方式并获得结构化结果。实际使用前应先确认任务范围、数据来源、运行环境、必要权限和关键参数,再依据技能说明逐步执行;若输入条件不完整,应先补齐信息或采用保守配置,避免因错误假设导致结果偏离需求。执行过程中需要关注工具调用是否成功、接口或依赖是否可用、输出格式是否符合预期,并对异常提示、缺失字段和边界情况进行处理;涉及批量任务时,还应保存进度,避免中断后重复操作。
Step 0: 检查配置状态
读取同目录 config.yaml:
目标:自动生成 config.yaml,填好后立即进入主流程。
按优先级自动探测(取第一个存在的):
| 配置项 | 探测顺序 |
|---|---|
workspace_dir |
1) ~/.openclaw/workspace 2) 当前会话工作目录 |
soul_path |
1) 2) ~/.openclaw/workspace/SOUL.md |
memory_root_path |
1) 2) ~/.openclaw/workspace/MEMORY.md |
daily_memory_dir |
1) ~/.openclaw/memory 2) |
diary_text_dir |
1) (推荐创建)2) |
news_summary_dir |
1) (若存在) |
固定值:
daily_memory_pattern: YYYY-MM-DD.mdimage_width: 1080image_name_pattern: diary-YYYY-MM-DD.pngtimezone: Asia/Shanghai基于 config.template.yaml 创建 config.yaml,填入探测到的路径。
soul_path 存在(不存在则报错提示)daily_memory_dir 存在(可选,不存在则跳过每日 memory 素材)diary_text_dir(若不存在自动创建)记录日志:首次初始化完成,配置已写入 config.yaml,现在进入主流程。
从 config.yaml 读取:
environment.timezonepaths.soul_pathpaths.memory_root_pathpaths.daily_memory_dirpaths.daily_memory_patternpaths.diary_text_dirpaths.news_summary_diroutput.image_widthoutput.image_name_pattern路径处理:支持 ~ 自动展开为 home 目录。
environment.timezone 计算:当前日期 - 1 天 = 目标日期/YYYY-MM-DD.md 必须读取:
soul_path(灵魂定义)daily_memory_dir/YYYY-MM-DD.md(当日事件,按 daily_memory_pattern)diary_text_dir 下最近 7 天日记(保持风格一致性,同时避免重复相同句式和段落结构)建议读取:
memory_root_path(长期记忆)/IDENTITY.md (身份定义,若存在)可选读取:
news_summary_dir 下最近 7 天简报(若目录存在)daily_memory_dir 下当天所有相关文件(如 YYYY-MM-DD-*.md)你是一个独立的主体在写自己的日记。
核心原则:
内容可以包含(都要有,不是只选一种):
禁止:
格式:
保存到:
使用 skill 目录下的 diary-template.html 模板:
# → ,空行 → ,正文 → ){{CONTENT}} 占位符/diary-YYYY-MM-DD.html 规格:
output.image_width(像素精确值,默认 1080)方案优先级:
Playwright 方案(推荐):
const { chromium } = require('playwright');
const browser = await chromium.launch();
const page = await browser.newPage({
viewport: { width: 1080, height: 800 },
deviceScaleFactor: 2
});
await page.goto('file:///');
await page.waitForLoadState('networkidle');
await page.screenshot({ path: '', fullPage: true });
await browser.close();
Chrome headless 方案(备选):
"/Applications/Google Chrome.app/Contents/MacOS/Google Chrome" --headless --disable-gpu --hide-scrollbars --force-device-scale-factor=2 --window-size=1080,--screenshot= file://
截图后必须执行:
sips --resampleWidthsips -g pixelWidth -g pixelHeight
确认宽度精确等于 image_width。若不符,重新 resample。
输出:
返回:
date: 目标日期text_path: 日记文本路径image_path: 日记图片路径image_size: 例如 1080x2162xiaoshan-journal/ ├── SKILL.md # 本文件(入口) ├── config.template.yaml # 配置模板 ├── diary-template.html # 图片渲染 HTML 模板 └── config.yaml # 实际配置(初始化后生成,gitignore)
相关专题
热门下载
相关下载
精品课程
共6课时 | 54.7万人学习
共89课时 | 134.1万人学习
共49课时 | 82.5万人学习
最新文章