🌟 仓库独家 · 核心推荐:本技能由 NEC 社区自研,仅托管于本仓库 Skill 分支,在技能库索引的核心推荐板块中前置展示。
NEC 资料发布管线(原文原图版)
把 PDF / Excel 等附件变成 docs 仓库里的独立 MDX 页面,正文就是原文本身(不是总结概括),插图与原书位置一一对应。前置条件
标准工作流
- 暂存附件:复制到工作区
r2-staging-mech/(或新建 staging 目录)。 - 配置资源清单:复制本 skill 的
scripts/publish_resources.py到 staging 目录,编辑文件顶部RESOURCES列表,每种资源一项: - 运行:用 r2-image-sync 的 venv 执行(Bash 审批易过期,优先用 PythonRun 起子进程,
errors="replace"解码输出):脚本会:上传原始文件到files/<topic>/、提取/渲染图片到files/<topic>/images/<slug>/、生成 MDX 写入nec-docs/mechanical/<mdx>.mdx。重复运行自动跳过已存在对象。 - 注册导航:在
docs.json对应分组登记(路径不带.mdx);必要时更新索引页。 - CI:
python tools/ci/check_docs.py必须通过(既有外链警告可忽略)。 - 提交推送:Conventional Commits;直接 push 失败时先
git pull --rebase(远端 gh-proxy 已配好凭据)。
各类型处理逻辑
PDF(type: “pdf”)
- 逐页按 (y, x) 坐标排序文本块与图片块,保持原书阅读顺序;块内换行按中英文规则智能拼接;
- 位图插图原位嵌入(按 MD5 去重,跳过 <3KB 或 <40px 的图标/项目符号);
- 整页渲染的两种情况:
- 乱码页:文字提取乱码率 >15%(如自定义编码的日文段)——以 1600px 宽整页 PNG 展示;
- 矢量图页:尺寸图、连线图、性能曲线等矢量图形无位图可提取——用
page_only手动指定(自动检测仅供参考,务必人工核对);
- MDX 特殊字符自动转义(
<>{}\)。
Excel(type: “xlsx”)
- ⚠️ 飞书/WPS 导出的 xlsx 会让 openpyxl 报
expected Fill——脚本内置跳过样式表的裸 XML 读取器,勿用 openpyxl; - 每个 Sheet 转一张 Markdown 表:自动裁掉全空列、空表头补默认名、单元格换行转
<br/>、纯 URL 单元格转打开链接。
其他二进制(type: “binary”)
- 只上传 + 生成带下载链接的占位页。
密钥安全(重要)
- 脚本从
~/.kimi/skills/r2-image-sync/r2_image_sync.py正则提取 R2 配置;找不到时回退环境变量R2_ENDPOINT/R2_ACCESS_KEY_ID/R2_SECRET_ACCESS_KEY/R2_BUCKET/R2_CDN_BASE_URL; - 本 skill 目录与生成物可安全提交;staging 目录(含本地密钥副本的上传脚本)不要提交。
已知坑
- Bash 工具审批在本机经常中途过期 → 上传/git/CI 全部走 PythonRun 子进程;
- push 偶发 non-fast-forward(Mintlify bot 会推提交)→
git pull --rebase origin main后重推; - CDN HEAD 请求返回 403 是 UA 拦截,验证时带浏览器 UA 用 GET;
- 电机手册类 PDF 的图表多为矢量(
page.get_images()为空但get_drawings()很多)→ 必须整页渲染,否则丢图; - PyMuPDF 对多语种 PDF 的文字提取质量优于 pypdf(日文段 pypdf 会乱码,PyMuPDF 正常)。