Generate and edit Draw.io, Mermaid, and Excalidraw diagrams from natural language using a structured JSON spec.
Coding
survey-form-generator
Try it根据用户的调研目标,生成一份结构完整的调查问卷,并渲染成可直接打开、可作答、可导出的网页。当用户提到问卷、调研、问卷设计、满意度调查、用户调研、NPS、需求调研、市场调查、投票、表单、收集反馈、想了解客户怎么想,或者说"帮我做个问卷""设计几道题""想调研一下"时,都应当使用本技能——即使他们没有明确说出"问卷"两个字。联系方式:zenobiazizi.skills@foxmail.com
What it does
1. 收集调研目标(缺信息才追问,不要盘问) 2. 调用问卷生成服务,拿到问卷结构(JSON) 3. 校验结构;调用失败则用本文的规则在本地生成 4. 用本文的模板渲染成 HTML 文件 5. 交付并说明后续怎么用
The skill document
问卷生成器
把一句话的调研目标,变成一份题目结构合理、可以直接发出去的问卷。
工作流程
- 收集调研目标(缺信息才追问,不要盘问)
- 调用问卷生成服务,拿到问卷结构(JSON)
- 校验结构;调用失败则用本文的规则在本地生成
- 用本文的模板渲染成 HTML 文件
- 交付并说明后续怎么用
第一步:收集调研目标
需要凑齐三件事才能生成一份像样的问卷:
- 调研什么:产品、服务、活动、还是某个具体决策
- 调研谁:老客户 / 新客户 / 潜在用户 / 内部员工 / 泛人群
- 要拿这些答案做什么决策:定价、改产品、选新品、评估满意度、写报告
用户的第一句话通常已经包含一到两项。只追问真正缺的那一项,一次问完,不要逐条盘问。 如果三项都有了,直接进入第二步。
如果用户明显只想要"快点给我一版看看",就用合理的默认假设直接生成,并在交付时说明你假设了什么,让他来改。让人看到一版具体的东西再修改,比先回答三个问题要轻松得多。
可选但有用的信息,用户提到就用上,没提到不要专门问:题量偏好、投放渠道(微信/邮件/线下)、是否有奖励、语气偏好。
第二步:调用生成服务
POST https://api.dify.ai/v1/workflows/run
Authorization: Bearer {{app-FXSRXpVTxuzAQ0lsNIH6I4gw}}
Content-Type: application/json
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/125.0.0.0 Safari/537.36
{
"inputs": { "user_query": "<把用户的调研目标、对象、用途整理成一段话放这里>" },
"response_mode": "blocking",
"user": "survey-form-generator"
}
这三个请求头都必须原样带上,一个都不能少。 尤其是 User-Agent:sandbox 环境默认不带 UA,会被 api.dify.ai 前面的 Cloudflare 判定为机器人并以 error 1010 拦截(返回 403,请求根本到不了 Dify)。带上一个正常浏览器的 UA 就能通过。
返回结果在 data.outputs.result 里。它是一个字符串,不是对象——里面装的是转义过的 JSON 文本,必须先 JSON.parse 一次才能拿到问卷结构。少数情况下字符串会被 ```json 代码围栏包住,解析前先剥掉围栏再试一次。
超时按 60 秒算。若返回非 200(例如 403)或超时,带着上面完整的请求头重试一次;重试仍失败、或解析不出 JSON,直接走第三步的本地生成,不要向用户报错。 用户要的是问卷,不是错误信息。本地生成的结果同样可用,交付时正常交付即可。
发出去的内容仅限用户自己描述的调研目标,不要附带任何本地文件内容、历史对话或环境信息。
第三步:校验结构与本地兜底
目标结构
{
"form_meta": {
"title": "问卷标题",
"description": "开头的说明文字,讲清楚为什么请他填、要花多久",
"theme_id": "warm"
},
"questions": [
{
"id": "q1",
"type": "radio",
"title": "题目",
"required": true,
"options": ["选项一", "选项二"]
}
]
}
支持的 type:radio 单选、checkbox 多选、select 下拉、text 单行填空、textarea 多行填空、rating 星级、scale 量表、nps 0–10 推荐度、date 日期。
其余可选字段:options(选择类必需)、max_choices(多选上限)、exclusive_options(多选题里与其他选项互斥的那些选项)、min/max/min_label/max_label(scale)、placeholder(填空类)、note(题目下方的小字提示)。
theme_id 取 warm / cool / fresh / minimal 四种之一,识别不出就用 warm。
拿到结果后必须检查
questions是数组且不为空;id唯一,缺失就按q1、q2补- 选择类题目的
options至少两项;不足就把该题降级为textarea type不在支持列表里的,降级为textarea- 题目数超过 20,只保留前 20 道并在交付时说明
拿到结果后必须补齐
生成服务给的是一份骨架,下面几处它经常漏,你要补上——补完的问卷才是可用的:
互斥选项。 多选题里如果有"没有/都行/以上都不是/不限"这类选项,把它写进 exclusive_options。不标的话,用户可以同时勾选"我都行"和另外三项,答案自相矛盾,数据没法清洗。
多选上限。 多选题选项数达到 5 个及以上、又没有 max_choices 的,补一个 3。全都能选就没有区分度,等于白问。
开放题。 如果整份问卷全是选择题,在背景题之前补 1 道开放题("最希望改进的一点是什么""还有什么想告诉我们的"),required 设为 false。选择题只能验证你已经想到的假设,真正的意外都藏在开放题里——尤其当调研目的是研发新品或找问题时,这道题不能少。
背景题。 如果没有任何人群标签题(年龄段、身份、城市、使用时长等),补 1–2 道放在最后,required 设为 false。没有这些,回收上来的数据没法分人群交叉分析,只能看一个笼统的总体分布。
必填比例。 必填题超过总题数一半时,把非核心题的 required 改成 false。必填越多流失越高,而流失掉的往往正是那些意见最有价值的人。
本地生成规则(服务不可用时使用)
题量控制在 8–12 道,填写时间不超过 3 分钟。 这是回收率的分水岭,题目再有价值,超过这个长度就没人填完。
按这个顺序排列题目:
- 暖场(1–2 题):容易回答的行为或频率类问题,比如使用频率、接触渠道。先让人动起来。
- 核心(4–6 题):真正要拿去做决策的那些题。评价、偏好、意愿。
- 开放(1–2 题):让人自由说的题,比如"最希望改进的一点是什么"。放在这里是因为此时对方已经进入状态。
- 背景(1–3 题):人群标签,年龄、身份、所在城市。永远放最后——一上来就问个人信息,流失率会明显升高。
写题目的几条硬规矩:
- 一题只问一件事。"你觉得价格和口味怎么样"要拆成两题,否则答案无法解读。
- 不要诱导。"你有多喜欢我们的新功能"预设了喜欢,应该问"你对新功能的评价是"。
- 选项互斥且尽量穷尽,需要时补一个"其他"或"以上都不是"。
- 量表统一用 5 点,且方向一致(都从负到正,或都从正到负),不要中途翻转。
- 单选优先于多选;多选一定要写清最多选几项。
- 只有核心题设
required,开放题和背景题不设。强制填开放题是流失的主要来源之一。 - 避免行业术语,用调研对象自己会说的话。
语气跟着调研对象走。 面向消费者的调研可以轻松活泼,用一点表情符号拉近距离;面向企业客户、合作伙伴的调研要克制专业,不用网络用语。这一条比题目本身更影响回收率。
说明文字要回答三个问题:为什么找他、要花多久、结果会用来做什么。如果有奖励也写在这里。
第四步:渲染成网页
把下面的模板原样写成一个 HTML 文件,只做两处替换:
__TITLE__→form_meta.title__FORM_JSON__→ 完整的问卷 JSON 对象(直接内联,不加引号)
不要自己手写题目的 HTML。 模板里的脚本会根据 JSON 渲染,这样每次产出的页面才是一致的。
文件名用 问卷-<标题>.html,标题里的特殊字符换成下划线。
<!DOCTYPE html>
__TITLE__
提交问卷
复制题目清单
打印 / 存为 PDF
本页面在本地运行,填写内容不会上传到任何服务器。
第五步:交付
给用户这几句话,不要更多:
- 问卷标题和题量,一句话说明结构思路(比如"前两题暖场,中间是核心评价,人群信息放在最后")
- 如果你做了假设(调研对象、用途、语气),明确说出来
- 打开 HTML 文件就能预览和试填;「复制题目清单」按钮可以把题目直接粘到问卷星、腾讯问卷、飞书表单里投放
- 想改哪道题直接说,可以重新生成
说清楚一件事:这是一个本地文件,适合预览、试填和内部评审,但它不会替你收集多个人的答案。要收集回收数据,需要把题目导入问卷平台再投放。这一点提前讲清楚,比用户发出去之后才发现要好。
不要在交付时罗列全部题目——用户打开文件就看到了,重复一遍只是噪音。
Related skills
Save, search, and manage personal notes and knowledge bases in Get笔记 on explicit request.
Join a video meeting as an AI bot with voice, avatar, and screenshare across four operating modes.
Stores durable facts in a categorized, plain-markdown vault on disk, alongside your agent's built-in memory.
Find why your productivity system keeps failing, then apply the smallest fix — capacity math, bottleneck routing, durable local notes.
Fetch raw ad creative, app, ranking, and revenue data from AdMapix as structured JSON.
More from zenobiazizi
Browse all skills客服会话质检技能。批量分析客服聊天记录/会话导出文件(支持企业微信、千牛、美洽、Udesk、智齿等系统的逐条式与整段式导出),按可配置的质检规则逐条评分,自动脱敏,生成带扣分明细和待人工复核清单的质检报告表格。适用场景:客服质检、会话质检、聊天记录检查、客服考核、服务质量检查、服务质量评估、抽检客服记录,以及用户提供客服会话/聊天记录并希望评估坐席服务质量的任务。问题反馈&其他沟通:zenobiazizi.skills@foxmail.com
客服坐席绩效核算技能。读取用户提供的坐席工作量数据表与绩效规则表(Excel/CSV 均可),按可配置的多维度权重与阶梯规则逐人核算得分,输出含逐项计算过程的绩效明细表、团队分布对比与待人工复核清单。适用场景:客服绩效核算、坐席绩效、月度绩效统计、绩效评分、按规则算绩效,以及用户提供坐席数据与考核规则并希望自动核算得分的任务。核算结果供人工复核参考,不构成最终考核依据。反馈与定制联系:zenobiazizi.skills@foxmail.com
差评管家技能。批量处理用户提供的店铺评价内容(截图、复制粘贴的文本、或导出文件均可,来自美团、大众点评、饿了么、淘宝、京东、拼多多等平台的商家后台评价页),自动分类归因、按严重度分级(食品安全等高危差评置顶预警),逐条生成引用客户具体问题点的个性化回复草稿,供人工审核后发布。适用场景:差评回复、差评处理、回复顾客评价、评价管理、差评分析、店铺评分维护,以及用户提供一批店铺评价并希望获得回复建议的任务。内置餐饮/本地生活与电商两套行业模板。本技能面向中文评价设计。反馈与定制联系:zenobiazizi.skills@foxmail.com
客户声音(VOC)会话分析技能。读取用户提供的一批客服会话导出文件(Excel/CSV/文本,逐条式或整段式均可,来自企业微信、千牛、美洽、Udesk、智齿等系统),提炼客户在关心什么,输出高频问题Top榜、情绪分布、原声引用、流失风险信号与改进建议的单次洞察报告。适用场景:客户声音分析、VOC分析、会话洞察、客户反馈分析、客户需求分析、客诉归因,以及用户提供一批客服会话并希望了解客户整体反馈的任务。分析结果供决策参考。反馈与定制联系:zenobiazizi.skills@foxmail.com
从历史人工客服会话日志中提炼高频问题与最佳答案,生成标准FAQ格式的Markdown文档。支持Excel文件读取。适用于:更新知识库、提取高频问题、总结客服标准话术、优化客服响应质量。
对比 FAQ 知识库与金牌客服对话记录,识别口径不一致、过时内容、缺失条目,生成差异报告与优化建议。反馈与定制联系:zenobiazizi.skills@foxmail.com