Marked Markdown 渲染器
将以下提示词粘贴到你的 AI 对话框中:
请根据 https://skillhub.cn/install/skillhub.md,安装 @user_f1b049da/xcv20261768。
技能介绍
要解决的问题
当 AI 生成日报、跟进纪要或帮助文档时,输出通常是原始 Markdown。前端最常见的捷径是直接拼接字符串并通过 v-html 注入。然而,一旦内容来源于模型或用户输入,就相当于将不可信 HTML 直接塞进 DOM。一个内嵌的 <script> 标签或 onclick 事件处理器就能立刻触发 XSS 攻击。反之,为了简单的预览而引入功能完整的富文本编辑器,会引入巨大的打包体积膨胀和不必要的复杂性。工具栏、排版面板和协同编辑等功能根本用不上,只会拖慢轻量级展示任务的性能。
核心能力与实现步骤
这个技能旨在提供轻量且安全的 MD 到 HTML 预览,灵感直接来源于工具箱 marked。实现路径具体且聚焦:
- 接入
marked:根据具体产品需求连接库并配置breaks等选项。将解析逻辑封装到统一的mdToSafeHtml函数中,确保调用者无法直接使用原始解析器。 - 渲染前消毒:挂载专用的消毒库(如 DOMPurify)或等效的严格白名单过滤器。硬性规则是:任何源自用户或模型的 HTML 在插入 DOM 之前必须被彻底清理。
- 极简样式:提供涵盖标题、列表和代码块的基础 CSS。不要试图复刻编辑器级的排版,目标是清晰、可用的渲染。
- 严格自测:验证两类截然不同的场景。首先,确保标题、嵌套列表和代码块等标准元素完美渲染。其次,输入包含
<script>标签或onerror属性的恶意 Markdown,确认它们被完全剥除且不会引起页面异常。 - 大文档处理:对于超大文件,截断预览并在末尾附加“完整内容请下载”的明确提示,以防止渲染瓶颈。
适用边界
- 永远不要对不可信的 Markdown 关闭消毒。这是不可协商的硬性约束,而非可配置的偏好。
- 只管渲染,不涉抽取:本技能严格专注于渲染。它不抓取或提取网页内容。像“一键同步文章”这样的功能属于另一个包,不应混淆。
- 保持轻量:避免将繁重的 Word 或 PDF 解析管线强行塞进本技能。这种工作流与轻量预览的理念相悖,且会不必要地臃肿实现。
使用场景
- 团队周报助手将AI生成的跟进纪要渲染为内部网页
- 帮助文档平台将上传的Markdown说明渲染并安全展示
- 内部审核工具将用户提交的变更记录实时渲染为预览
适合人员
- 前端工程师,需安全渲染用户输入的Markdown评论
- 工具开发者,在自动化脚本中生成防XSS的日报网页
- 文档管理员,将协助文档以轻量HTML形式发布到内网