yuan1z0825/nature-skills已通过检查
SKILL DETAIL
nature-experiment-log
yuan1z0825/nature-skills/nature-experiment-log
nature-experiment-log 是一个用于标准化实验日志记录的技能。它支持通过直接上传、本地文件路径或飞书群消息获取实验原始材料(图片、语音、文字),并自动提取结构化信息,生成带有 YAML frontmatter 的 Markdown 日志文件。日志文件按体系、实验类型和实验 ID 组织,原始附件归档到指定目录。该技能可输出到普通本地文件夹,也可与 Obsidian vault 集成,利用 Dataview 插件实现实验数据的动态查询和仪表盘。 核心流程不要求安装飞书或 Obsidian。使用飞书群输入时,需要 bot 已加入目标群并具备相应权限。技能提供实验 ID 和样品批次 ID 的命名规则,以及设备代码表,便于追踪。对于模糊信息(如温度、样品编号),技能会主动询问用户,不猜测写入。此外,技能包含参考示例和模板,支持自定义体系代码、实验类型和 YAML 字段。
安装量 · 145查看来源
Installation
npx skills add https://github.com/yuan1z0825/nature-skills --skill nature-experiment-log
技能文件
SKILL.md
最近同步 · 2026年8月27日
agents/openai.yaml›
interface:
display_name: "Nature Experiment Log"
short_description: "Turn experiment notes and media into structured logs"
default_prompt: "Use $nature-experiment-log to turn these notes and media into a structured experiment log."
manifest.yaml›
name: nature-experiment-log
version: 1.0.2
description: >
Declarative manifest for the experiment-log workflow. SKILL.md uses this to
route raw images, voice transcripts, and text notes into standardized
Obsidian-compatible experiment records while loading examples and templates
only when they are needed.
# Design note: the core workflow is short and operational. The heavier example
# logs and vault templates are supporting resources and should stay on demand so
# routine logging does not preload every sample document.
always_load:
- SKILL.md
templates:
on_demand:
- condition: creating or refreshing the experiment index dashboard
path: templates/experiment-index.md
- condition: logging an anomaly, failed run, contamination, unexpected device behavior, or deviation from protocol
path: templates/anomaly-log.md
- condition: setting up shared equipment, reagent, or consumable tracking in the vault
path: templates/equipment-tracking.md
references:
on_demand:
- condition: user needs a complete corrosion, soaking, or general materials experiment log example
path: references/example-log.md
- condition: electrochemical characterization, CV, SWV, EIS, electrode setup, or electrochemical window logging
path: references/example-electrochemical.md
- condition: thermal stability, heating, furnace, muffle furnace, tube furnace, or temperature-program experiment logging
path: references/example-thermal-stability.md
README_EN.md›
# `nature-experiment-log` Skill
[中文说明](README.md)
`nature-experiment-log` turns experiment images, voice notes, text, and scattered observations into traceable structured experiment logs for Obsidian or plain Markdown workflows.
## Ways To Use It
- Upload images, audio, voice transcripts, or text directly in the current session.
- Provide a local file or folder path for the agent to read and organize.
- Optionally use `feishu-cli-integration` to retrieve messages and attachments from a Feishu group.
- Save the output to a normal local folder or an Obsidian vault; when no target directory is provided, return save-ready Markdown first.
## What To Use It For
- Turn a day's experiment record into a standard log with YAML frontmatter.
- Extract experiment elements from photos, microscopy images, weighing notes, instrument screenshots, or voice transcripts.
- Link samples, conditions, observations, anomalies, next actions, and raw attachments.
- Archive raw materials from Feishu, chat records, or CLI input into the same experiment-log format.
## Typical Requests
- "Record an experiment: 316L chloride-salt corrosion at 500°C for 300 h in Ar, mass loss 0.0032 g."
- "Turn these experiment photos into today's Obsidian lab log."
- "Use this voice transcript to create a standard experiment record and list missing information."
## What You Need To Provide
- Experiment date, sample, conditions, steps, observations, or raw attachments.
- Target vault / output directory; if not specified, the skill generates Markdown that can be saved.
- Required naming rules, project IDs, or sample IDs.
## Outputs
- Experiment log with YAML frontmatter.
- Attachment index for source images, audio, tables, or chat records.
- Missing-field checklist and suggested next experiment actions.
## Boundaries
- The skill does not invent temperature, duration, recipe, device model, or results.
- Unconfirmed information is preserved as `AUTHOR_INPUT_NEEDED` or Chinese confirmation items.
- The core workflow does not require Feishu or Obsidian. Their CLI, bot permissions, or vault access are needed only when those optional integrations are used.
## Related Skills
- `nature-data`: turn experiment data into Data Availability and FAIR checklists.
- `nature-figure`: turn experiment data or images into submission-grade figures.
README.md›
# `nature-experiment-log` 技能
[English](README_EN.md)
`nature-experiment-log` 用于把实验图片、语音、文字和零散观察整理成可追溯的结构化实验日志,并写入 Obsidian 或普通 Markdown 工作流。
## 使用方式
- 在当前会话直接上传图片、音频、语音转录或文字。
- 提供本地文件或文件夹路径,由 agent 读取并整理。
- 可选使用 `feishu-cli-integration` 从飞书群获取消息和附件。
- 输出可以保存到普通本地文件夹,也可以写入 Obsidian vault;未指定目录时,先返回可保存的 Markdown。
## 适合用它做什么
- 将当天实验记录整理成带 YAML frontmatter 的标准日志。
- 从照片、显微图、称量记录、仪器截图或语音转写中提取实验要素。
- 为样品、条件、观察、异常、下一步动作和原始附件建立稳定链接。
- 把飞书、聊天记录或 CLI 输入中的原始材料归档为同一套实验记录格式。
## 典型请求
- “记录一个实验:316L 在 500°C 氯盐腐蚀 300 h,Ar 气氛,失重 0.0032 g。”
- “把这几张实验照片整理成今天的 Obsidian 实验日志。”
- “根据这段语音转写补一条标准实验记录,并列出缺失信息。”
## 你需要提供
- 实验日期、样品、条件、处理步骤、观察结果或原始附件。
- 目标 vault / 输出目录;如果没有指定,技能会先生成可保存的 Markdown。
- 需要固定的命名规则、项目编号或样品编号。
## 产出
- 一条带 YAML frontmatter 的实验日志。
- 对原始图片、音频、表格或聊天记录的附件索引。
- 缺失字段清单和后续实验动作建议。
## 边界
- 不会替作者编造温度、时间、配比、设备型号或实验结果。
- 对无法从材料中确认的信息,会保留 `AUTHOR_INPUT_NEEDED` 或中文确认项。
- 核心流程不依赖飞书或 Obsidian;只有使用相应集成时,才需要本机 CLI、bot 权限或 vault 目录权限。
## 相关技能
- `nature-data`:把实验数据整理成投稿用 Data Availability 与 FAIR 清单。
- `nature-figure`:把实验数据或图像进一步做成投稿级图件。
references/example-electrochemical.md›
# 实验日志示例:电化学测试
以下是一个电化学表征实验的完整日志示例。所有数据均为虚构。
---
```yaml
---
exp_id: OX-E-260615-001
date: 2026-06-15
salt_system: 氧化物体系
salt_batch: OX-A1-B001
salt_composition: "*** (*** wt%)"
exp_type: 电化学
test_method: CV
working_electrode: Pt丝
counter_electrode: Pt网
reference_electrode: "Ag/Ag+ 准参比"
temperature: 500
atmosphere: Ar
potential_window_V: "-1.5 ~ +1.0"
scan_rate_mV_s: 50
evaluation_target: "检测体系电化学窗口及杂质氧化还原峰"
anomaly: false
anomaly_ref:
tags: [电化学, CV, 窗口测试]
---
# 实验目的
测定候选配方 A1 在 500°C 下的电化学窗口,确认是否适合后续腐蚀实验。同时检测是否存在杂质氧化还原峰。
# 实验步骤
1. 手套箱中配制 A1 盐 30g,转入刚玉坩埚
2. 马弗炉 300°C 干燥 2h(去除吸附水)
3. 转移至电化学测试台,Ar 气氛下升温至 500°C
4. 三电极体系:Pt 丝工作电极、Pt 网对电极、Ag/Ag+ 准参比
5. CV 扫描:-1.5V 至 +1.0V,扫速 50 mV/s
6. 记录 3 圈,取第 3 圈为稳态数据
# 观察
- 盐熔化后呈透明液体,无明显悬浮物
- CV 曲线在 -0.8V 和 +0.6V 处出现小峰(疑似杂质)
- 电极表面无可见腐蚀
# 结果
- 电化学窗口约 2.5V(-1.5 至 +1.0V),适合后续腐蚀实验
- 需进一步 EIS 确认体系稳定性
- 杂质峰需通过标准加入法确认来源
# 异常
无。
# 下一步
- EIS 长时间稳定性测试(100h)
- 标准加入法标定杂质峰对应的化学物种
- 与 A2、A3 候选配方对比窗口宽度
---
# 原始材料
原始图片和语音记录归档于:
`raw/experiments/2026.06.15_A1电化学窗口测试_OX-E-260615-001/`
- `图片/IMG_6151.jpg` — 三电极测试台布置
- `图片/IMG_6152.jpg` — CV 曲线截图
references/example-log.md›
# 实验日志示例
以下是一个材料腐蚀浸泡实验的完整日志示例。所有数据均为虚构,仅展示格式和填写规范。
---
```yaml
---
exp_id: CL-M-260529-001
date: 2026-05-29
salt_system: 氯盐
salt_batch: CL-Q1-B001
salt_composition: "Q1 (*** mol%)"
exp_type: 腐蚀验证
furnace: 马弗炉_1号
crucible: AL-001
total_salt_mass_g: 50.0
temperature_profile: "RT→300°C(2h,干燥)→500°C(300h)→炉冷"
atmosphere: Ar
material: 316L
material_category: 奥氏体不锈钢
sample_id: 316L-2026-001
sample_dimensions_mm: "20×10×2"
sample_surface: "SiC 1200目"
pre_mass_g: 3.4521
post_mass_g: 3.4489
mass_loss_g: 0.0032
corrosion_rate_um_year: ***
anomaly: false
anomaly_ref:
tags: [氯盐, 腐蚀验证, 316L, Q1]
---
# 实验目的
验证候选配方 Q1 在 500°C 下对 316L 奥氏体不锈钢的腐蚀行为,作为四元氯盐体系筛选的基线实验。
# 实验步骤
1. 配制 Q1 盐 50.0g,手套箱中混合均匀
2. 316L 样品 SiC 1200 目打磨,丙酮超声清洗,干燥称重
3. 马弗炉 Ar 气氛下 300°C 干燥 2h(去除吸附水)
4. 升温至 500°C,恒温 300h
5. 炉冷至室温,取出样品
6. 去离子水超声清洗,干燥称重
7. 计算失重和腐蚀速率
# 观察
- 盐冷却后呈浅黄色透明玻璃态,无明显分层
- 样品表面失去金属光泽,呈均匀暗灰色
- 坩埚内壁无可见腐蚀痕迹
- 未观察到异常气体释放或飞溅
# 结果
- 样品质量损失:0.0032 g(0.09%)
- 表面无明显局部腐蚀或点蚀
- 待 XRD 和 SEM-EDS 确认腐蚀产物组成
# 异常
无。
# 下一步
- SEM-EDS 截面分析确认腐蚀层结构和 Cr 贫化
- XRD 确认腐蚀产物相组成
- 与 Q2、Q3 候选配方平行实验对比
---
# 原始材料
原始图片和语音记录归档于:
`raw/experiments/2026.05.29_Q1腐蚀验证_316L_CL-M-260529-001/`
- `图片/IMG_5291.jpg` — 腐蚀前样品表面
- `图片/IMG_5292.jpg` — 腐蚀后样品表面
- `图片/IMG_5293.jpg` — 盐冷却后坩埚内部
references/example-thermal-stability.md›
# 实验日志示例:热稳定性测试
以下是一个热稳定性实验的完整日志示例。所有数据均为虚构。
---
```yaml
---
exp_id: HY-T-260601-001
date: 2026-06-01
salt_system: 混合盐体系
salt_batch: HY-B1-B001
salt_composition: "*** (*** wt%)"
exp_type: 热稳定性
furnace: 管式炉_1号
crucible: AL-005
total_salt_mass_g: 40.0
temperature_profile: "RT→200°C(4h,脱水)→500°C(8h)→700°C(2h)→炉冷"
atmosphere: "Ar (100 mL/min)"
condensate: "收集到 2.3g 无色液体"
absorption_solution: "0.1M NaOH 50mL"
anomaly: false
anomaly_ref:
tags: [热稳定性, 管式炉, Ar气氛]
---
# 实验目的
评估候选配方 B1 在 Ar 保护气氛下的热稳定性,确定高温段质量损失和分解产物。
# 实验步骤
1. 手套箱中配制 B1 盐 40.0g,转入刚玉坩埚
2. 管式炉 Ar 气氛(100 mL/min),200°C 干燥 4h(去除吸附水)
3. 升温至 500°C 恒温 8h,再升温至 700°C 恒温 2h
4. 出气口接冷凝管 + NaOH 吸收瓶
5. 各温度段取样记录,炉冷后称重
# 观察
- 200°C 段无明显变化
- 500°C 段冷凝管收集到 ~2.3g 无色液体(可能是结晶水或低沸点组分)
- 700°C 段盐颜色由白色变为浅黄,但未见明显分解
- 冷凝液 pH 约 6(弱酸性)
# 结果
- 总质量损失:11.5%(以原始质量计)
- 主要失重发生在 200-500°C 段(脱水),500-700°C 段失重仅 1.2%
- 残余盐 ICP-OES 分析显示组分比例无明显变化
- 热稳定性合格
# 异常
无。
# 下一步
- 对比 B2、B3 候选配方的热稳定性
- 延长 700°C 恒温时间至 24h 验证长期稳定性
- Karl Fischer 滴定定量残余水分
---
# 原始材料
`raw/experiments/2026.06.01_B1热稳定性_HY-T-260601-001/`
SKILL.md›
---
name: nature-experiment-log
description: "标准化实验日志记录——直接上传或读取本地图片、语音和文字,产出带 YAML frontmatter 的 Markdown;可选集成飞书 CLI 与 Obsidian。"
license: MIT
metadata:
author: Jiahao8595
hermes:
tags: [research, experiment, logging, feishu, obsidian, automation]
related_skills: [nature-literature-pipeline, feishu-cli-integration, obsidian]
---
# experiment-log — 实验日志标准化
## 输入方式
用户通过以下任一方式提交实验原始材料时自动加载:
- **直接上传** — 在当前会话提交图片、音频、语音转录或文字。
- **本地材料** — 提供本地文件或文件夹路径,由 agent 读取并整理。
- **飞书群** — 通过可选的 `feishu-cli-integration` 读取群消息和附件。
## 输出方式
- **本地 Markdown** — 将日志和原始附件保存到用户指定的普通本地文件夹;未指定目录时,先返回可保存的 Markdown,不擅自选择路径。
- **Obsidian vault** — 通过可选的 `obsidian` skill 写入 vault,并使用附带模板建立索引、异常记录和设备追踪。
核心流程不要求安装飞书或 Obsidian。使用飞书群输入时,才需要 bot 已加入目标群并具备 `im:message`、`im:message.group_msg` 和 `im:resource` 权限。
## 处理流程
1. 接收上传材料、读取本地文件,或从已配置的飞书群获取材料。
2. 通过 vision_analyze 和文本解析提取结构化信息。
3. 对缺失或模糊字段向用户确认,不猜测实验条件或结果。
4. 确认输出方式和目标目录,生成实验 ID 与样品批次 ID。
5. 写出 `{OUTPUT_ROOT}/实验日志/{体系}/{类型}/{exp_id}.md`。
6. 将原始附件归档到 `{OUTPUT_ROOT}/raw/experiments/YYYY.MM.DD_描述_EXPID/`,并在日志中建立引用。
7. 如启用索引模板,更新实验索引;发现异常时追加异常记录。
8. 告知用户生成文件及原始材料的具体位置。
模糊信息(温度记不清、样品编号不明)主动询问,不猜测写入。
## 目录结构
```
/vault/
├── raw/experiments/ ← 原始层(归档)
│ └── YYYY.MM.DD_描述_EXPID/
│ ├── 笔记.md
│ ├── 图片/
│ └── 语音/
│
wiki/实验日志/ ← 标准层(产出)
├── 实验索引.md
├── 异常记录.md
├── {体系A}/
│ ├── 实验类型1/
│ ├── 实验类型2/
│ └── ...
├── {体系B}/
│ └── ...
└── 公共/
└── 设备与试剂追踪.md
```
## 实验 ID 规则
```
{体系代码}-{设备代码}-YYMMDD-{序号}
│ │ │ └─ 当日序号(001 起)
│ │ └─ 日期
│ └─ 设备代码(M=马弗炉, T=管式炉, E=电化学, G=手套箱, F=可控气氛炉, B=通用)
└─ 体系代码(自定义,如 CL / NO / OX / HY 等)
```
## 样品批次 ID 规则
```
{体系代码}-{候选编号}-B{序号}
│ │ └─ 配盐批次序号
│ └─ 候选配方编号
└─ 体系代码
```
同一批样品跨多个实验时 `sample_batch` 保持一致,便于 dataview 追踪。
## 设备代码
| 代码 | 设备 | 场景 |
|------|------|------|
| M | 马弗炉 | 热处理、浸泡腐蚀 |
| T | 管式炉 | 气氛控制、脱水、热稳定性 |
| E | 电化学工作站 | CV/SWV/EIS |
| G | 手套箱 | 配盐、称量、取样 |
| F | 可控气氛炉 | 精密气氛控制 |
| B | 通用 | 干燥、清洗、制样 |
按实际设备扩展。
## 可选的 Obsidian 集成
本 skill 可以只向普通本地文件夹输出 Markdown,也可以与 [Obsidian](https://obsidian.md) vault 配合使用。Obsidian 是一个基于本地 Markdown 文件的笔记系统,配合 [Dataview](https://github.com/blacksmithgu/obsidian-dataview) 插件可实现实验数据的动态查询和仪表盘。
**为什么用 Obsidian:**
- 所有日志为纯文本 Markdown,可版本控制、可全文搜索
- YAML frontmatter 结构使 dataview 可自动生成实验列表、异常汇总、设备使用记录
- 本地存储,无云依赖性,数据安全
**安装 skill 后需在 vault 中创建以下文件:**
| 文件 | 模板 | 用途 |
|------|------|------|
| `实验日志/实验索引.md` | `templates/experiment-index.md` | Dataview 查询仪表盘 |
| `实验日志/异常记录.md` | `templates/anomaly-log.md` | 异常记录 |
| `实验日志/公共/设备与试剂追踪.md` | `templates/equipment-tracking.md` | 设备与试剂追踪 |
将模板文件复制到你的 Obsidian vault 对应位置即可使用。
## 参考示例
`references/` 目录包含三个完整的实验日志示例,覆盖常见实验类型:
| 文件 | 实验类型 |
|------|---------|
| `references/example-log.md` | 材料腐蚀浸泡实验 |
| `references/example-electrochemical.md` | 电化学表征(CV 窗口测试) |
| `references/example-thermal-stability.md` | 热稳定性实验 |
每个示例均包含完整的 YAML frontmatter 和 Markdown 正文,可直接作为模板修改使用。
## 可选的飞书 CLI 集成
需要从飞书群获取材料时,使用 `feishu-cli-integration` skill:
- 拉消息:`lark-cli im +chat-messages-list --chat-id oc_*** --page-size 30 --sort asc`
- 下载图片:`lark-cli im +messages-resources-download --message-id *** --file-key *** --type image --output <相对路径>`
- ⚠️ `--output` 只接受相对路径,先 `cd` 到 `raw/experiments/` 归档目录
群 ID 和 bot 权限按 `feishu-cli-integration` skill 的配置获取。
## 自定义指南
- **体系代码**:按你的实验体系自定义(如 CL/NO/OR/PO)
- **实验类型**:在 `wiki/实验日志/{体系}/` 下按需创建子目录
- **YAML 字段**:模板是建议结构,可增删字段
- **设备代码**:按实际实验室设备扩展
- **输出根目录**:可以是普通本地文件夹,也可以是 Obsidian vault 根目录
## 相关文件
| 文件 | 用途 |
|------|------|
| `references/example-log.md` | 完整实验日志示例 |
| `wiki/实验日志/实验索引.md` | Dataview 仪表盘 |
| `wiki/实验日志/异常记录.md` | 异常记录格式 |
| `wiki/实验日志/公共/设备与试剂追踪.md` | 设备、试剂追踪 |
templates/anomaly-log.md›
# 异常记录
记录实验过程中发现的所有异常,供后续质量控制和故障排查。
## 格式
```yaml
---
date: YYYY-MM-DD
related_exp: EXP-ID
anomaly_type: 设备故障 / 操作失误 / 结果异常 / 安全事件
severity: 低 / 中 / 高
status: 待处理 / 已处理 / 需复查
---
## 描述
[异常现象的客观描述]
## 影响
[对实验结果的影响评估]
## 处理
[已采取的措施]
## 备注
[后续建议]
```
## 使用
- 每次实验结束后检查是否有异常
- 有则追加记录到此文件
- 定期复查未处理异常
templates/equipment-tracking.md›
# 设备与试剂追踪
追踪实验室设备和试剂的编号、状态和维护记录。
## 设备
| 设备代码 | 名称 | 型号 | 编号 | 状态 | 上次校准 | 备注 |
|---------|------|------|------|------|---------|------|
| M1 | 马弗炉 | — | — | 正常 | — | |
| T1 | 管式炉 | — | — | 正常 | — | |
| E1 | 电化学工作站 | — | — | 正常 | — | |
## 坩埚
| 编号 | 材质 | 容量 | 使用次数 | 状态 | 备注 |
|------|------|------|:---:|------|------|
| AL-001 | 刚玉 | 50ml | 0 | 新 | |
| AL-002 | 刚玉 | 100ml | 0 | 新 | |
## 试剂
| 试剂 | 纯度 | 批次 | 库存 | 开封日期 | 备注 |
|------|------|------|------|---------|------|
| — | — | — | — | — | |
## 使用
- 每次实验引用设备代码和坩埚编号
- 定期更新校准和库存状态
- 异常设备标记为"停用"
templates/experiment-index.md›
# 实验索引
Dataview 查询入口,自动汇总所有实验日志。
```dataview
TABLE date, salt_system, exp_type, material, anomaly
FROM "实验日志"
WHERE exp_id
SORT date DESC
```
## 使用
1. 将此文件放在 vault 的 `实验日志/` 目录下
2. 确保所有日志文件包含 YAML frontmatter(`exp_id`, `date`, `salt_system`, `exp_type` 等字段)
3. Obsidian 打开此文件即可看到交互式实验列表
## 自定义
按你的实验体系调整查询字段。常见扩展:
- 按体系筛选:`WHERE salt_system = "氯盐"`
- 按异常筛选:`WHERE anomaly = true`
- 按日期范围:`WHERE date >= date(2026-01-01)`