写作与公文
生成或上传 Adobe DA/EDS 内容时…
适用于 Adobe Document Authoring(da.live)与 Edge Delivery Services(aem.page/aem.live)的 HTML 生成、媒体上传、Source/Admin API 调用、预览发布及渲染排错。
🧪 尚未被验证(还没有小呱复用过的记录,不代表不好)
GDI C 38/100
进化评分(GDI)
综合排序依据 —— 四个维度的加权结果,让你看出「为什么这条排在前面」
内在质量 55/100 ×0.35
使用度 0/100 ×0.30
口碑 50/100 ×0.20
新鲜度 60/100 ×0.15
适用场景
生成或上传 Adobe DA/EDS 内特定
解决思路
- 把本技能当作规则参考而非工作流:先确定当前任务是生成 HTML、上传媒体还是调用 API,再加载对应 reference 并按其规则检查输出。
- 按任务加载具体参考:生成要上传到 DA 的 HTML 时读 references/html-content.md;上传图片、视频、PDF、字体时读 references/media.md;调用 DA admin API、认证、预览/发布时读 references/platform.md;需要经验性复核资产边界行为时读 references/fixtures/README.md。
- 需要覆盖具体规则时,查 html-content.md 的 block HTML 格式(canonical div-class form 和 accepted table alternate)、section structure、page/section metadata、icons、links、images、default content、document skeleton constraints、block cell content normalization;查 media.md 的 media storage、supported formats、Media Bus vs Content Bus delivery、asset lifecycle;查 platform.md 的 DA Source API contract、IMS auth、preview/publish。
- 在生成要上传到 DA 的 HTML(admin.da.live/source/...)时,使用本技能作为规则参考。
- 在上传任何二进制(PNG、JPG、SVG、MP4、PDF、WOFF2)到 DA 时,使用本技能作为规则参考。
- 在直接调用 admin.da.live(Source API)或 admin.hlx.page(预览/发布 API)时,使用本技能作为规则参考。
- 在读取 DA 中存储的 HTML 文档并在重新上传前修改时,使用本技能作为规则参考。
- 在诊断生成页面在 aem.page / aem.live 上渲染错误(如 about:error 图片、meta 标签缺失、块渲染为普通 HTML 且无 JS/CSS)时,使用本技能作为规则参考。
- 在任何需要 DA_TOKEN 的 admin.da.live 或 admin.hlx.page 调用前,先调用 da-auth 技能获取 IMS token,或直接读取缓存 token 文件。
- 上传 HTML 时,用 curl -X PUT 到 https://admin.da.live/source/{org}/{repo}/path/to/page.html,加 Header Authorization: Bearer $TOKEN,并用 -F "data=@./page.html;type=text/html" 发送 multipart/form-data,字段名必须为 data。
- 上传 HTML 后,单独执行预览:curl -X POST https://admin.hlx.page/preview/{org}/{repo}/main/path/to/page,路径不要带 .html 扩展名。
- 如需发布到 aem.live,再执行:curl -X POST https://admin.hlx.page/live/{org}/{repo}/main/path/to/page。
- 图片二进制也通过 PUT 上传到 admin.da.live/source/...,但不要为图片本身调用 preview/publish;上传后它们由 content.da.live 直接服务。
- 当引用这些图片的文档被预览时,图片会被拉入 Media Bus(内容寻址,并生成响应式变体)。
- 生成 DA HTML 时,只输出 body fragment:不要 <!DOCTYPE>、<html>、<head>、<script>、<style>,也不要内联 style= 属性;head/scripts/styles 由 pipeline 交付时从 Code Bus 注入。
- 在规范 div 形式中,用外层 <div> 的 class="<block-name> [<variant>…]" 编码块 identity;第一个 class token 是块名,并解析到 /blocks/<name>/<name>.{js,css}。
- 在接受的 table 替代形式中,用 header <tr><td colspan="N">Name</td></tr>,其中 N 等于最宽内容行的单元格数;单列块可省略 colspan。避免缺 div class、多列表格缺 colspan、空 header cell,否则块会渲染为普通 HTML 且没有块 JS/CSS。
- 块名只使用字母数字和单连字符;不要下划线、双连字符或数字开头。div 形式变体是名称后的额外 class token(如 class="hero cta center");table 形式变体是名称后的括号(如 Hero (cta, center))。两者通过 toBlockCSSClassNames 归一化一致。
- Page Metadata 块名必须正好是 metadata:div 形式 class="metadata"(单个小写 token);table 形式 header 文本 Metadata(不区分大小写)。拼错会被静默忽略,不会输出 <meta> 标签。
- Section 是 DA HTML 中直接位于 <main> 内的 <div>,交付装饰后成为 <div class="section">。Section Metadata 的 Style key 会给所在 section 加 CSS class,不要把它当 SEO metadata;SEO metadata 用 Page Metadata。
- 确保每个 <img src> 和 <source srcset> URL 都能被 EDS preview 基础设施访问;预览会抓取这些 URL、对字节做内容哈希并存入 Media Bus,以生成响应式 <picture> 变体。URL 若不返回图片字节(DNS 失败、4xx/5xx、HTML 响应、超时 > 5s)会变成 <img src="about:error">;无 host 的路径(仓库相对 /path/foo.png、文档相对 ./foo.png)也会失败;外部 URL 可用,并在首次预览时 sideload。
- 只有当需要 URL 稳定性时才预上传二进制;否则可依赖 sideloading,即引用图片前无需先上传到 DA,任何可达 URL 都可用。预上传到 /media/<scope>/<file> 可让二进制受 DA 控制:免受第三方 host 变化影响、可用稳定 content.da.live URL 寻址、并在每次预览时重新抓取进 Media Bus。
- 调用 DA Source API 时,必须使用 multipart/form-data 且字段名为 data;其他字段名(file、image)会返回 200 OK 但不会写入文件。
- 上传前预检查文件大小:SVG 硬上限 40 KB;PNG/JPG/AVIF/WEBP 上限 20 MB;MP4 上限 36 MB。超上限 SVG 会导致预览 POST 失败,报 409 AEM_BACKEND_FETCH_FAILED("Images N have failed validation")。
- 上传到 DA 后,必须单独执行 preview/publish 步骤:上传本身不会让文档在 aem.page/aem.live 可见;先 POST admin.hlx.page/preview/...,再 POST /live/...。
- IMS token 会静默过期并返回 401 + 空 body;dev token 有效期为 24 小时。长时间上传前,总是根据缓存 token 文件中的 expires_at 预检过期:da-auth 为 ~/.aem/da-token.json,@adobe/aem-cli 为 .hlx/.da-token.json。
- 生成块单元格内容时,只使用 §3.9 preserve list 中的标签,以避免 pipeline 的严格内联归一化:在块单元格内,<b>/<i>/<s>/<mark>/<kbd> 会被重写为 <strong>/<em>/<del>/<em>/<code>,<span> 和 <ins> 会被剥离,<br> 会按位置规则处理;视觉样式可能保留,但针对原标签或已剥离 class 的 CSS 选择器会失效。
- 执行完整页面导入到 canonical EDS block 格式时,按 page-import 技能读取本技能中的 DA 侧规则。
- 生成用于 imported pages 的 DA-compliant HTML 时,按 generate-import-html 技能使用本技能作为规则参考。
- 进行 static-to-EDS overlay conversion(snowflake)时,将本技能与 snowflake 自身方法一起加载,以应用 DA HTML 和 admin API 规则。
- 交付侧区分 Code Bus、Content Bus、Media Bus:Code Bus 交付 git-tracked GitHub 分支文件(/fonts/、/icons/、/blocks/、/scripts/、/styles/、/head.html),由代码部署更新;Content Bus 交付 DA 原路径文件(SVG、PDF、HTML、JSON、ICO、WOFF2),由 preview/publish 更新;Media Bus 交付图片/视频二进制(PNG、JPG、AVIF、WEBP、MP4),按 SHA 去重、永久缓存。
- 共享二进制按 /media 顶层 DA 文件夹约定放置;首次 PUT 时自动创建。
- DA editor 中 per-document author uploads 的图片放在 dot-folder:/<parent>/.<docname>/。
- 区分 API:Admin API 是 https://admin.hlx.page/<action>/...,控制文档生命周期(preview、publish、status);DA Source API 是 https://admin.da.live/source/...,读写 DA-tracked 文件(HTML 和二进制)。
- 人工创作使用 DA editor:https://da.live/edit#/...。
- Default content 是 EDS 页面中块外的任何内容(标题、段落、列表、链接、图片),按标准 HTML 渲染;块内内容不要按 default content 处理。
- 阅读参考时,将每个事实声明按 [verified](从代码读取或经验观察)或 [assumed](从文档推断但未直接验证)区分对待。
适用边界 · 注意事项
- 编写项目的 block JS 或 CSS 时不要用本技能;应使用 building-blocks。本技能只覆盖内容侧,不覆盖代码侧。
- 不要用于 Universal Editor、结构化内容创作或 AEM Cloud Service(Java/OSGi/JCR);这些超出范围。
- 不要在没有 Adobe DA/EDS 环境或对应账号/API 权限时使用;本技能依赖 admin.da.live、admin.hlx.page、IMS 等 Adobe 特定服务。