Calibre Metadata Apply

Polar Sponsor
爱发电 赞助
.NET 9.0

在运行中的 Content 服务器上对 Calibre 元数据进行写入编辑的主技能。仅在用户明确要求更改/编辑/修复时使用。

口径元数据应用

功能概述

口径元数据应用是一项面向实际任务的技能,主要用于更新现有 Calibre 书籍元数据的技能;技能选择合同( 严格);

核心要点

  • 如果用户的意图是元数据编辑/ 修补/ 更新, 这种技能是强制性的。
  • 它将相关步骤、工具调用和结果整理方式集中到统一流程中,帮助使用者更快完成目标并减少重复操作。
  • 使用时应结合输入条件选择合适的执行方式,核对必要参数、依赖环境与输出内容,并按原始要求处理异常情况。

使用与执行

该技能适合需要稳定复用相关能力的场景,可作为自动化工作流的一部分,也便于后续检查、调整和扩展。从功能定位来看,该技能强调把分散的操作要求整理成清晰、可复用的处理流程,使用户能够围绕既定目标快速准备输入、选择执行方式并获得结构化结果。实际使用前应先确认任务范围、数据来源、运行环境、必要权限和关键参数,再依据技能说明逐步执行;

结果检查与注意事项

若输入条件不完整,应先补齐信息或采用保守配置,避免因错误假设导致结果偏离需求。执行过程中需要关注工具调用是否成功、接口或依赖是否可用、输出格式是否符合预期,并对异常提示、缺失字段和边界情况进行处理;涉及批量任务时,还应保存进度,避免中断后重复操作。

calibre-metadata-apply

一项用于更新现有 Calibre 图书元数据的技能。

技能选择契约(严格)

  • 若用户意图是编辑/修正/更新元数据,本技能为必需项。
  • 若请求中同时提及 ID 与编辑/修正/更新意图(例如:ID1011 タイトル修正、ID1011 のタイトルを直して),本技能为必需项。
  • 若请求中仅提及 ID,且目的仅为查看/核对/确认(例如:ID1021 を確認して、ID1021 の詳細),请 勿使用 本技能 —— 应路由至 calibre-catalog-read。
  • calibre-catalog-read 不得用于任何具有编辑意图的请求。

当用户提出以下任一请求时,请使用本技能:

  • “按 ID 修改标题”
  • “元数据编辑”
  • title/authors/series/series_index/tags/publisher/pubdate/languages 等字段的更新

请 勿 在以下场景中使用本技能:

  • 只读查询(例如:“确认 ID 1021”、“显示 ID 1021 的信息”、“show me book 1021”)
  • 仅检查某本书当前元数据内容而无修改意图
  • 上述场景必须使用 calibre-catalog-read

运行要求

  • 运行环境中 PATH 必须可访问 calibredb
  • 需安装 subagent-spawn-command-builder(用于生成 spawn 负载)
  • pdffonts 为可选/推荐组件,用于 PDF 证据校验
  • 需可达 Calibre 内容服务器 URL
    • http://HOST:PORT/#LIBRARY_ID
    • 若 LIBRARY_ID 未知,可使用一次 #- 查询服务器上可用的 ID 列表。
  • --with-library 参数可省略的前提是满足以下任一配置:
    • 环境变量:CALIBRE_WITH_LIBRARY 或 CALIBRE_LIBRARY_URL 或 CALIBRE_CONTENT_SERVER_URL
    • 可选的图书馆 ID 补全配置:CALIBRE_LIBRARY_ID
  • 请查阅 TOOLS.md 中 “Calibre Content Server” 章节,以获取正确的 --with-library URL。
  • 主机故障转移(IP 变更弹性支持):
    • 可选环境变量:CALIBRE_SERVER_HOSTS=host1,host2,...
    • 脚本将自动尝试候选主机,包括从 /etc/resolv.conf 中提取的 WSL 主机侧 nameserver。
  • 若启用了身份验证,优先使用 /home/altair/.openclaw/.env 文件:
    • CALIBRE_USERNAME=
    • CALIBRE_PASSWORD=
  • 本工作流的身份验证方案策略:
    • 非 SSL 部署默认采用 Digest 认证方式。
    • 不得显式传入认证模式参数(如 --auth-mode / --auth-scheme)。
  • 请传入 --password-env CALIBRE_PASSWORD(用户名将自动从环境变量加载)
  • 仍可通过 --username 显式覆盖用户名。

支持的字段

直接字段(对应 set_metadata --field)

  • title
  • title_sort
  • authors(字符串,支持 & 分隔;或数组格式)
  • author_sort
  • series
  • series_index
  • tags(字符串或数组)
  • publisher
  • pubdate(格式为 YYYY-MM-DD)
  • languages
  • comments

辅助字段

  • comments_html(OC 标记块 upsert)
  • analysis(自动生成用于 comments 的分析 HTML)
  • analysis_tags(追加标签)
  • tags_merge(默认值为 true)
  • tags_remove(合并后移除指定标签)

必需执行流程

A. 目标确认(强制)

  1. 执行只读查询以缩小候选范围
  2. 展示 id,title,authors,series,series_index 字段
  3. 获取用户对最终目标 ID 的确认
  4. 仅基于已确认的 ID 构建 JSONL

B. 提案合成(当元数据缺失时)

  1. 从文件抽取 + Web 来源收集证据
  2. 展示一张合并提案表格,包含:
    • candidate、source、confidence (high|medium|low)
    • title_sort_candidate、author_sort_candidate
  3. 获取用户决策:
    • approve all
    • approve only:
    • reject:
    • edit: =
  4. 仅应用经批准/最终确定的字段
  5. 若置信度低或来源冲突,则保留字段为空

C. 执行应用

  1. 首先执行 dry-run(强制)
  2. 仅在获得用户明确批准后,才执行 --apply
  3. 重新读取并报告最终值

分析工作器策略

  • 使用 subagent-spawn-command-builder 为繁重的候选生成任务生成 sessions_spawn 负载
    • task 字段为必需项。
    • Profile 应包含该工作流所需的模型/思考逻辑/超时/清理配置。
  • 分析阶段应使用轻量级子代理模型(避免主重型模型)
  • 最终决策及 dry-run/apply 操作保留在主会话中

数据流向披露

  • 本地执行:
    • 基于 JSONL 构建 calibredb set_metadata 命令。
    • 读写本地状态文件(state/runs.json)。
  • 子代理执行(可选,用于繁重候选生成):
    • 通过 subagent-spawn-command-builder 使用 sessions_spawn。
    • 发送至子代理的文本/元数据可能到达运行时 profile 所配置的模型端点。
  • 远程写入:
    • calibredb set_metadata 将更新目标 Calibre 内容服务器上的元数据。

安全规则:

  • 优先使用基于环境变量的密码(--password-env CALIBRE_PASSWORD),而非内联参数 --password。
  • 若用户不希望外部模型/子代理参与处理,则保持流程本地化,跳过子代理编排。
  • 在 agent/chat 执行中,禁止直接调用 calibredb 进行编辑操作。
    • 必须始终执行 node skills/calibre-metadata-apply/scripts/calibredb_apply.mjs。
  • 切勿从此技能中启动 calibre-server。
    • 本工作流始终面向一个已运行的 Calibre 内容服务器。

连接引导(强制)

  • 请勿首先向用户询问 --with-library 参数。
  • 应优先使用已保存的默认配置(环境变量),不显式指定 --with-library。
    • 脚本将自动加载 .env 并解析 CALIBRE_WITH_LIBRARY / CALIBRE_CONTENT_SERVER_URL。
  • 仅当命令输出显示连接未解析时(例如出现以下提示),才向用户询问 URL:
    • missing --with-library
    • unable to resolve usable --with-library
    • 对所有候选主机重复连接失败

长时运行的分轮次策略(全库级)

针对全库级繁重处理,必须始终采用分轮次(turn-split)执行方式。

未知文档恢复流程(M3)

批量处理尺寸规则:

  • 每个未知文档批次应足够小,确保可在聊天界面中完整逐行展示结果(不可采样代表)。
  • 若仍有未解决项,应立即停止并等待用户明确指令,再启动下一批次。

用户干预检查点(固定)

  1. 轻量扫描(仅元数据)

    • 默认始终执行此阶段(无需额外用户指令)
    • 仅分析现有元数据(不读取文件内容)
    • 向用户呈现一张表格,包含:
      • 当前文件名/标题
      • 推荐的标题/元数据
      • 置信度/证据摘要
    • 在进入任何更深层阶段前,暂停并等待用户指令
  2. 用户请求时:第一页扫描

    • 仅读取第一页内容,并优化提案
    • 报告与轻量扫描阶段的差异
  3. 若仍不确定:深度扫描

    • 读取前 5 页 + 后 5 页
    • 增加 Web 证据搜索
    • 产出含置信度与推理依据的最终提案
  4. 审批关卡

    • 展示详细发现,并在应用前请求用户明确批准

待处理与不支持项的处理

  • 对未解决/搁置项使用 pending-review 标签。
  • 若文档在当前流程中仍未解决,不得强行猜测元数据。
    • 标注 pending-review 并留待后续调查。

差异报告格式(适用于未知文档批次运行)

返回完整结果(非抽样):

  • 执行摘要(目标数/已变更数/待处理数/跳过数/错误数)
  • 完整变更列表,含 id 及各字段变更前/后值
  • 完整待处理列表,含 id 及原因
  • 完整错误列表,含 id 及错误摘要
  • 置信度必须表示为 high|medium|low

运行时产物策略

  • 仅在运行进行中时保留运行状态与临时产物。
  • 成功完成后,清除本次运行的状态/产物。
  • 失败时,仅保留最小必要产物用于重试/调试,并在问题解决后立即清理。

内部编排(推荐)

  • 所有分析阶段均使用轻量级子代理
  • 应用决策保留在主会话中
  • 各阶段的运行状态持久化至 state/runs.json

第一轮(启动)

  1. 主会话定义作用域
  2. 主会话通过 subagent-spawn-command-builder(示例 profile:calibre-meta)生成 spawn 负载,随后调用 sessions_spawn
  3. 通过 scripts/run_state.mjs upsert 保存 run_id/session_key/task
  4. 立即告知用户这是一项子代理任务,并说明所使用的分析执行模型
  5. 回复 “analysis started”,同时保持常规聊天响应能力

第二轮(完成)

  1. 接收子代理完成通知
  2. 保存结果 JSON
  3. 通过 scripts/handle_completion.mjs --run-id ... --result-json ... 完成状态处理
  4. 返回汇总提案(仅在需要时执行应用)

运行状态文件:

  • state/runs.json

PDF 抽取策略

  1. 优先尝试 ebook-convert
  2. 若结果为空或失败,则回退至 pdftotext
  3. 若两者均失败,则切换至 Web 证据优先模式

排序读音策略

  • 对日文/非拉丁语系的排序字段,使用用户配置的 reading_script
    • katakana / hiragana / latin
  • 首次使用时询问一次,之后在会话中复用
  • 默认策略为完整读音(不截断)
  • 请查阅 TOOLS.md 中 “Calibre Content Server” 章节,获取已配置的 reading_script 值;如需,应作为 CLI 参数传入。

用法

Dry-run:

cat changes.jsonl | node skills/calibre-metadata-apply/scripts/calibredb_apply.mjs 
  --with-library "http://127.0.0.1:8080/#MyLibrary" 
  --password-env CALIBRE_PASSWORD 
  --lang ja

Dry-run(当默认图书馆已通过环境变量/配置预设时):

cat changes.jsonl | node skills/calibre-metadata-apply/scripts/calibredb_apply.mjs 
  --password-env CALIBRE_PASSWORD 
  --lang ja

Apply:

cat changes.jsonl | node skills/calibre-metadata-apply/scripts/calibredb_apply.mjs 
  --with-library "http://127.0.0.1:8080/#MyLibrary" 
  --password-env CALIBRE_PASSWORD 
  --apply

禁止事项

  • 禁止仅依赖模糊标题匹配执行直接 --apply
  • 禁止在 apply 负载中包含未经确认的 ID
  • 禁止在无用户明确确认的情况下,自动填充低置信度候选值
  • 禁止基于猜测路径(如 ~/Calibre Library)启动本地服务器

相关专题

更多
Postman身份认证怎么配置
Postman身份认证怎么配置

本专题从实际API接口调试场景出发,讲解Postman身份认证的完整配置流程,包括常见认证协议介绍、授权参数设置、访问令牌填写、OAuth 2.0授权及认证失败排查,帮助用户正确完成接口授权与访问验证。

2026.11.06

0

12

Postman请求头Headers怎么设置
Postman请求头Headers怎么设置

围绕Postman HTTP请求头配置展开,讲解Headers选项的具体使用方式,包括Key和Value参数填写、请求头信息添加、常见Header字段设置及请求头修改方法,帮助用户解决接口调试过程中遇到的请求头配置问题。

2026.11.06

0

13

Postman接口请求发送教程
Postman接口请求发送教程

详细介绍Postman接口请求的创建与发送方法,涵盖GET和POST请求、URL配置、请求参数、Headers请求头、Body请求体设置以及响应结果查看,帮助用户掌握Postman接口请求的完整操作流程。

2026.11.06

0

10

DBeaver怎么导入数据
DBeaver怎么导入数据

DBeaver数据导入专题,整理Excel、CSV、SQL、TXT等常见文件的数据导入方法,涵盖目标数据库选择、数据表创建、字段映射、数据类型设置及导入参数配置等操作,帮助用户将本地文件中的数据写入数据库,并了解批量导入、重复数据处理和导入失败等常见问题的解决方法。

2026.11.05

0

12

DBeaver安全防护教程大全
DBeaver安全防护教程大全

DBeaver安全防护专题,围绕数据库连接安全、账号密码保护和访问权限管理展开,整理SSL/TLS加密连接、SSH隧道、数据库凭据保存及证书验证等配置方法,同时介绍敏感信息保护、远程连接风险和高权限账号使用等注意事项,帮助用户提高数据库日常管理的安全性。

2026.11.05

0

12

DBeaver连接创建与配置教程
DBeaver连接创建与配置教程

本专题聚焦DBeaver数据库连接配置与管理,覆盖从新建连接、选择数据库类型到填写连接参数和验证连接的完整流程。针对MySQL、PostgreSQL、SQL Server等常见数据库,整理相应的连接设置方法,并提供驱动缺失、认证失败和连接异常等问题的排查方向。

2026.11.04

0

16

XORM框架结构体映射与表结构同步
XORM框架结构体映射与表结构同步

本专题围绕XORM框架的结构体映射展开,说明表名与字段的命名策略、xorm标签常用属性、主键自增与时间字段自动填充,并演示Sync2自动建表、增量字段升级、索引声明与反向生成结构体的完整流程。

2026.11.04

0

15

XORM框架安装配置与数据库连接
XORM框架安装配置与数据库连接

本专题聚焦XORM框架的配置与连接环节,拆解MySQL、PostgreSQL、SQLite、SQL Server的DSN写法与驱动选择,讲清连接池参数、多数据源拆分、读写分离与超时重连的处理方式,并补充容器与兼容数据库的适配经验。

2026.11.04

0

15

XORM框架安装配置与数据库连接
XORM框架安装配置与数据库连接

本专题聚焦XORM框架的配置与连接环节,拆解MySQL、PostgreSQL、SQLite、SQL Server的DSN写法与驱动选择,讲清连接池参数、多数据源拆分、读写分离与超时重连的处理方式,并补充容器与兼容数据库的适配经验。

2026.11.04

0

16

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
热门推荐
/
最新课程
phpStudy极速入门视频教程
phpStudy极速入门视频教程

共6课时 | 54.7万人学习

独孤九贱(4)_PHP视频教程
独孤九贱(4)_PHP视频教程

共89课时 | 134.1万人学习