Three-layer grid:Core industry (1 cell) × Industry elements (8 cells) × Scenarios/audiences (16 cells), roll the dice to draw combinations, one-click search to verify popularity.
All widget rendering is done through scripts/render.py —hand-writing HTML is prohibited, just run the script to get the output.
Workflow
Step 1 — Ask for the industry
Use the ask_user_input_v0 tool to ask directly,do not render a widget。
List common industry options + an "Other (enter your own)" fallback, and let the user choose one:
question: "你是做哪个行业的?选一个或告诉我你的行业👇"
type: single_select
options:
- 餐饮 / 食品
- 美妆 / 护肤
- 健身 / 运动
- 母婴 / 亲子
- 家居 / 装修
- 宠物
- 教育 / 知识付费
- 农业 / 三农
- 其他(回复告诉我)
After the user chooses, go directly to Step 2. If they choose "Other", ask one follow-up question, "What do you do?", get the specific industry name, then go to Step 2.
If the user already mentioned the industry in the message when triggering (e.g. "help me do topic selection for the coffee industry"),skip Step 1 and go directly to Step 2。
Step 2 — Generate keywords (internal reasoning, do not output)
After receiving the industry, generate two groups of words in your head,do not output the analysis process。
Ring 2: 8 "industry core elements" (2–4 characters, colloquial)
Produce 1 word from each of the following 8 dimensions:
| Dimension | Description |
|---|---|
| Core pain point | The problem users most want to solve |
| Purchase decision | Key comparison dimensions affecting purchase |
| Usage delight | The most satisfying moment after using it |
| Avoiding pitfalls | The point you regret most after buying the wrong thing |
| Hidden uses | Usages most people don't know about |
| Emotional ritual | Emotional resonance, lifestyle hook |
| Value-for-money comparison | Whether it's worth it, side-by-side comparison |
| Industry jargon | Professional dimensions that insiders pay attention to |
Ring 3: 16 "scenarios/audiences" (8 audiences + 8 channels)
Audience: has a specific situation, no generic terms (not "users", but "people buying XX for the first time") Channel: choose the best match from Xiaohongshu, Douyin, Bilibili, WeChat Channels, Zhihu, livestream e-commerce, offline stores, community promotion, second-hand platforms, vertical communities, influencer reviews, spontaneous user UGC
Step 3 — Render the grid (run the script, hand-writing HTML is prohibited)
After generating the keywords,immediately use bash_tool to run the following command, and pass the output directly to visualize:show_widget:
python /path/to/skill/scripts/render.py grid \
"行业名称" \
'["词1","词2","词3","词4","词5","词6","词7","词8"]' \
'["词1","词2","词3","词4","词5","词6","词7","词8","词9","词10","词11","词12","词13","词14","词15","词16"]'
The script reads references/widget-template.html, combines the industry name, the two groups of keywords, and assets/widget.min.js(inline directly,no CDN/network requests) into the complete widget_code, stdout is the output, pass it directly to visualize:show_widget。
skill installation path: usually at
/mnt/skills/user/grid25/, usebash_toolto confirm the path before executing. Offline self-contained: The rendered output does not depend on external resources; all JS/CSS is bundled and can be copied directly into any environment to run.
Step 4 — Wrap-up
One sentence is enough, for example:
"Tap the dice to draw a combination; if the direction feels right, tap 'Help me find topics' to get usable titles directly."
Step 5 — Search for real topics (also rendered with a script)
Trigger: The message format is grid25搜索选题:{行业} + {要素} + {人群/渠道}
Execution flow:
-
Parse the three keywords
-
Use
web_searchto search:{行业} {要素} {人群} 抖音小红书 爆款标题{行业} {要素} {人群} 内容选题
-
Based on the results, ininternallygenerate 6–8 topic objects (do not output a markdown list), format:
[
{"title": "外卖骑手真实骑了3个月,电动车哪个价位最划算?", "platform": "抖音口播", "tip": "数字+职业身份开头,完播率高"},
{"title": "骑手选车避坑指南:2000和5000的差距在哪", "platform": "小红书图文", "tip": "避坑类收藏率高"}
]
- Immediately run the script to render, outputting a markdown list is prohibited:
python /path/to/skill/scripts/render.py results \
"行业" "要素" "人群" \
'[{"title":"...","platform":"...","tip":"..."},...]'
The script reads references/results-template.html and outputs the complete widget_code, passing it to visualize:show_widget。
The widget includes: combination tag display + each title card (with platform tag, usage suggestion, single-item copy button) + bottom buttons for 'Shuffle', 'Copy all', and 'Switch industry'.
Switch industry
After the user taps 'Switch industry' to trigger sendPrompt , directly go through Step 1 again.