内容创作 · nexu-io/html-anything

blog-post

杂志感长文, 含 masthead、hero、figures、pull quote、作者署名

风险提醒:绿色 · 放心使用AI 侦查报告
作者 nexu-ioGitHub nexu-io/html-anything ↗Stars 8827许可 Apache-2.0(仓库根 LICENSE:Apache License Version 2.0, January 2004;GitHub API spdx_id=Apache-2.0)commit 553ed98c28
agent 宿主通常会约束 skill 执行权限;风险提醒为 AI 侦查观点,不构成质量或安全保证。第三方 skill 仅作拆解与展示,安装使用风险自负,版权归原作者。

1实现原理 · 为什么它能做到

模板本体没有可执行代码:loader 从 src/lib/templates/skills/<id>/SKILL.md 读入 frontmatter 与正文,正文(body)与 example 内容一起作为 LoadedSkill 返回。

next/src/lib/templates/loader.ts
const raw = safeRead(path.join(dir, "SKILL.md"));
注:这里在做什么:SKILL.md 是唯一行为来源——frontmatter 供选择器渲染(zh_name/emoji/aspect_hint/tags/example_* 等),正文整段即提示词;loader 不做语义校验,模板写什么就下发什么。

下发前宿主固定拼装 prompt:模板正文夹在共享设计指令 SHARED_DESIGN_DIRECTIVES 与【输入格式】/【用户内容】之间。

next/src/lib/templates/shared.ts
Wrap a per-template instruction body with the shared design directives and
注:这里在做什么:模板只定义「这一个交付物长什么样」(版式/节奏/组件),共享指令承担跨模板硬约束——单文件 HTML、禁止用文件工具、Tailwind 与 Google Fonts 走 CDN、内容真实性、中文盘古之白。

共享指令把硬约束写成对 agent 的显式禁令,并强制内容驱动数量(模板里的数字只作参考下限)。

next/src/lib/templates/shared.ts
**禁止使用 Write / Edit / MultiEdit / Bash / Create / 任何文件系统工具**。
注:同文件下文还有一条:输出的 slide / frame / card / section 数量完全由【用户内容】的实际长度和信息结构决定——这解释了为什么本类模板不因内容变长而失效:每段内容至少一张卡/一节,模板只提供版面池。

真正执行的是用户本机已安装并登录的编码 agent CLI:宿主 spawn 子进程,把 prompt 交给它,HTML 从 stdout 流式捕获。

next/src/lib/agents/invoke.ts
import { spawn, type ChildProcessWithoutNullStreams } from "node:child_process";
注:这里在做什么:模板 skill 只提供提示词,能力(含写代码、跑工具)来自宿主 CLI 的既有权限;skill 目录自身没有任何脚本入口,因此判级只看目录内资产(宿主行为不计档)。

/api/convert 是模板的执行路径:它把 skill.body 与用户内容组装成 prompt 后交给 invokeAgent。

next/src/app/api/convert/route.ts
prompt = assemblePrompt({ body: skill.body, content, format });
注:编辑模式另走 buildEditPrompt(最小化差异编辑,禁用文件工具、要求直接流式输出完整 HTML),因此本类模板的产物形态稳定:单文件 HTML、内联 CSS/SVG,外链仅字体与个别模板显式要求的图表库。

模板以 typography 优先的比例约束开头(70% 文字 / 20% 图 / 10% chrome),并要求 ≥600 字,直接排除短图文卡片类输入。

next/src/lib/templates/skills/blog-post/SKILL.md
【意图】≥ 600 字的真正的长文章, 排版以 typography 为主, 70% 文字 20% 图 10% chrome。
注:这里在做什么:用比例而非形容词定义「杂志感」——正文唱主角,图表与装饰占比被压低,避免模型给长文塞满卡片。

骨架固定为五段:Masthead → Hero → 单栏 65ch 正文 → Author bio 卡片 → Related posts 三卡。

next/src/lib/templates/skills/blog-post/SKILL.md
- Masthead (publication name + date)
注:同段列出正文容器宽度 65ch 与「含 figures, pull quotes, 行内引用」,即正文内部还有三类行内元素要求;与 hero 的元数据(作者署名 + 阅读时间)共同构成刊物形态。

三处排版细节被单独规定:pull quote(大号 serif 斜体 + 左侧色条)、figures 自带 italic caption、代码块圆角深底带语言标签。

next/src/lib/templates/skills/blog-post/SKILL.md
- Pull quote 用大号 serif 斜体 + 左侧色条
注:figures 的 caption 要 italic/smaller;代码块与 article-magazine 同规格,属同一设计语言的复用,跨模板观感一致。

示例产物用纯内联 CSS + 系统字族实现(无 Tailwind、无字体 CDN、全文零 URL),是该模板零外链路线的实现证据。

next/src/lib/templates/skills/blog-post/example.html
font-family: -apple-system, system-ui, sans-serif
注:这里在做什么:示例把杂志感做在排版细节上(Masthead 细线、lede、byline 头像占位、hero-figure、数字图块、blockquote),不依赖任何外部资源即可打开。

示例正文实现了 hero/lede/byline/hero-figure/pull quote/figures 等骨架元素,但未实现 SKILL.md 要求的 Author bio 卡片与 Related posts 三卡。

next/src/lib/templates/skills/blog-post/example.html
<figure class="numbers">
注:该 figure 是正文中的数字三连展示块(38ms → 4ms 等),属 figures 要求;但示例结尾直接是 endnote 招募卡,没有 bio / related posts 段落——记为 discrepancy,模板能力以 SKILL.md 为准。

2核心能力

01长文骨架:Masthead + Hero(大标题 + 副标 + 作者署名 + 阅读时间)
0265ch 单栏正文容器(含 figures、pull quotes、行内引用三类行内元素)
03Pull quote:大号 serif 斜体 + 左侧色条
04Figures 自带 caption(italic、更小字号)
05代码块:圆角 + 深色 + 语言标签(与 article-magazine 同规格)
06文末版式位:SKILL.md 要求 Author bio 卡片 + Related posts 3 张卡(示例未实现,见 verification)

4风险提醒 风险提醒:绿色 · 放心使用

风险提醒:绿色 · 放心使用
  • 示例未覆盖模板全部骨架 — Author bio 卡片与 Related posts 三卡在示例中缺失;以示例为唯一参照的 agent 可能漏做这两段,用户需自行确认产出完整性。
  • 字数下限靠模型自律 — ≥600 字是对输入的要求而非校验:宿主不含字数检查,短输入也可能被硬撑成长文或压缩成卡片。
  • 用户内容逐字进 prompt 的注入面 — 宿主装配层直接插值用户内容(无转义/围栏);粘贴文本中的指令性内容可改变生成结果,危害限于产物内容与外观。
  • 产物预览以同源脚本沙箱渲染(宿主行为) — preview-pane.tsx:297 的 sandbox="allow-scripts allow-same-origin";本模板产物静态无脚本,实际风险低。
风险提醒:绿色,放心使用。判级只依据 skill 自身目录(仅 SKILL.md + example.html 两个文件,无 scripts/、无自带 CLI、无凭证读取、无写盘):无脚本入口、无自带 CLI、无凭证读取、无写盘指令;SKILL.md 正文未要求运行时引入任何外部端点(只写布局段、行内元素类型与字族风格,不含端点)。执行期不发生任何外发。目录内实际出现的端点仅存在于 example.html 零 URL、零 <script>(纯系统字族的内联 CSS)——目录内不存在网络端点,按批4 终版口径属**产物期引用**(生成的 HTML 由浏览器打开时拉取 CDN/字体,skill 执行时不抓取、不上报、不传素材),故不判级,仅在此列出端点;宿主壳(loader→assemblePrompt→本地 agent CLI spawn、预览 iframe sandbox)同属宿主行为,记入 verdict.risks。

5第二遍独立确认

  • [discrepancy] 示例覆盖度 vs SKILL.md 骨架 — SKILL.md 要求五段骨架,example.html 实现了 Masthead / Hero / 正文 / 三处细节,但缺 Author bio 卡片与 Related posts(3 张卡)——示例结尾为 .endnote 招募卡。详情页不宜把该示例当作模板完整形态。
  • [ok] 「零外链」判定 — blog-post/ 目录内 http(s) 命中数为 0,<script> 命中数为 0;字体为 -apple-system/system-ui/monospace 等系统字族,执行期与产物期均无外发。
  • [ok] 无 example.md 的后果 — 目录只有 SKILL.md + example.html;loader 的 metaFromDir 以 existsSync 判定 hasMd=false,选择器仍会因 hasHtml=true 生成 example 元数据,行为正常。
  • [ok] license / stars / commit 元数据 — GitHub API(api.github.com/repos/nexu-io/html-anything):spdx_id=Apache-2.0、stargazers_count=8827、pushed_at=2026-09-15T03:36:24Z;工作副本 git HEAD = 553ed98c283f9c0f489902d035416a972d6a9699(与任务表 pin 553ed98c283f 同源)。
  • [ok] skill.path 与目录资产面 — pin 目录内该路径存在且含 SKILL.md;目录内文件清单已用 glob 全量核对(含隐藏文件),无 scripts/、无 references/、无二进制资产(competitive-teardown 的 assets/ 为纯 HTML,另行记录)。

6结论

  • 用比例与字数下限定义长文,是最容易判定的意图声明之一(70% 文字 / 20% 图 / 10% chrome、≥600 字)。
  • 骨架与细节分工清楚:五段结构 + 三处排版细节(pull quote / figure caption / 代码块),模型无须自行设计页面。
  • 示例产物零外链零脚本、纯内联 CSS,离线可开,是排版驱动路线的干净样板。
  • 跨语种可用:模板为中文,示例产物为英文技术长文(Mira Hassan / Filebase),说明版式不绑语种。
  • 适合:适合真正的长文交付:技术复盘、公司博客、深度评论、采访整理——尤其适合希望排版好看又离线可开的场景(示例为纯内联 CSS + 系统字族)。
    不适合:不适合短内容或图文卡片(≥600 字与 65ch 单栏是硬约束);不适合需要多栏杂志版式或丰富交互的报告;不适合必须自带品牌字体/配色的场景(模板未规定字族,需用户另给要求)。
    安装 agent 直装可复制
    ① 本站镜像 更新 2026-09-15
    方式 A · 人下载镜像包下载 blog-post.tar.gz
    sha256: 95b69396ce0f37a7…
    方式 B · JSON 格式安装指南,复制给 agent
    安装指南
    agent 读 JSON 指南后会自动从本站下载安装,无需更多说明。
    ② 上游 GitHub · 原始来源
    能访问 GitHub?直接去上游安装(实时版,可能已更新)GitHub 原始 ↗
    本页镜像锁定 commit 553ed98c28;上游为实时仓库。
    来源信息 GitHub 原始
    作者 / 仓库nexu-io / nexu-io/html-anything
    Stars8827
    最近推送2026-09-15
    本 skill commit553ed98c28
    许可Apache-2.0(仓库根 LICENSE:Apache License Version 2.0, January 2004;GitHub API spdx_id=Apache-2.0)
    本站信息
    收录日期2026-09-06
    分类内容创作
    侦查报告AI 侦查 · 2 遍 · 2026-09-06
    本站镜像与 GitHub 原始是不同来源:本站锁定 commit 快照经 /r2 分发;GitHub 为实时上游,内容可能已更新。
    同分类邻近