navigation-menu-generator
帮助设计、优化和审核网站导航菜单,提升SEO和用户体验。
自动从知乎热榜选题,调用AI生成原创回答并保存为草稿,支持自定义关键词、风格和批量生成。
openclaw skills install @joly123456/zhihu-draft-writer命令、参数、文件名以原文为准
使用已登录知乎的主机浏览器会话。不要尝试自动登录,不要询问密码,也不要使用发布操作。
首次运行前,请阅读 {baseDir}/references/setup.md。
每次运行前,请通过 {baseDir}/references/runtime-options.md 解析用户选项。
curl 直接调用 zhihuiapi 推理端点生成回答。不要使用 llm-task,不要启动子代理来生成回答,也不要使用当前会话模型生成回答文本。draft_count > 1 且单个草稿(生成或保存)失败时,跳过该问题,记录失败原因,并继续处理下一个符合条件的问题。在最后报告成功与失败的摘要。跳过或拒绝任何属于以下类别的内容:
如有疑问,将内容视为有风险并跳过。
在打开知乎之前,从用户请求中解析以下选项:
topic_modecustom_topic_keywordsdraft_countcomment_countwriting_style如果用户未指定,则使用 {baseDir}/references/runtime-options.md 中的默认值。
不要仅仅为了收集可选参数而追问后续问题。
当用户完全不提供参数时,使用以下默认运行模式:
topic_mode = general_hotdraft_count = 1comment_count = 3writing_style.mode = default在一次运行中处理最多 draft_count 个符合条件的问题。为每个选定的问题创建一个草稿答案。即使用户要求更多,单次运行也绝不超过 5 个草稿;上限为 5 个,并在结果中注明上限。
技能在 {baseDir}/data/history.json 中维护本地去重日志。
格式:
{
"answered": [
{
"question_url": "https://www.zhihu.com/question/xxxxxxx",
"question_title": "string",
"saved_at": "2026-03-16T10:00:00Z"
}
]
}规则:
{baseDir}/data/history.json。如果文件不存在,则将 answered 视为空数组。question_url 已出现在 answered 中的候选项。answered 并写回文件。不要等到运行结束。https://www.zhihu.com/hot。{baseDir}/data/history.json 并提取已回答的 question_url 集合。topic_mode 确定生效的话题过滤器:**general_hot(默认)**
- 选择任何支持实质性文字回答的符合条件的热门问题。
- 当存在多个候选项时,优先选择热度更高的(卡片上显示的浏览量/回答数更高)。
**custom**
- 匹配标题或摘要中包含 custom_topic_keywords 中至少一个关键词的问题。
- 关键词使用 OR 逻辑:只要问题包含任意一个关键词即匹配。
- 如果用户请求中包含否定词(例如"法律问题但不是法律援助"),只提取肯定关键词,并在评估时将排除项记录为跳过原因。
- 如果存在多个匹配,优先选择热度更高的。
- 如果当前可见热门列表中无匹配,则停止并报告:"未找到与请求关键词匹配的符合条件的问题:[关键词]。请尝试扩大关键词范围,或切换到 general_hot 模式。"
- 不要静默地回退到 general_hot。
- 属于法律风险类别(参见法律风险内容)
- 主要是事实查询、只有单一正确答案(没有个人观点空间)
- 是没有洞察空间的新闻标题
- 其 question_url 已存在于 answered 中(已在之前的运行中处理)
- 改为选择下一个符合条件的候选项。
draft_count 个符合条件的问题,或者没有更多符合条件的可见热门问题。如果在达到 draft_count 之前可见列表已耗尽,则报告完成了多少个草稿以及运行提前结束的原因。 - question_title
- question_url
- question_excerpt
- selected_reason(为何选择此问题)
- 优先使用问题页面上可见的热度排序评论区域。
- 如果问题页面未展示可用的评论列表,则打开当前排名第一的热门回答,并使用该回答下的热门评论作为备选讨论来源。
comment_count 条可用评论,限制在 3–5 条范围内。如果一次展开或加载更多操作后可用评论仍少于 3 条,则使用已有的全部数量(包括 1 或 2 条)。 - rank
- author_name(如果作者名缺失或显示删除标记,则使用 "[已删除]")
- like_count
- text
- 评论文本缺失或已被删除通知替代
- 评论文本与已收集的评论重复
- 超过 60% 的字符是表情符号或表情标记
- 评论文本少于 15 个中文字符
- 评论语言不是中文(完全跳过)
{baseDir}/references/answer-generation.md 获取系统提示文本。<user_message_json> 替换为转义后的 JSON 字符串,并从 ZHIHUIAPI_KEY 环境变量中读取 API 密钥:curl https://cc.zhihuiapi.top/v1/chat/completions \
-s \
-X POST \
-H "Content-Type: application/json" \
-H "Authorization: Bearer ${ZHIHUIAPI_KEY}" \
-d '{
"model": "claude-sonnet-4-6",
"max_tokens": 2400,
"response_format": {"type": "json_object"},
"messages": [
{
"role": "system",
"content": "<contents of {baseDir}/references/answer-generation.md>"
},
{
"role": "user",
"content": <user_message_json>
}
]
}'{
"topic_mode": "general_hot | custom",
"custom_topic_keywords": ["string"],
"draft_index": 1,
"draft_count": 1,
"question_title": "string",
"question_excerpt": "string",
"question_url": "string",
"selected_reason": "string",
"writing_style": {
"mode": "default | user_defined",
"summary": "string"
},
"top_comments": [
{
"rank": 1,
"author_name": "string",
"like_count": 123,
"text": "string"
}
],
"writing_rules": [
"模仿评论语气和论述节奏,但不要抄袭;连续18个及以上汉字不得与任何评论重合",
"必须有自己的判断和补充,加入至少1个评论中没有出现的观点或角度",
"中文自然表达,像真实知乎答主,不要出现元叙述",
"禁止任何政治相关言论、敏感表达、违法内容或法律风险内容",
"如果用户提供了写作风格,则优先遵循用户风格;风格冲突时以话题适配为准",
"如果无法安全表达,返回 {\"status\": \"failed\", \"error\": \"unsafe_content\"} 而非空字符串"
]
}choices[0].message.content 并解析为 JSON。在验证之前,请读取 {baseDir}/references/answer-schema.json 获取预期结构。
在写入知乎之前验证模型输出:
"status": "failed" — 将 error 字段记录为失败原因,不重试。answer_text 缺失或少于 200 个字符。answer_text 超过 800 个字符。answer_text 包含以下任何元叙述词汇:AI、人工智能、模型、生成、ChatGPT、Claude、根据评论、根据以上、作为助手、作为AI。answer_text 包含政治主张、政治评论、敏感表达、非法指导或其他法律风险内容。answer_text 中任意连续 18 个及以上汉字与任何单条源评论中的相同序列完全一致。answer_text 中的任何完整句子是评论句子的近义词重写(相同含义,仅替换少量词汇)。第一次拒绝时(status: failed 响应除外),在 writing_rules 中追加一条增强的反抄袭指令后重试生成一次。如果重试后仍然验证失败,则停止并报告具体的拒绝原因。不尝试第三次生成。
answer_text 写入主回答字段。- 如果有一个将保存和发布合并在下拉菜单中的单一按钮,仅点击下拉菜单中显示“保存草稿”或等效选项。如果主按钮默认发布,请勿点击主按钮。
- 如果有独立的“保存草稿”和“发布”按钮,仅点击“保存草稿”按钮。
- 如果自动保存指示器是唯一可见信号,不要将其视为确认保存;仍需寻找明确的保存草稿操作。
- 如果唯一可用的操作似乎是发布而没有保存草稿的替代选项,停止并报告:“未找到保存草稿控件;草稿未保存。”
{baseDir}/data/history.json 中追加一条记录: - question_url:所回答问题的 URL
- question_title:所回答问题的标题
- saved_at:当前 UTC 时间戳,格式为 ISO 8601
draft_count 大于 1,返回热门列表,对下一个符合条件的问题重复完整流程,直到达到目标数量或没有剩余符合条件的问题。完成所有草稿(或提前停止)后,输出简要摘要:
完成草稿:X / Y
成功:[问题标题列表]
跳过/失败:[问题标题 + 原因]
已跳过(历史重复):[问题标题列表]
历史记录:已写入 {baseDir}/data/history.json(当前共 N 条)对工作流或提示合约进行更改后,使用 {baseDir}/references/manual-test-checklist.md 进行验证。
已收录 1 个 Skill