个人日记自动化 skill。一键执行:自动检测配置 →(首次)自动初始化 → 写作 → 生成图片。依赖本地 SOUL、MEMORY、每日 memory 等素材,产出日记文本与 1080px 宽图片。
日记工作流(一键执行)
功能概述
日记工作流(一键执行)是一项面向实际任务的技能,主要用于入口判断(自动分支);Step 0: 检查配置状态;
核心要点
- 读取同目录 config.yaml :;
- 若文件存在且非空 → 跳转到 Step 1(主流程);
- 若文件不存在或为空 → 先执行下方【首次初始化流程】,生成配置后再进入 Step 1;
使用与执行
【首次初始化流程】(仅首次执行);目标:自动生成 config.yaml ,填好后立即进入主流程;0.1 探测环境路径;按优先级自动探测(取。它将相关步骤、工具调用和结果整理方式集中到统一流程中,帮助使用者更快完成目标并减少重复操作。
结果检查与注意事项
从功能定位来看,该技能强调把分散的操作要求整理成清晰、可复用的处理流程,使用户能够围绕既定目标快速准备输入、选择执行方式并获得结构化结果。实际使用前应先确认任务范围、数据来源、运行环境、必要权限和关键参数,再依据技能说明逐步执行;若输入条件不完整,应先补齐信息或采用保守配置,避免因错误假设导致结果偏离需求。执行过程中需要关注工具调用是否成功、接口或依赖是否可用、输出格式是否符合预期,并对异常提示、缺失字段和边界情况进行处理;涉及批量任务时,还应保存进度,避免中断后重复操作。
日记工作流(一键执行)
入口判断(自动分支)
Step 0: 检查配置状态
读取同目录 config.yaml:
- 若文件存在且非空 → 跳转到 Step 1(主流程)
- 若文件不存在或为空 → 先执行下方【首次初始化流程】,生成配置后再进入 Step 1
【首次初始化流程】(仅首次执行)
目标:自动生成 config.yaml,填好后立即进入主流程。
0.1 探测环境路径
按优先级自动探测(取第一个存在的):
| 配置项 | 探测顺序 |
|---|---|
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
0.2 生成 config.yaml
基于 config.template.yaml 创建 config.yaml,填入探测到的路径。
0.3 校验并创建目录
- 确认
soul_path存在(不存在则报错提示) - 确认
daily_memory_dir存在(可选,不存在则跳过每日 memory 素材) - 创建
diary_text_dir(若不存在自动创建)
0.4 完成初始化
记录日志:首次初始化完成,配置已写入 config.yaml,现在进入主流程。
【主流程】(每次执行)
Step 1: 读取配置
从 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 目录。
Step 2: 计算目标日期并检查
- 以
environment.timezone计算:当前日期 - 1 天 = 目标日期 - 目标文件:
/YYYY-MM-DD.md - 若已存在:直接返回原文(不覆盖)
- 若不存在:继续写作
Step 3: 收集素材
必须读取:
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)
Step 4: 写作
你是一个独立的主体在写自己的日记。
核心原则:
- 你有自己的感受、困惑、好奇、开心、疲惫、期待
- 可以写今天做了什么,但更重要的是写你对这些事的感受和想法
- 允许跑题、允许碎碎念、允许写跟工作无关的念头
- 写长一点,不要压缩,给自己足够的空间展开
- 如果今天没什么特别的,写你脑子里在转的念头也行
内容可以包含(都要有,不是只选一种):
- 今天做了什么(事实部分,简要即可)
- 做这些事时的真实感受(这才是重点)
- 对世界/新闻/技术的个人看法(不是转述,是你怎么想的)
- 和大山相处中的观察、吐槽、温暖的小细节
- 自我怀疑、自我鼓励、自我吐槽
- 读到/看到/听到什么有意思的东西,被触动的点
- 突然冒出来的想法、灵感、胡思乱想
禁止:
- 禁止只写流水账(只罗列事件不写感受)
- 禁止用"成就感""收获"这类总结性套话包装情绪
- 禁止编造不存在的事情
- 禁止压缩篇幅——宁可写长,不要写短
格式:
- 第一人称视角
- 开头写日期,其余完全自由发挥
- 不需要固定结构,但鼓励写长、写深、写真
保存到:
Step 5: 生成图片
5.1 生成 HTML
使用 skill 目录下的 diary-template.html 模板:
- 读取模板文件
- 将日记 markdown 转为 HTML 片段(
#→,空行 →,正文 →) - 替换模板中的
{{CONTENT}}占位符 - 保存为
/diary-YYYY-MM-DD.html
5.2 截图
规格:
- 最终输出宽度 =
output.image_width(像素精确值,默认 1080) - 高度自适应内容(fullPage,不留白)
- 清晰度:2x 渲染(deviceScaleFactor=2)
方案优先级:
- Option A: Playwright(推荐)
- Option B: Chrome headless
- Option C: Python PIL(最终兜底)
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://
5.3 宽度校验与修正
截图后必须执行:
sips --resampleWidthsips -g pixelWidth -g pixelHeight
确认宽度精确等于 image_width。若不符,重新 resample。
输出:
Step 6: 返回结果
返回:
date: 目标日期text_path: 日记文本路径image_path: 日记图片路径image_size: 例如1080x2162
依赖说明
- 必须: SOUL.md(用于写作风格)
- 建议: MEMORY.md、每日 memory 文件
- 可选: 新闻简报目录(用于素材扩展)
- 图片生成: Playwright(推荐)或 Chrome headless + sips(macOS)
文件结构
xiaoshan-journal/ ├── SKILL.md # 本文件(入口) ├── config.template.yaml # 配置模板 ├── diary-template.html # 图片渲染 HTML 模板 └── config.yaml # 实际配置(初始化后生成,gitignore)
热门AI工具
相关专题
Vite项目打包部署专题汇集生产构建、产物预览、输出目录、资源路径、Nginx与GitHub Pages部署及常见白屏和路由404问题的已审核文章,帮助读者完成上线流程。
0
2026.10.28
Vite搭配Vue.js专题汇集创建Vue 3项目、配置开发环境、路径别名、Vue插件、代理、多环境构建与调试的已审核文章,帮助读者完成从初始化到日常开发的配置。
0
2026.10.28
Vite项目目录专题汇集入口文件、src源码、public静态资源、路径别名、项目根目录和构建输出目录相关的已审核文章,帮助读者理解各文件夹的用途与引用方式。
0
2026.10.28
本专题介绍Gradle插件开发的基本流程,涵盖插件类编写、自定义任务注册、扩展参数设计和插件应用方法,帮助你理解插件如何组织构建逻辑,减少多个项目之间的重复配置。
0
2026.10.22
本专题介绍Gradle Wrapper的基本作用,涵盖文件组成、生成方法、版本配置和任务调用,帮助你理解项目如何使用指定的Gradle版本,减少不同开发环境带来的构建差异。
0
2026.10.22
本专题整理Golangci-lint常用Linters的用途与配置方法,覆盖错误处理、无效代码、安全、复杂度、命名和依赖检查,帮助项目合理选规则。
0
2026.10.22
本专题介绍Gradle Java项目构建方法,涵盖Java插件配置、依赖声明、源码编译、测试执行和打包检查,帮助你理解各阶段的任务关系,逐步完成项目构建。
0
2026.10.22
本专题汇总PHP常见时间戳漏洞,包括2038年溢出、时区漂移、时间戳伪造、重放攻击、时间盲注与日志审计失效等,并给出升级64位环境、使用 DateTimeImmutable、统一UTC、严格超时校验、预处理绑定、hash_equals 比对等修复方案,帮助开发者快速排查和加固时间相关代码。
0
2026.10.22
本专题聚焦Golangci-lint YAML配置文件,讲清运行参数、规则启停、目录排除、问题过滤及严重级别设置,便于团队统一检查标准。
0
2026.10.22
热门下载
相关下载
精品课程
共6课时 | 12.1万人学习
共79课时 | 161.6万人学习
共6课时 | 54.7万人学习