Back to Skills
yuan1z0825/nature-skillsCheck passed

SKILL DETAIL

nature-experiment-log

yuan1z0825/nature-skills/nature-experiment-log

nature-experiment-log is a skill for standardized experiment log recording. It supports acquiring raw experimental materials (images, audio, text) via direct upload, local file paths, or Feishu group messages, and automatically extracts structured information to generate Markdown log files with YAML frontmatter. Log files are organized by system, experiment type, and experiment ID, with raw attachments archived to a specified directory. The skill can output to a regular local folder or integrate with an Obsidian vault, leveraging the Dataview plugin for dynamic querying and dashboards. The core workflow does not require installing Feishu or Obsidian. When using Feishu group input, the bot must be added to the target group and have the necessary permissions. The skill provides naming rules for experiment IDs and sample batch IDs, as well as a device code table for tracking. For ambiguous information (e.g., temperature, sample numbers), the skill proactively asks the user rather than guessing. Additionally, the skill includes reference examples and templates, and supports customization of system codes, experiment types, and YAML fields.

Installs · 145View source

Installation

npx skills add https://github.com/yuan1z0825/nature-skills --skill nature-experiment-log

Skill files

SKILL.md

Last synced · Aug 27, 2026

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)`