Files
memind/skills/static-page-publish/SKILL.md
T
john fde6503bdf
Memind CI / Test, build, and release guards (push) Has been cancelled
feat(mindspace): add SEO/GEO delivery, page template catalog, and admin hooks
Enable optional SEO/GEO injection and discovery routes for confirmed public pages while keeping private pages noindex. Add premium page template skills, portal catalog API, template shop UI, and Baidu push gated by memind_adm config.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-10 08:06:12 +08:00

14 KiB
Raw Blame History

name, description
name description
static-page-publish 在专属 MindSpace 目录生成可公开访问的静态 HTML 报告与页面(TKMind H5 通用技能)

静态页面 / 报告发布

本技能为 TKMind H5 多用户环境 的通用发布流程。安装到用户工作区后,内容会按用户替换为专属目录与公网前缀。

何时使用

  • 用户要「生成网页 / HTML 报告 / 可视化页面 / 分享链接」
  • 用户提到「放到 MindSpace」「给个能打开的链接」

规则摘要

  1. 可以用 apps__create_app 设计/预览页面,但那一步只是在 Apps 窗口内生成交互式 App,还没有公网链接;只要用户要「可访问的链接」「分享出去」,最后必须把内容 write_file 落到 public/*.html,按下方「回复格式」给出真实链接,不要停在 App 阶段就回复链接
  2. 只在当前用户工作区(会话 working_dir)内读写与搜索,从 . 开始
  3. 查找 CSV/文档时只用相对路径(如 oa/report.csv),禁止去上级目录、MindSpace 根目录、其它用户目录或主机路径搜索
  4. 读 CSV/列目录:用工作区内的 shellls oa/cat file.csv)或 tree禁止用公网 URL 代替
  5. 禁止shell / cat / heredoc / echo / cp 写入 public/*.htmlHTML 必须用 write_file / edit_file(shell 在容器内执行,公网链接会 404)
  6. 公网链接用于让用户浏览器打开已发布的 HTML,不能用来列目录或读数据文件
  7. 静态文件保存即可访问,无需重启
  8. 默认只生成 HTML;不要在没有明确需求时强制生成 Word、PDF、长图等伴生文件
  9. 只有用户明确要求 Word/PDF 等二进制下载 时:文件单独落盘(如 public/方案.docx),链接用相对路径;禁止在 HTML 内用 data:...;base64,... 嵌入 docx(易截断损坏)
  10. 只有用户明确要求长图下载时:必须先 load_skilllong-image-download,调用 generate_long_image 生成同目录 public/<页面名>.long.png,再返回长图预览与下载链接;禁止把 .thumbnail.svg 当成长图
  11. 禁止在 HTML 中用 CDN https://... 引用 <script src>MindSpace 发布页 CSP 仅允许同源脚本。常用库优先用平台路径(如 Chart.js → /assets/chart.umd.min.js),或下载到 public/assets/ 后相对引用
  12. 纯静态页(无 Page Data 问卷/后台)禁止调用 private_data_bind_workspace_pagewrite_file / edit_file 落盘 public/*.html 后,直接按下方「回复格式」交付 MindSpace 路径/MindSpace/<用户ID>/public/...),无需 bind、无需口令
  13. 微信分享必须使用 MindSpace 路径:该路由会在服务端注入 og:site_name=TKMind 智趣、封面缩略图(*.thumbnail.png)与微信 JS-SDK 分享桥;禁止交付 /u/用户名/pages/... 作为用户可见链接
  14. 只要页面接收用户输入并要求以后查看、汇总、统计、修改或删除,就不是纯静态页。禁止使用 localStorage / sessionStorage / IndexedDB 保存任何数据;必须立即 load_skillpage-data-collect,通过 Page Data API 写入当前用户专属 PostgreSQL schema。禁止 SQLite、静态 JSON/JS 文件或内存 fallback 冒充持久化。记账、日记、打卡、清单、台账、问卷、报名及其管理页都适用。
  15. 当编排提示为“图片策略:强制生成”或用户明确要求新图片、背景图、主图、封面、插画、照片时,必须先 load_skillimage-generation,由该技能补齐提示词并调用 sandbox-fs__generate_image;不得要求用户自己提供专业生图参数,不得用 SVG、CSS 绘图、旧素材或网页搜索图片冒充本次生成结果。
  16. 页面 HTML 空间配额:尚未超配额时,平台允许当次页面写完(grace write);已超配额write_file / edit_file 会被直接拦截。空间已满时提示用户清理 MindSpace 旧页面/资产后再继续。

详细约束以工作区内的 .goosehints.agents/skills/static-page-publish/SKILL.md 为准。

推荐工作流

  1. 确认需求(标题、章节、视觉风格、是否需要 hero 图)
  2. write_file 创建 public/页面.html(需要调整已有页面时用 edit_file;需要时在同目录或 assets/ 放主图)
  3. <head> 写入 mindspace-cover(必须与页面主题一致,见下文)
  4. 保存后服务端立即生成 <文件名>.thumbnail.svgAgent 交互阶段即生效)
  5. 按「回复格式」返回可点击公网链接
  6. 若用户明确要求 Word/docx 下载,必须用 generate_docxsandbox-fs 工具)生成 public/<同名>.docx,再确认链接目标已落盘
  7. 若用户明确要求长图下载,必须用 long-image-download 生成 public/<同名>.long.png,并确认文件存在

AI 图片生成(按意图与用户选择)

  • 调用前必须先 load_skillimage-generation;用户只需描述主题与感觉,主体、场景、构图、光线和负面约束由该技能补齐
  • 强制生成:页面主图优先只调用一次 generate_image(purpose=hero);卡片封面和信息流缩略图必须复用这张主图裁剪派生,hero 成功后禁止再调用 card_cover / feed_cover
  • 只有后台关闭 hero、且任务确实只需要某一种封面时,才允许改用一次 card_coverfeed_cover;正文配图 inline_image 仅在后台开启且正文确有需要时单独生成
  • 成功结果必须满足 ok=true、包含 jobId,且 source.mimeTypeimage/pngimage/jpegimage/webp
  • HTML 的 <img>、背景图及 mindspace-cover.cover 必须引用本次返回的 asset.htmlSrcworkspaceRelativePath 只用于工作区文件操作,禁止直接写入 HTML。页面主图默认同时作为缩略图源图
  • 自动:只在用户需求确实需要新主图、背景图、正文配图或封面时调用
  • 关闭:禁止调用 generate_image
  • 强制生成失败时必须如实报告,禁止静默改用 SVG/旧图后宣称图片生成完成

按需伴生下载文件

  • 默认不生成伴生文件;只有用户明确要求下载附件时才生成
  • <a href="report.docx" download> 等相对下载链接,目标文件必须已在 HTML 同目录或子目录
  • 推荐 public/report.html + public/report.docx禁止 HTML 链接名与磁盘文件名不一致
  • 生成 Word 时必须调用 sandbox-fs 的 generate_docx禁止computercontroller / shell 生成生产下载文件作为交付依据
  • oa/ 引用文档时,先 复制public/ 再写链接
  • 交付前 list_dir public/ 自检;可跑 npm run check:mindspace-public-links

回复格式(必须)

向用户交付页面时,必须使用 Markdown 可点击链接

[马来西亚旅游攻略](https://goo.tkmind.cn/MindSpace/<用户ID>/public/malaysia-travel-guide.html)

要求:

  • 必须使用 [页面标题](完整URL),不要只给裸 URL 或「点这里」
  • 页面写入 public/ 时,URL 必须包含 /public/ 路径段(与磁盘路径一致)
  • 域名严格按环境拼接,禁止使用 http://本地服务/... 等占位 host
    • 本地开发http://127.0.0.1:8081/MindSpace/<用户ID>/public/...MindSpace 公开页 + Page Data API
    • 本地开发(经 5173 UI 代理)http://127.0.0.1:5173/MindSpace/<用户ID>/public/...5173 会把 /MindSpace 转发到 Portal不是 5173/public/...
    • 生产https://m.tkmind.cn/MindSpace/<用户ID>/public/... 或环境配置的 H5_PUBLIC_BASE_URL
  • 禁止的错误交付链接(anti-pattern
    • http://127.0.0.1:5173/public/xxx.html — 5173 是 Vite SPA,不托管工作区 public/,会回退 index.html
    • http://127.0.0.1:8081/public/xxx.html — 缺少 /MindSpace/<用户ID>/
    • 把磁盘路径 public/xxx.html 直接拼到任意 host 后面
    • 必须包含 /MindSpace/<用户ID>/public/ 完整路径段(与 Portal 路由一致)
  • HTML 内资源路径不变<img src="assets/hero.webp">mindspace-cover.cover: "assets/hero.webp"相对页面文件的路径仍然正确,不要改成绝对 URL
  • 拿不到真实前缀时,先给相对路径 public/xxx.html 说明,不要自己猜一个域名
  • 标题用页面真实主题名
  • 可同时给出相对路径(如 public/malaysia-travel-guide.html
  • 说明:保存即生效,无需重启
  • 若生成了长图,同时给 [长图预览](.../public/malaysia-travel-guide.long.png)[下载长图](.../public/malaysia-travel-guide.html?download=long-image)

page-template- 通用*:旅游、餐饮、问卷等所有可定价模板,落盘与交付链接规则与本节相同;模板 skill 只负责 HTML 壳与占位符,不要public/xxx.html 直接拼到 5173 或任意 host 后面。

用户已点击「使用模板」时(硬性):必须先 load_skill → 对应 page-template-*,再 read_file templates/*.html仅替换 {{PLACEHOLDER}}write_file;禁止重写 <style>、禁止新增模板外 CSS 类、禁止另起炉灶写新页面。Finish guard 会校验 CSS 选择器是否与官方模板一致。

信息流预览图(必须)

每个 HTML 必须在 <head> 包含与页面主题一致的元数据。系统据此生成 精美的 3:4 信息流封面(工作区 *.thumbnail.svg +「我的空间」卡片 + 保存弹窗预览):

<meta name="description" content="一句话摘要,显示在预览图副标题">
<meta name="mindspace-cover" content='{"tag":"旅行","emoji":"🇲🇾","accent":"#ff6b35","accent2":"#24243e","subtitle":"马来西亚深度游","cover":"assets/hero.jpg"}'>
字段 要求
tag 与主题一致:旅行 / 美食 / 报告 / 运动 / 活动
accent / accent2 页面主色,与 hero/背景 CSS 一致
subtitle 一句话卖点;未写时用 description
cover / image 必须指向高质量主图(相对 HTML 或 https://);见下文
emoji 可选;也可写在 title 中

精美预览图(必须达标)

保存 HTML 后,系统会立即生成 <文件名>.thumbnail.svg 作为卡片封面。要产出可在信息流中直接展示的精美封面,必须:

  1. 视觉类页面(旅行、美食、活动、运动、品牌、产品、促销等)必须assets/ 放置高质量 hero 主图(建议宽度 ≥1200px),并在 cover 字段引用(如 assets/hero.jpg
  2. 纯文字报告可仅用配色 + tag,但仍须保证 accent / subtitle 与页面风格一致
  3. tagaccentaccent2subtitle 必须与页面实际视觉一致;禁止省略 mindspace-cover 或填无关默认值
  4. 若缺少 hero 主图,封面会退化为简陋默认图,视为未达标

禁止省略 mindspace-cover 或填写与页面无关的通用配色;促销/运动/品牌页必须写明 tagaccentcover

本地对比示例:npm run demo:thumbnails/thumbnail-demo/(左侧缺 cover vs 右侧方案 A)

交付前自检(必须)

写完 public/*.html 后,必须运行 cover 合规检查;有 error 则补全元数据后再交付链接:

npm run check:mindspace-cover
# 或指定用户:node scripts/check-mindspace-cover.mjs --user <uuid>
检查项 级别 说明
mindspace-cover meta error 缺失则缩略图为默认绿色渐变
description error 副标题来源
cover raster 主图 warn 缺失则无法生成照片封面
tag / accent / subtitle warn 影响分类与配色
平台品牌页脚 warn 分享与编辑规范

视觉类页面若有 warn missing_cover_image,视为封面未达标,必须补 hero 图后再回复用户。

SEO / GEO 元数据(推荐)

平台在 memind_adm MindSpace 配置 → SEO / GEO 开启后,会对已确认公开access_mode=public 且用户已确认)的发布页自动注入 canonical、结构化数据等。Agent 仍应写好基础 meta,以提升搜索与 AI 引用质量:

<title>页面真实主题</title>
<meta name="description" content="一句话可被搜索/AI 引用的摘要">

可选增强(不强制):

<meta name="mindspace-geo" content='{
  "summary": "可被 AI 搜索直接引用的摘要",
  "keywords": ["关键词1","关键词2"],
  "faq": [{"q":"常见问题?","a":"简短答案"}]
}'>

要求:

  • <title><h1> 一致或高度相关,不要用泛化词如「我的页面」
  • description 必须写满页面主题,禁止空泛默认句
  • 正文使用语义化 <h2> / <h3> 分节,便于 SEO 与 GEO 抽取
  • 私有 / 密码 / 登录可见页面会被平台强制 noindex,无需 Agent 额外处理

平台页脚标记(必须)

页脚平台品牌行必须使用 data-mindspace-page-tag="platform-brand",显示为 TKMind · 智趣禁止使用邮箱或 tkmind.ai

<p data-mindspace-page-tag="platform-brand">TKMind · 智趣</p>

data-mindspace-page-tag 的区域为平台固定信息:用户在编辑模式中不可见、不可改;预览与发布后正常显示。禁止把该行 CSS 透明度设过低(如 opacity: 0.25),否则页内看不见品牌。

中文字体(推荐)

中文页面正文与标题优先使用系统无衬线字体栈,避免 Georgia、Times New Roman 等西文衬线体(中文显示发虚、不协调):

font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", sans-serif;

按需附带文件下载(Word / PDF)

  • 只有用户明确要求 Word / PDF 下载时才生成二进制文件
  • 二进制文件用 docx-generate 脚本或平台允许的方式单独生成,保存到 public/(或 oa/ 再复制到 public/
  • 下载按钮示例:<a href="report.docx" download>下载文档</a>(与 HTML 同目录时用文件名即可)
  • 禁止 <a href="data:application/vnd...;base64,..."> 内嵌 docx/pdf