全部技能 / 设计 / frame-logo-outro
设计 · nexu-io/html-anything

frame-logo-outro

Logo 分块组装入场 + glow bloom + tagline 揭示, 适合视频片尾 / 品牌闭幕

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

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

这个 skill 不是可执行程序,而是注入给本机 coding-agent CLI 的一段提示词:宿主取 SKILL.md 正文,前面压一段全站共享设计指令、后面接用户内容,拼成一条 prompt 交给已登录的 agent,再把 agent 的 stdout 当 HTML 取回。

next/src/lib/templates/shared.ts
【输入格式】: ${opts.format} 【用户内容】: ${opts.content}
注:拼装模板 = 共享指令 → skill 正文 → 输入格式 → 用户内容;web 端 /api/convert 走同一函数:prompt = assemblePrompt({ body: skill.body, content, format });

共享指令层(不属于任何单个 skill,但每个模板都被它压着)把输出钉成『自包含单文件 HTML』,并明令禁止 agent 使用 Write/Edit/Bash 等文件系统工具,HTML 直接以对话正文流式输出。

next/src/lib/templates/shared.ts
- **禁止使用 Write / Edit / MultiEdit / Bash / Create / 任何文件系统工具**。不要把 HTML 写到任何 \`.html\` 文件里。前端直接捕获你的 stdout 文本, 文件落盘由前端负责。
注:这是本批 skill 能力边界的来源:产出物只是文本,落盘与渲染由宿主前端负责;该禁令是 prompt 软约束,不是沙箱硬隔离。

SKILL.md 之外还有一条『内容驱动数量』覆盖规则:模板里写的任何页数/帧数/卡片数一律视为参考下限,实际数量由用户内容决定——防止 agent 用模板数字压缩用户内容。

next/src/lib/templates/shared.ts
- 模板只定义"可用版面 / 风格 / 配色 / 字体 / 组件库", **不定义** slide / 帧 / 卡片 / section 的数量。
注:对 frame-* 单帧模板尤其关键:它把模板里的版面描述定性为『可复用版面池』而非产量上限。

加载约定是『一个 skill = 一个文件夹』:SKILL.md(YAML frontmatter 供选择器 + 正文即模板 prompt),可选 example.md(样本输入)与 example.html(可直接打开的预览样张);新增模板只需加目录,不改 TS 代码。

next/src/lib/templates/loader.ts
* SKILL.md — frontmatter (id, scenario, tags, …) + prompt body * example.md — (optional) sample input content * example.html — (optional) pre-rendered preview, shown inline in the picker
注:loader 的 loadSkillFromDir 只读这三类文件,没有其它资产装载通道——第二遍据此核对本 skill 的资产可达性。

选择链路(CLI 侧)是三级漏斗:关键词强信号(每命中 1 词 2 分,阈值 3)→ 退化为 tags/scenario 打分 → 仍无把握就把用户内容前 800 字交给本地 agent 做一句话分类。

cli/src/skills-matcher.ts
const CONFIDENCE_THRESHOLD = 3;
注:AI 兜底的 prompt 原文:const prompt = `请用一句话(不超过15个字)描述以下内容最像什么类型的文档,只需回答类型名称:

预览链路独立于生成:/api/templates/<id>/preview 把 example.html 原样以 text/html 返回给 iframe;前端 iframe 用 sandbox="allow-scripts allow-same-origin"。

next/src/components/preview-pane.tsx
sandbox="allow-scripts allow-same-origin"
注:路由注释:* Returns the skill's `example.html` verbatim so it can be loaded into an(宿主侧取舍:allow-scripts + allow-same-origin 组合下,预览页脚本可自行摘掉 sandbox)。

Logo 不是图片而是被要求用 CSS / 内联 SVG 绘制的 4-8 个几何块(圆 / 方 / 三角 / hairline),入场时每块从屏幕外不同方向滑入 + scale 1.4→1.0 + opacity 0→1,错峰 80ms、总时长 1.2s。

next/src/lib/templates/skills/frame-logo-outro/SKILL.md
- 入场动画: 每个块从屏幕外滑入 (±100px 不同方向) + scale 1.4→1.0 + opacity 0→1, 错峰 80ms; 总时长 1.2s。
注:几何块装配是入场主体,位移/缩放/错峰一次性写死。

组装完成后接两段收尾动效:整枚 logo 加 glow bloom(drop-shadow 24px accent 40% 透明),同时一道 shimmer 用 mask-image 横扫 logo(500ms)。

next/src/lib/templates/skills/frame-logo-outro/SKILL.md
description: "Logo 分块组装入场 + glow bloom + tagline 揭示, 适合视频片尾 / 品牌闭幕"
注:bloom + shimmer 是组装完成后的两段收尾。

文字按时间轴分层入场:品牌名 1.4s 起(typewriter 或 fade-up),tagline 1.8s fade in,底部 CTA/元数据行用 11px uppercase + letter-spacing 0.16em + opacity 0.4 + hairline 分隔。

next/src/lib/templates/skills/frame-logo-outro/SKILL.md
- **品牌名**: logo 下方 6-8% 位置, 大字 (Inter Tight / SF Pro Display, 48-72px, weight 700, letter-spacing -0.02em), 入场: typewriter or fade-up after logo bloom (1.4s 开始)。
注:品牌名与 tagline 分层入场,形成明确时间轴。

收尾帧语义被显式规定:整个动画完成后 freeze、不要 loop——因为它是视频结尾帧而不是循环动效。

next/src/lib/templates/skills/frame-logo-outro/SKILL.md
- 单文件 HTML; 整个动画完成后 freeze (不要 loop, 这是视频结尾帧)。
注:freeze 而非 loop:这条决定了交付语义(视频尾帧)。

调色四选一并禁止混用(Midnight Indigo / Solar Amber / Forest Mint / Bone & Ink),且明确 logo 绝不用外链图片、必须纯 CSS/内联 SVG 几何绘制。

next/src/lib/templates/skills/frame-logo-outro/SKILL.md
example_tagline: "Midnight Indigo + glow bloom"
注:四色板 + 禁外链 logo + fallback 文案,兼顾品牌与可离线。

2核心能力

014-8 个几何块的 logo 分块装配动画(错峰 80ms、1.2s 总长)
02glow bloom + shimmer mask 横扫收尾
03品牌名/tagline/CTA 分层时间轴(1.4s / 1.8s)
04收尾 freeze 语义(不 loop)
05四套品牌调色板(Midnight Indigo / Solar Amber / Forest Mint / Bone & Ink)
06logo 必须纯 CSS/内联 SVG,禁外链 logo 图片
07品牌名/tagline 缺失时的 fallback 文案
08动效可被 prefers-reduced-motion 关闭
09选择器关键词:logo / outro / 片尾 / 结尾 / brand

3外部依赖

类型依赖
networkGoogle Fonts(Inter Tight / Inter / Noto Sans SC,示例页实际引用)
networkTailwind Play CDN(共享指令强制;示例页亦引用)
networkhyperframes 目录页(frontmatter 出处标注,非运行时请求)

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

风险提醒:绿色 · 放心使用
  • 『用几何块拼 logo』对复杂品牌标识不友好:曲线丰富或含文字的 logo 很难用 4-8 个块还原,会失真。 — SKILL.md:由 4-8 个几何块 (圆 / 方 / 三角 / hairline) 组成
  • 兜底文案会静默生效:用户没给品牌名/tagline 时模板回落到自家文案,可能误交付。 — SKILL.md:若没有, 跑 fallback "HTML Anything" / "Anything → beautiful HTML"
  • 宿主侧:预览 iframe sandbox="allow-scripts allow-same-origin";动画脚本在预览环境权限宽松。 — sandbox="allow-scripts allow-same-origin"(next/src/components/preview-pane.tsx)
  • 注入面:用户品牌名/tagline 被逐字拼进 prompt 并直接出现在成品画面。 — assemblePrompt 末尾直接拼接【用户内容】
风险提醒:绿色,放心使用。判级对象是本 skill 自身目录(口径:照 SKILL.md 执行后实际会发生什么):SKILL.md 为纯指令文本,随附 example.md/example.html 是样本与预览样张,目录内无脚本、无运行时网络调用、无凭证读取、无 agent 侧文件写入;SKILL.md 也未点名任何外部生成/服务后端(对照 orange 先例 ai-image-generation / seedance:后者把素材送外部生成后端并消耗账号额度;本模板不产生素材外发)。不影响档位的说明项:目录内 example.html 会外链 cdn.tailwindcss.com 与 fonts.googleapis.com(批4 口径:example.html 外链属产物示例,不判级);共享指令层同样要求生成物在 head 里 CDN 引 Tailwind 与 Google Fonts(- 在 \`<head>\` 中通过 CDN 引入 Tailwind v3 Play (https://cdn.tailwindcss.com) 与所需的 Google Fonts。),那是宿主壳层行为。宿主背景(不计入档位,见 verdict.risks):预览 iframe sandbox="allow-scripts allow-same-origin";宿主以全权模式拉起 agent("bypassPermissions", / "--yolo",)。另注:SKILL.md 明令 logo 不得用外链图片(纯 CSS/内联 SVG);目录内无脚本、无凭证、无写盘。

5第二遍独立确认

  • [ok] 装配动画/时间轴规格 — 重读 SKILL.md【布局】四段,逐字复核 ±100px、scale 1.4→1.0、80ms 错峰、1.2s、1.4s/1.8s 等数值。
  • [ok] freeze 语义 — SKILL.md 原文:单文件 HTML; 整个动画完成后 freeze (不要 loop, 这是视频结尾帧)。引用逐字通过。
  • [ok] recommended 定位 — frontmatter recommended: 8;README 推荐组按 recommended 排序 + 截图 docs/screenshots/skills/frame-logo-outro.png 双重印证。
  • [ok] 『禁外链 logo』结论 — SKILL.md 原文:**绝不**: 用外链 logo 图片; logo 必须用纯 CSS / 内联 SVG 几何绘制。;示例页扫描无图片资源域。
  • [ok] 安全面 — 目录内 3 个文件无自写脚本、无凭证、无写盘、无表单外发;示例页仅 Tailwind CDN 标签。
  • [ok] meta 元数据 — GitHub API 实查 stars=8827、pushed_at=2026-09-15T03:36:24Z、license Apache-2.0。
  • [unlocatable] 安装量 — 无公开安装量数据源,installs=null。

6结论

  • 把品牌收尾帧拆成完整时间轴(装配 1.2s → bloom → 品牌名 1.4s → tagline 1.8s → CTA),可直接录屏当片尾,无需后期再排动效。
  • logo 强制几何绘制(禁外链图片),规避版权图与断链,也让帧可离线渲染。
  • freeze 而非 loop 的交付语义明确,避免把片尾当成循环动画交出去。
  • 四套色板含一套非 neon 的 editorial 方案(Bone & Ink),能覆盖非科技风品牌。
  • 进 README 置顶推荐组(recommended: 8)且带官方截图,成品可预期。
  • 适合:适合产品发布视频、品牌片、demo 收尾卡;也适合没有设计资源、需要一帧『看起来是品牌团队做的』片尾的独立开发者与小团队。
    不适合:不适合需要高保真还原既有 logo(含复杂字形/曲线)的品牌;不适合需要循环播放的场景(模板明确 freeze);不适合需要动画与音频精确对齐的复杂剪辑(它只给单帧 + CSS 时间轴)。
    安装 agent 直装可复制
    ① 本站镜像 更新 2026-09-15
    方式 A · 人下载镜像包下载 frame-logo-outro.tar.gz
    sha256: 2b9a714941c3e7ad…
    方式 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;GitHub API spdx_id=Apache-2.0)
    本站信息
    收录日期2026-09-06
    分类设计
    侦查报告AI 侦查 · 2 遍 · 2026-09-06
    本站镜像与 GitHub 原始是不同来源:本站锁定 commit 快照经 /r2 分发;GitHub 为实时上游,内容可能已更新。
    同分类邻近