SuperAPI AI 工具集

scrivener-metadata

写作与研究

查看项目

更新于 10-16 05:06

技能介绍

用途:帮助写作者读取和分配 Scrivener 项目活页夹条目上的组织性元数据(标签、状态、章节类型),并解释关键词与自定义元数据的工作流。该技能只做分类,绝不改写 content.rtf;正文/摘要/笔记编辑请用 scrivener-edit。

主要能力:

  1. 定义列表(只读):labels、statuses、section-types 分别列出项目的标签、状态、章节类型定义(ID、标题、颜色),section-types 还返回 LevelTypes 结构默认值。
  2. 分配(写入并校验):set-label <uuid> <label_id>、set-status <uuid> <status_id>,写入条目的 <MetaData> 中的 LabelID / StatusID,写入前会校验 ID 是否存在于项目定义中,未知 ID 会被拒绝。

使用方式:先读取定义以取得有效 ID,再执行写入。示例命令: python3 ${CLAUDE_PLUGIN_ROOT}/tools/scrivener/cli.py labels --project "<path.scriv>" python3 ${CLAUDE_PLUGIN_ROOT}/tools/scrivener/cli.py statuses --project "<path.scriv>" python3 ${CLAUDE_PLUGIN_ROOT}/tools/scrivener/cli.py section-types --project "<path.scriv>" python3 ${CLAUDE_PLUGIN_ROOT}/tools/scrivener/cli.py set-status <uuid> <status_id> --project "<path.scriv>" python3 ${CLAUDE_PLUGIN_ROOT}/tools/scrivener/cli.py set-label <uuid> <label_id> --project "<path.scriv>" 批量操作时逐个解析 UUID 并逐条执行,建议先用 --dry-run 预览。写入前需在 Scrivener 中关闭项目并等待云同步完成;写入会自动备份(带时间戳的 zip)并自动快照,set-label/set-status 支持 --no-backup、--no-snapshot、--dry-run。标题不唯一,歧义时请传 UUID(先用 find 或 outline 解析)。

章节类型:多数条目不直接存储章节类型,而是通过三种状态解析——基于结构继承(默认,由 <SectionTypes> 的 <TypeDefinitions> 与 <LevelTypes> 映射)、容器默认子文档继承、以及手动逐条覆盖。因此“把章节类型设为 Part”通常不是逐条写入,而是修改结构默认映射或调整结构层级。逐条覆盖尚未实现(其 <MetaData> 元素未验证)。章节类型在编译时由所选 Format 绑定到章节布局,控制标题、前缀、编号、分隔符和分页。

自定义元数据:仅有四种类型——Text、Checkbox、List、Date,没有 Number 类型,数值字段请存为 Text。定义与设置自定义元数据尚未进入 CLI。

关键词:区分大小写、可嵌套,与标签不同(一个条目一个标签,但可有多个关键词)。关键词命令尚未提供。

限制:当前可用命令为 labels、statuses、section-types、set-label、set-status;keywords、meta、section-type、collection、bookmark、autocomplete 等为计划中功能,暂未提供。相关技能:scrivener-inspect、scrivener-edit、scrivener-compile、scrivener-formatting、scrivener-format。