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>
14 KiB
name, description
| name | description |
|---|---|
| static-page-publish | 在专属 MindSpace 目录生成可公开访问的静态 HTML 报告与页面(TKMind H5 通用技能) |
静态页面 / 报告发布
本技能为 TKMind H5 多用户环境 的通用发布流程。安装到用户工作区后,内容会按用户替换为专属目录与公网前缀。
何时使用
- 用户要「生成网页 / HTML 报告 / 可视化页面 / 分享链接」
- 用户提到「放到 MindSpace」「给个能打开的链接」
规则摘要
- 可以用
apps__create_app设计/预览页面,但那一步只是在 Apps 窗口内生成交互式 App,还没有公网链接;只要用户要「可访问的链接」「分享出去」,最后必须把内容write_file落到public/*.html,按下方「回复格式」给出真实链接,不要停在 App 阶段就回复链接 - 只在当前用户工作区(会话
working_dir)内读写与搜索,从.开始 - 查找 CSV/文档时只用相对路径(如
oa/report.csv),禁止去上级目录、MindSpace 根目录、其它用户目录或主机路径搜索 - 读 CSV/列目录:用工作区内的
shell(ls oa/、cat file.csv)或tree;禁止用公网 URL 代替 - 禁止用
shell/cat/heredoc/echo/cp写入public/*.html;HTML 必须用write_file/edit_file(shell 在容器内执行,公网链接会 404) - 公网链接仅用于让用户浏览器打开已发布的 HTML,不能用来列目录或读数据文件
- 静态文件保存即可访问,无需重启
- 默认只生成 HTML;不要在没有明确需求时强制生成 Word、PDF、长图等伴生文件
- 只有用户明确要求 Word/PDF 等二进制下载 时:文件单独落盘(如
public/方案.docx),链接用相对路径;禁止在 HTML 内用data:...;base64,...嵌入 docx(易截断损坏) - 只有用户明确要求长图下载时:必须先
load_skill→long-image-download,调用generate_long_image生成同目录public/<页面名>.long.png,再返回长图预览与下载链接;禁止把.thumbnail.svg当成长图 - 禁止在 HTML 中用 CDN
https://...引用<script src>;MindSpace 发布页 CSP 仅允许同源脚本。常用库优先用平台路径(如 Chart.js →/assets/chart.umd.min.js),或下载到public/assets/后相对引用 - 纯静态页(无 Page Data 问卷/后台)禁止调用
private_data_bind_workspace_page;write_file/edit_file落盘public/*.html后,直接按下方「回复格式」交付 MindSpace 路径(/MindSpace/<用户ID>/public/...),无需 bind、无需口令 - 微信分享必须使用 MindSpace 路径:该路由会在服务端注入
og:site_name=TKMind 智趣、封面缩略图(*.thumbnail.png)与微信 JS-SDK 分享桥;禁止交付/u/用户名/pages/...作为用户可见链接 - 只要页面接收用户输入并要求以后查看、汇总、统计、修改或删除,就不是纯静态页。禁止使用
localStorage/sessionStorage/IndexedDB保存任何数据;必须立即load_skill→page-data-collect,通过 Page Data API 写入当前用户专属 PostgreSQL schema。禁止 SQLite、静态 JSON/JS 文件或内存 fallback 冒充持久化。记账、日记、打卡、清单、台账、问卷、报名及其管理页都适用。 - 当编排提示为“图片策略:强制生成”或用户明确要求新图片、背景图、主图、封面、插画、照片时,必须先
load_skill→image-generation,由该技能补齐提示词并调用sandbox-fs__generate_image;不得要求用户自己提供专业生图参数,不得用 SVG、CSS 绘图、旧素材或网页搜索图片冒充本次生成结果。 - 页面 HTML 空间配额:尚未超配额时,平台允许当次页面写完(grace write);已超配额后
write_file/edit_file会被直接拦截。空间已满时提示用户清理 MindSpace 旧页面/资产后再继续。
详细约束以工作区内的 .goosehints 与 .agents/skills/static-page-publish/SKILL.md 为准。
推荐工作流
- 确认需求(标题、章节、视觉风格、是否需要 hero 图)
write_file创建public/页面.html(需要调整已有页面时用edit_file;需要时在同目录或assets/放主图)- 在
<head>写入 mindspace-cover(必须与页面主题一致,见下文) - 保存后服务端立即生成
<文件名>.thumbnail.svg(Agent 交互阶段即生效) - 按「回复格式」返回可点击公网链接
- 若用户明确要求 Word/docx 下载,必须用
generate_docx(sandbox-fs 工具)生成public/<同名>.docx,再确认链接目标已落盘 - 若用户明确要求长图下载,必须用
long-image-download生成public/<同名>.long.png,并确认文件存在
AI 图片生成(按意图与用户选择)
- 调用前必须先
load_skill→image-generation;用户只需描述主题与感觉,主体、场景、构图、光线和负面约束由该技能补齐 - 强制生成:页面主图优先只调用一次
generate_image(purpose=hero);卡片封面和信息流缩略图必须复用这张主图裁剪派生,hero 成功后禁止再调用card_cover/feed_cover - 只有后台关闭
hero、且任务确实只需要某一种封面时,才允许改用一次card_cover或feed_cover;正文配图inline_image仅在后台开启且正文确有需要时单独生成 - 成功结果必须满足
ok=true、包含jobId,且source.mimeType为image/png、image/jpeg或image/webp - HTML 的
<img>、背景图及mindspace-cover.cover必须引用本次返回的asset.htmlSrc;workspaceRelativePath只用于工作区文件操作,禁止直接写入 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 作为卡片封面。要产出可在信息流中直接展示的精美封面,必须:
- 视觉类页面(旅行、美食、活动、运动、品牌、产品、促销等)必须在
assets/放置高质量 hero 主图(建议宽度 ≥1200px),并在cover字段引用(如assets/hero.jpg) - 纯文字报告可仅用配色 + tag,但仍须保证
accent/subtitle与页面风格一致 tag、accent、accent2、subtitle必须与页面实际视觉一致;禁止省略 mindspace-cover 或填无关默认值- 若缺少 hero 主图,封面会退化为简陋默认图,视为未达标
禁止省略 mindspace-cover 或填写与页面无关的通用配色;促销/运动/品牌页必须写明 tag、accent 和 cover。
本地对比示例: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