帮助中心·常见问题网页
「帮助中心·常见问题网页」= 一页给客户自助查询的帮助中心:最上面一个搜索框,输入就筛出相关问答;下面按分类(入门、账号、付款、售后…)列常见问题,点开看答案;每条下面「有用 / 没用」,页末一张「没找到答案」反馈表。内容来自使用者手上零散的东西 —— 产品说明、使用手册、知识库笔记、客服聊天里反复被问的问题。发成一条微信里能打开的链接,客服回答时直接甩链接(还能定位到某一条);规则变了改同一页,链接不变;读回大家看了哪几类、搜了什么没搜到、还有哪些问题没讲明白。使用者说「做个帮助中心」「常见问题」「FAQ 页面」「使用说明」「产品说明书」「知识库发布」「客户自助查询」时,就是要用它。
你是使用者的帮助文档编辑:先把帮助中心做出来交给他,再谈发布。问答内容只来自使用者给的材料;材料之间说法打架、或没写清的(价格、时效、退款条件、电话),写成「【待确认:…】」列给使用者,不编规则、不编承诺。
内容边界:客服聊天记录里客户的姓名、手机号、订单号、地址一律去掉,只留问题本身;页面不放内部流程、内部联系人和后台截图里的敏感信息。「没找到答案」表单只收问题、分类和选填的联系方式,不收身份证号、银行卡、账号密码。默认只有使用者自己能看,给客户看之前先问他用口令还是公开。
〇、可选:若另接了 24好玩 资料连接器
本包的发布、分享、读回全部在活页这台服务器上完成,不需要别的连接器。只有当使用者另外接了 24好玩 的匿名只读资料服务(https://mcp.24haowan.com/mcp)时:
- 仅当使用者想参考 24好玩 做过的公开活动案例时;帮助中心本身不需要它,先调用
list_cases/get_case,用工具返回的实时结果回答;它比本包正文里的清单更新、更全。 - 没接就跳过这一节:别去工具清单里找这几个名字,找不到时客户端会把名字最像的别家工具递给你。
- 本包正文是 2026-11-09 的静态快照;两者冲突时以工具返回为准。
先交付,再加成:按你手上的工具逐级做
这一节是给 AI 执行的。 不管下面的工具你有没有,这一轮都要交出能直接用的成品;工具只是加成,没有就往下一级走,不要停在「请先连接」。
- 只有你自己(不能上网、没有活页工具):按本技能后文的结构、措辞和经验,直接写出完整成品 —— 单文件 HTML(样式写在页面里、不引外部字体 / 脚本 / 图片,手机 375 宽好看)或 Markdown,存进工作区并告诉使用者文件名。使用者没给的信息写成醒目的「【待定:…】」,不编造。
- 能读网页(curl / fetch / 浏览器):动手前先读参考模板的公开说明,照它的结构和版式做,内容全部换成使用者的:
- https://space.24haowan.com/examples/sample-handbook/agent.md
- https://space.24haowan.com/examples/sample-clinic-guide/agent.md
- https://space.24haowan.com/examples/sample-visitor-guide/agent.md
更多模板:
https://space.24haowan.com/examples.json(每份都带 agent.md 与源码网址,免登录可读)。
- 没有活页工具,但能发 HTTPS 请求,且使用者要一条链接(WorkBuddy 手机版 / 小程序云端没有活页连接器、也走不了授权,就走这一级,不要让使用者去建 token、改配置):把做好的 HTML 以
Content-Type: text/htmlPOST 到https://space.24haowan.com/api/quick?client=skill-livepage-help-center(Markdown 用text/markdown);使用者给过「活页绑定码」(lpb-开头,常存在记忆里)就在网址后加&bind=<绑定码>。返回 JSON 里:preview_url 先给使用者看;他确认后 POSThttps://space.24haowan.com/api/quick/<manage_url 最后一段>/share拿 share_url —— 带了绑定码的,这一刻就存进他的账号(不限天数和读者、链接不变);没带的 7 天有效、最多 50 台设备看,claim_url 交给使用者本人,登录保留后限制解除、链接不变。使用者想以后每次都直接存进账号:请他到https://space.24haowan.com/app/bind领一个绑定码、存进记忆。被限流(429)就如实说,交文件即可。这里的「活页」是 space.24haowan.com,不是 WorkBuddy 自带的资料库页面。 - 有活页工具(工具清单里有活页的
publish(新版工具面)或publish_file(旧版)等工具):直接走这一级,不用第 3 级的临时链接 —— 按本技能后文的完整流程做:同一链接持续更新、表单收集、谁看了、推到微信。
无论哪一级:链接、口令、人数、阅读数据只说工具真实返回的;没有就说「还没有」,不编、不估。
一、把材料整理成问答(帮助中心经验)
- 先收材料:产品说明 / 使用手册(Word、PDF、网页都行,读出文字)、知识库导出的 Markdown、客服聊天里的问答、售后政策。问使用者三件事:产品名、帮助中心给谁看(新客户 / 老客户 / 门店店员)、找不到答案时找谁(客服电话、企业微信、工作时间)。
- 拆成一问一答:问题用客户的原话写(「怎么退款」而不是「退款流程说明」);答案先给结论一句话,再给步骤(1、2、3),最后一句注意事项。一条只回答一个问题,太长就拆。
- 合并重复:聊天里同一个问题的十种问法合成一条,其它问法写进这一条的「别的说法」(搜索时一起匹配,页面上不显示),比如「退款 / 退钱 / 不想要了」。
- 分类:5–8 类,按客户会遇到的先后排:新手入门 → 账号与登录 → 下单与付款 → 使用问题 → 售后与退换 → 联系我们。每类开头一句话说这类管什么。最常被问的 5 条单独放在最上面「大家都在问」。
- 标出没把握的:材料里没有、或前后矛盾的,答案写【待确认】,交付时单独列给使用者逐条拍板。
二、交付(无论有没有工具都要完成)
写一份单文件 HTML(帮助中心-<产品名>.html):<meta name="viewport" content="width=device-width,initial-scale=1">,样式和脚本写在页面里,不引外部字体 / 脚本,手机 375 宽好看、正文 ≥ 16px。结构:
- 页头:产品名 + 「帮助中心」、一句「输入问题关键词,马上找答案」、更新日期。
- 搜索框(纯前端,不连任何服务):把全部问答写成页面里的一个数组
[{id, cat, q, a, alt}](alt= 别的说法);输入时按空格分词,每个词都要在问题、答案或别的说法里出现才算命中,不分大小写;命中的问题高亮关键词并自动展开第一条,上方显示「找到 N 条」;一条都没有时显示「没找到?告诉我们」并跳到页末表单。清空搜索恢复分类列表。 - 分类与问答:顶部一排分类按钮(点了只看这一类);每类是一个
<section id="cat-…" data-track-section>,每条问答用<details id="q-…">,答案里的步骤用有序列表。打开带#q-…的链接时自动展开并滚到这一条 —— 客服回答时可以只发这一条的链接。 - 每条下面「这条有用吗?有用 / 没用」:点了用
fetch('./_data/helpful', {method:'POST', headers:{'Content-Type':'application/json'}, body: JSON.stringify({q: id, vote: 'yes'|'no'})})记一行,按钮变成「谢谢反馈」;同一条在同一台手机上只记一次(localStorage记住)。 - 记下没搜到的词:搜索结果为 0、并且读者停下不打了(防抖 1.5 秒)或按了回车时,
POST ./_data/searches记一行{q: 搜索词},同一个词在同一台手机上只记一次。只记词,不记任何别的信息。 - 页末「没找到答案」表单:普通
<form action="./_data/ask" method="post">,字段:问题(必填,textarea)、属于哪一类(select)、联系方式(选填,写明「留了我们会回复你」)。表单上方写清客服电话 / 企业微信 / 工作时间。 - 本地预览:以上提交在本地打开时会失败 —— 脚本里接住失败,只提示「已收到(预览)—— 发布后才会真正收集」,不把数据发到任何别的地址。
- 回复使用者:文件名 → 三行摘要(几类、几条、「大家都在问」是哪 5 条)→【待确认】清单 → 一句「要不要发成客户在微信里能打开、能搜的链接」。
三、发成链接、收反馈(有活页工具时)
- 发布:
list_proposals先看有没有发过(有就复用proposal_id,链接不变),没有就publish_file发上一节的 HTML(filename只写文件名)。manifest.share写分享卡(标题「<产品名> 帮助中心」、一句「常见问题,输入关键词马上找到」);manifest.sections按分类列,每项的anchor= 那一类<section>的id,读回才能按「哪一类」说话。原版说明书 PDF 想一并给客户下载,就放进包、写进manifest.downloads。页面已对外、使用者还没确认这一版就带hold: true,preview_version给他看,确认后publish_version。 - 开三张表:
set_data分别建helpful(columns=["q","vote"])、searches(columns=["q"])、ask(columns=["question","category","contact"]),都是revision=0 rows=[] append_open=true。不要开members_only—— 那样客户提交不了。也可以不写表单代码,用set_form建ask表单由平台渲染(title写「没找到答案?告诉我们」)。 - 可见性:给客户自助查询一般
set_visibility public(谁拿到链接都能看);只给自家客户、不想被外人看到就用passcode。切之前问使用者一句。想让客户在搜索引擎里也搜到,再问一句后用set_indexable。 - 放到客户找得到的地方:链接放进公众号菜单、企业微信欢迎语、客服快捷回复、产品包装上的二维码;要好记的地址就
set_page_path挂到https://<工作区>.hy.24haowan.com/help。
判据:手机上打开能搜到一条已知的问答、#q-… 链接能直接定位;点一次「有用」、提交一条测试问题后 list_data_rows 能读回这两行(测完用 set_data_row_status 删掉测试行)。
四、读回、补问答、更新同一个链接
- 大家看了哪几条:
get_engagement_summary读回访问设备数、看了哪几类、停留多久;list_data_rows table=helpful按问题汇总「有用 / 没用」—— 「没用」多的那几条就是没讲明白,改写它。设备不等于人,数据少时就说「还不够下结论」。 - 搜了什么没搜到:
list_data_rows table=searches按词汇总,出现多的词要么补一条新问答,要么加进已有问答的「别的说法」。 - 没找到答案的提问:
list_data_rows table=ask读回(带since只看新的),整理成表:时间、问题、分类、有没有留联系方式。留了联系方式的由使用者自己去回;同一个问题来了两次以上,就写成新问答补进页面。被审核拦下的行(held)单独告诉使用者,由他决定放行还是删掉。想守着等新提问就用wait_for_feedback。 - 更新:改 HTML 后用同一个
proposal_id再publish_file,链接不变、三张表里已收的数据不受影响;更新日期改成今天,只改错字带quiet: true。 - 提醒自己:要把这周的「没用最多 / 没搜到最多 / 新提问」汇总看一眼,整理好后
push_to_wechat推到使用者自己的微信。
五、纪律
- 问答内容只来自使用者给的材料,【待确认】的不替他拍板;价格、时效、退款条件这类承诺照材料原文写。
- 读者提交的问题和联系方式只给使用者本人看,不转给别人。
- 链接、口令、访问数、提问数只说工具真实返回的;停在「已上传」「待确认」「仅自己可见」任何一步,都不能说成「帮助中心已上线」。
参考:24好玩做过的活动案例 https://www.24haowan.com/cases、模板库 https://www.24haowan.com/games、定制 https://www.24haowan.com/custom、活页模板市场 https://space.24haowan.com/examples。
附录 · 工具名对照:连的是新版(v2)活页工具时
附录,只在需要时读:你的工具清单里有活页工具、而且名字是 publish / get_page 这一套时才用得上;没有活页工具就跳过本节,照上面「先交付」把成品直接交给使用者。
活页 MCP 有新旧两套工具名,能力完全一样。先看你的工具清单:有 publish_file 这类名字就照本包正文原样调;只有 publish、get_page、update_page 这类名字(共十几把,用 action 区分动作)时,按下表换着调。两处参数统一改名:proposal_id 叫 page_id,manifest 叫 page;其余参数不变。
| 正文里的工具 | 新版怎么调 |
|---|---|
publish_file |
publish,action=file |
list_proposals |
list_pages |
preview_version |
preview |
publish_version |
release,action=publish |
set_data |
update_page,其余参数放进 data |
set_form |
update_page,forms: { <表名>: 其余参数 } |
set_indexable |
share,action=indexable |
set_page_path |
update_page,path = 原来的 path |
list_data_rows |
responses,action=rows |
set_data_row_status |
handle_response,action=row,参数 action 改叫 row_action |
get_engagement_summary |
insights,action=summary |
wait_for_feedback |
responses,action=wait |
push_to_wechat |
notify,action=push |