liuzhiheng 3 天之前
父節點
當前提交
ab6e372602
共有 44 個文件被更改,包括 1401 次插入3214 次删除
  1. 4 0
      knowledge_v2/.cache/557e5ce27c1c/execution_record.json
  2. 1 0
      knowledge_v2/.cache/557e5ce27c1c/function_knowledge/extracted_params.json
  3. 1 0
      knowledge_v2/.cache/557e5ce27c1c/function_knowledge/selected_tool.json
  4. 14 0
      knowledge_v2/.cache/557e5ce27c1c/function_knowledge/tool_call.json
  5. 20 0
      knowledge_v2/.cache/557e5ce27c1c/question.txt
  6. 0 14
      knowledge_v2/.cache/70a208f70a7e/execution_record.json
  7. 0 5
      knowledge_v2/.cache/70a208f70a7e/function_knowledge/generated_query.json
  8. 0 1
      knowledge_v2/.cache/70a208f70a7e/function_knowledge/selected_tool.json
  9. 0 18
      knowledge_v2/.cache/70a208f70a7e/knowledge.txt
  10. 0 2
      knowledge_v2/.cache/70a208f70a7e/llm_search/search_results/search_result_001.json
  11. 0 1
      knowledge_v2/.cache/70a208f70a7e/multi_search/match_tools.json
  12. 0 18
      knowledge_v2/.cache/70a208f70a7e/multi_search/merged_knowledge.txt
  13. 0 1
      knowledge_v2/.cache/70a208f70a7e/multi_search/merged_knowledge_detail.json
  14. 0 1
      knowledge_v2/.cache/70a208f70a7e/question.txt
  15. 0 14
      knowledge_v2/.cache/996e626b9c85/execution_record.json
  16. 0 1
      knowledge_v2/.cache/996e626b9c85/function_knowledge/extracted_params.json
  17. 0 5
      knowledge_v2/.cache/996e626b9c85/function_knowledge/generated_query.json
  18. 0 1
      knowledge_v2/.cache/996e626b9c85/function_knowledge/selected_tool.json
  19. 0 13
      knowledge_v2/.cache/996e626b9c85/function_knowledge/tool_call.json
  20. 0 1
      knowledge_v2/.cache/996e626b9c85/question.txt
  21. 4 0
      knowledge_v2/.cache/d0608df43f77/execution_record.json
  22. 1 0
      knowledge_v2/.cache/d0608df43f77/function_knowledge/extracted_params.json
  23. 1 0
      knowledge_v2/.cache/d0608df43f77/function_knowledge/selected_tool.json
  24. 14 0
      knowledge_v2/.cache/d0608df43f77/function_knowledge/tool_call.json
  25. 20 0
      knowledge_v2/.cache/d0608df43f77/question.txt
  26. 0 14
      knowledge_v2/.cache/dd8dd68ebf0c/execution_record.json
  27. 0 7
      knowledge_v2/.cache/dd8dd68ebf0c/function_knowledge/extracted_params.json
  28. 0 5
      knowledge_v2/.cache/dd8dd68ebf0c/function_knowledge/generated_query.json
  29. 0 1
      knowledge_v2/.cache/dd8dd68ebf0c/function_knowledge/selected_tool.json
  30. 0 16
      knowledge_v2/.cache/dd8dd68ebf0c/function_knowledge/tool_call.json
  31. 0 1
      knowledge_v2/.cache/dd8dd68ebf0c/question.txt
  32. 1 1
      knowledge_v2/execution_collector.py
  33. 44 42
      knowledge_v2/function_knowledge.py
  34. 30 29
      knowledge_v2/llm_search_knowledge.py
  35. 14 11
      knowledge_v2/multi_search_knowledge.py
  36. 2 10
      knowledge_v2/prompt/all_tools_infos.md
  37. 31 47
      knowledge_v2/prompt/all_tools_params.md
  38. 28 7
      knowledge_v2/prompt/function_knowledge_extract_tool_params_prompt.md
  39. 49 82
      knowledge_v2/prompt/function_knowledge_select_tools_prompt.md
  40. 68 4
      knowledge_v2/prompt/llm_search_generate_query_prompt.md
  41. 46 34
      knowledge_v2/visualization/workflow_visualization.py
  42. 0 1429
      knowledge_v2/visualization/workflow_visualization_20251205_144231.html
  43. 0 1378
      knowledge_v2/visualization/workflow_visualization_20251205_151800.html
  44. 1008 0
      knowledge_v2/visualization/workflow_visualization_20251208_165958.html

File diff suppressed because it is too large
+ 4 - 0
knowledge_v2/.cache/557e5ce27c1c/execution_record.json


File diff suppressed because it is too large
+ 1 - 0
knowledge_v2/.cache/557e5ce27c1c/function_knowledge/extracted_params.json


File diff suppressed because it is too large
+ 1 - 0
knowledge_v2/.cache/557e5ce27c1c/function_knowledge/selected_tool.json


+ 14 - 0
knowledge_v2/.cache/557e5ce27c1c/function_knowledge/tool_call.json

@@ -0,0 +1,14 @@
+{
+  "tool_name": "new_red_hot_search_words_ranking",
+  "arguments": {
+    "typeV1": "美食",
+    "rankDate": "2025-11-07"
+  },
+  "result": "未找到 2025-11-07 日期 美食 分类的热搜词数据",
+  "response": {
+    "success": true,
+    "result": "未找到 2025-11-07 日期 美食 分类的热搜词数据",
+    "tool_name": "new_red_hot_search_words_ranking",
+    "call_type": "api"
+  }
+}

+ 20 - 0
knowledge_v2/.cache/557e5ce27c1c/question.txt

@@ -0,0 +1,20 @@
+1.已知信息账号人设:
+-账号的品类:宠物表情包账号
+-人设里能和该贴匹配的点:
+鼓励式猫咪表情包-猫咪考试祝福
+推广饮品品牌-推广餐饮品牌
+互动粉丝-互动特点人群
+拟人化猫咪形象-拟人化猫咪形象
+表情包式图文-表情包式视觉风格
+情景化植入-强关联场景植入
+-账号聚出来的pattern模式:
+模式1: 拟人化穿搭+趣味分享意图, 萌宠主题内容+拟人化主体,视觉构图版式....
+模式2:校园学生人设+商业推广意图,商业产品推厂+场景化产品植入
+模式3:日常生活演绎+萌宠主题内容+图文叙事结构
+模式4:视觉隐喻+趣味分享意图+视觉构图版式
+
+2.待寻找点:
+-社交媒体解构贴中未与账号人设匹配的信息
+饺子品牌
+
+3.帖子创作日期:2025-11-07

File diff suppressed because it is too large
+ 0 - 14
knowledge_v2/.cache/70a208f70a7e/execution_record.json


+ 0 - 5
knowledge_v2/.cache/70a208f70a7e/function_knowledge/generated_query.json

@@ -1,5 +0,0 @@
-{
-  "prompt": "你是一个问题转换助手。你的任务是将用户的问题,转换一个用于搜索或调用工具的查询语句(Query)。\n\n用户问题:\n女儿的生日派对这个选题点怎么来的\n\n转换规则:\n- 提取问题中的 主体对象\n- 将问题转换成 用什么工具获取 [主体对象] query格式\n\n示例:\n用户问题: “教资查分”这个选题点怎么来的\n主体对象: “教资查分”选题点\n转换的Query: 用什么工具获取“教资查分”选题点\n\n请分析上述信息,按要求生成Query语句。\n只输出Query语句,不要包含任何解释。",
-  "response": "用什么工具获取女儿的生日派对这个选题点 query",
-  "query": "用什么工具获取女儿的生日派对这个选题点 query"
-}

File diff suppressed because it is too large
+ 0 - 1
knowledge_v2/.cache/70a208f70a7e/function_knowledge/selected_tool.json


+ 0 - 18
knowledge_v2/.cache/70a208f70a7e/knowledge.txt

@@ -1,18 +0,0 @@
-要围绕“女儿的生日派对”这个选题点进行内容创作或策划,其“来源”或生成过程主要涉及通过一系列工具和方法来获取灵感、信息和制定执行方案。这可以归纳为以下几个方面:
-
-### 1. 灵感与创意获取
-
-*   **社交媒体平台:** 小红书、Instagram、Pinterest等是获取派对主题、布置创意和DIY点子的主要来源。用户在此分享大量真实的派对照片、视频和经验贴,从中可以了解最新的流行主题,如独角兽、小黄鸭或公主风等。
-*   **视频平台:** YouTube、Bilibili等平台通过搜索“低成本生日派对”、“XX岁女孩生日派对”等关键词,能观看详细的策划和布置过程视频,提供直观且可操作的灵感。
-
-### 2. 实用策划与执行
-
-*   **在线邀请函制作工具:** Canva、金数据、腾讯问卷等工具可用于创建精美的电子邀请函,并能方便地集成RSVP(请回复)功能,以便统计派对人数。
-*   **清单与项目管理工具:** 滴答清单(TickTick)、微软To Do或Excel表格等,可用于制定详细的待办事项清单,包括预算、采购清单和时间安排,确保策划过程不遗漏任何环节。
-*   **本地生活服务平台:** 大众点评、美团等平台可用于搜索和预订附近的亲子餐厅、室内游乐场、派对策划公司或蛋糕房等服务。
-
-### 3. 信息查询与学习
-
-*   **搜索引擎:** 百度、谷歌等搜索引擎是解决具体疑问的关键工具。通过输入“4岁女孩生日派对游戏”、“低预算生日派对食物”、“生日派对注意事项”等关键词,可以找到大量博客文章、论坛讨论(如知乎、Reddit)和专业指南,从而了解不同年龄段孩子的派对要点、避坑指南和花费参考。
-
-综上所述,“女儿的生日派对”这一选题点的生成,是一个通过结合社交媒体和视频平台获取灵感,利用在线工具进行规划和执行,并通过搜索引擎解决具体问题的高效策划过程。

File diff suppressed because it is too large
+ 0 - 2
knowledge_v2/.cache/70a208f70a7e/llm_search/search_results/search_result_001.json


File diff suppressed because it is too large
+ 0 - 1
knowledge_v2/.cache/70a208f70a7e/multi_search/match_tools.json


+ 0 - 18
knowledge_v2/.cache/70a208f70a7e/multi_search/merged_knowledge.txt

@@ -1,18 +0,0 @@
-女儿的生日派对这一选题点,可以通过以下工具和方法进行灵感获取、信息查询及策划执行,从而使内容或派对本身得以具体化和完善:
-
-### 1. 灵感与创意获取
-
-*   **社交媒体平台:** 小红书、Instagram、Pinterest等平台汇集了大量用户分享的派对照片、视频和经验贴,是发现最新流行主题(如独角兽、小黄鸭、公主风)、布置创意和DIY点子的宝库。
-*   **视频平台:** YouTube、Bilibili等平台可搜索“低成本生日派对”、“XX岁女孩生日派对”等关键词,通过观看详细的策划和布置过程视频,获取直观且可操作的灵感。
-
-### 2. 实用策划与执行
-
-*   **在线邀请函制作工具:** Canva、金数据、腾讯问卷等工具可用于轻松创建精美的电子邀请函,并支持RSVP(请回复)功能,便于统计派对人数。
-*   **清单与项目管理工具:** 滴答清单(TickTick)、微软To Do或Excel表格等,有助于制定详细的待办事项清单,包括预算、采购清单和时间安排,确保派对筹备不遗漏任何环节。
-*   **本地生活服务平台:** 大众点评、美团等平台可用于搜索和预订附近的亲子餐厅、室内游乐场、派对策划公司、蛋糕房等服务。
-
-### 3. 信息查询与学习
-
-*   **搜索引擎:** 百度、谷歌等搜索引擎是解答具体疑问的强大工具。输入“4岁女孩生日派对游戏”、“低预算生日派对食物”、“生日派对注意事项”等关键词,可以找到大量博客文章、论坛讨论(如知乎、Reddit)和专业指南,了解不同年龄段孩子派对的要点、避坑指南及花费参考。
-
-总而言之,通过将社交媒体/视频平台作为灵感来源,利用在线工具进行邀请和规划,并通过搜索引擎解决具体问题,可以高效地展开和完善“女儿生日派对”这个选题点。

File diff suppressed because it is too large
+ 0 - 1
knowledge_v2/.cache/70a208f70a7e/multi_search/merged_knowledge_detail.json


+ 0 - 1
knowledge_v2/.cache/70a208f70a7e/question.txt

@@ -1 +0,0 @@
-女儿的生日派对这个选题点怎么来的||发帖时间:2025-09-16||

File diff suppressed because it is too large
+ 0 - 14
knowledge_v2/.cache/996e626b9c85/execution_record.json


File diff suppressed because it is too large
+ 0 - 1
knowledge_v2/.cache/996e626b9c85/function_knowledge/extracted_params.json


+ 0 - 5
knowledge_v2/.cache/996e626b9c85/function_knowledge/generated_query.json

@@ -1,5 +0,0 @@
-{
-  "prompt": "你是一个问题转换助手。你的任务是将用户的问题,转换一个用于搜索或调用工具的查询语句(Query)。\n\n用户问题:\n花艺造型蛋糕这个选题点怎么来的\n\n转换规则:\n- 提取问题中的 主体对象\n- 将问题转换成 用什么工具获取 [主体对象] query格式\n\n示例:\n用户问题: “教资查分”这个选题点怎么来的\n主体对象: “教资查分”选题点\n转换的Query: 用什么工具获取“教资查分”选题点\n\n请分析上述信息,按要求生成Query语句。\n只输出Query语句,不要包含任何解释。",
-  "response": "用什么工具获取花艺造型蛋糕这个选题点",
-  "query": "用什么工具获取花艺造型蛋糕这个选题点"
-}

File diff suppressed because it is too large
+ 0 - 1
knowledge_v2/.cache/996e626b9c85/function_knowledge/selected_tool.json


+ 0 - 13
knowledge_v2/.cache/996e626b9c85/function_knowledge/tool_call.json

@@ -1,13 +0,0 @@
-{
-  "tool_name": "new_red_hot_search_words_search",
-  "arguments": {
-    "prompt": "输入关键词\"花艺造型蛋糕\",获取该词在小红书的热度值、近90天趋势曲线、声量概览(笔记数、总热度、热门天数、热门内容领域、高频搭配词),以此评估其作为选题点的潜力与创作方向。"
-  },
-  "result": "## \"花艺造型蛋糕\"关键词数据分析结果\n\n**关键词**: 花艺造型蛋糕\n\n**平台**: 小红书\n\n**主要发现**:\n1. **热度值**: 该关键词未达到小红书热搜榜单的门槛,无法获取具体的热度值数据\n2. **趋势曲线**: 由于未上榜,近90天的趋势曲线数据不可用\n3. **声量概览**:\n   - 笔记数: 数据不可用(未达到展示门槛)\n   - 总热度: 数据不可用(未达到展示门槛)\n   - 热门天数: 数据不可用(未达到展示门槛)\n   - 热门内容领域: 数据不可用(未达到展示门槛)\n   - 高频搭配词: 数据不可用(未达到展示门槛)\n\n**选题潜力评估**:\n- **热度水平**: 较低。该关键词在小红书平台上的讨论度和关注度不足以进入热搜榜单\n- **创作方向建议**:\n  1. 考虑使用更热门的相关关键词,如\"蛋糕\"、\"花艺\"、\"甜品\"等单独词汇\n  2. 或者尝试组合其他热门元素,如\"ins风花艺蛋糕\"、\"网红花艺蛋糕\"等\n  3. 可以关注页面推荐的热门热搜词,如\"美食VLOG\"、\"美食制作\"等,将花艺蛋糕内容融入这些热门话题中\n\n**建议**:\n由于\"花艺造型蛋糕\"关键词热度较低,建议调整选题策略:\n1. 扩大关键词范围,使用更通用的词汇\n2. 关注相关但更热门的话题标签\n3. 结合当前热门趋势(如页面显示的\"美食VLOG\"、\"美食制作\"等)来包装花艺蛋糕内容\n\n这个结果表明,虽然花艺造型蛋糕可能是一个有创意的内容方向,但在小红书平台上目前的热度不足以支撑作为独立的热门选题点.",
-  "response": {
-    "success": true,
-    "result": "{\"result\": {\"image_url\": [], \"content\": \"## \\\"花艺造型蛋糕\\\"关键词数据分析结果\\n\\n**关键词**: 花艺造型蛋糕\\n\\n**平台**: 小红书\\n\\n**主要发现**:\\n1. **热度值**: 该关键词未达到小红书热搜榜单的门槛,无法获取具体的热度值数据\\n2. **趋势曲线**: 由于未上榜,近90天的趋势曲线数据不可用\\n3. **声量概览**: \\n   - 笔记数: 数据不可用(未达到展示门槛)\\n   - 总热度: 数据不可用(未达到展示门槛)\\n   - 热门天数: 数据不可用(未达到展示门槛)\\n   - 热门内容领域: 数据不可用(未达到展示门槛)\\n   - 高频搭配词: 数据不可用(未达到展示门槛)\\n\\n**选题潜力评估**:\\n- **热度水平**: 较低。该关键词在小红书平台上的讨论度和关注度不足以进入热搜榜单\\n- **创作方向建议**: \\n  1. 考虑使用更热门的相关关键词,如\\\"蛋糕\\\"、\\\"花艺\\\"、\\\"甜品\\\"等单独词汇\\n  2. 或者尝试组合其他热门元素,如\\\"ins风花艺蛋糕\\\"、\\\"网红花艺蛋糕\\\"等\\n  3. 可以关注页面推荐的热门热搜词,如\\\"美食VLOG\\\"、\\\"美食制作\\\"等,将花艺蛋糕内容融入这些热门话题中\\n\\n**建议**:\\n由于\\\"花艺造型蛋糕\\\"关键词热度较低,建议调整选题策略:\\n1. 扩大关键词范围,使用更通用的词汇\\n2. 关注相关但更热门的话题标签\\n3. 结合当前热门趋势(如页面显示的\\\"美食VLOG\\\"、\\\"美食制作\\\"等)来包装花艺蛋糕内容\\n\\n这个结果表明,虽然花艺造型蛋糕可能是一个有创意的内容方向,但在小红书平台上目前的热度不足以支撑作为独立的热门选题点。\", \"video_url\": []}, \"success\": true, \"error\": \"\"}",
-    "tool_name": "new_red_hot_search_words_search",
-    "call_type": "browser_auto_operate"
-  }
-}

+ 0 - 1
knowledge_v2/.cache/996e626b9c85/question.txt

@@ -1 +0,0 @@
-花艺造型蛋糕这个选题点怎么来的||发帖时间:2025-09-16||

File diff suppressed because it is too large
+ 4 - 0
knowledge_v2/.cache/d0608df43f77/execution_record.json


File diff suppressed because it is too large
+ 1 - 0
knowledge_v2/.cache/d0608df43f77/function_knowledge/extracted_params.json


File diff suppressed because it is too large
+ 1 - 0
knowledge_v2/.cache/d0608df43f77/function_knowledge/selected_tool.json


+ 14 - 0
knowledge_v2/.cache/d0608df43f77/function_knowledge/tool_call.json

@@ -0,0 +1,14 @@
+{
+  "tool_name": "new_red_TopicRanking",
+  "arguments": {
+    "type": "萌宠",
+    "rankDate": "2025-11-07"
+  },
+  "result": "未找到 2025-11-07 日期 萌宠 分类的话题数据",
+  "response": {
+    "success": true,
+    "result": "未找到 2025-11-07 日期 萌宠 分类的话题数据",
+    "tool_name": "new_red_TopicRanking",
+    "call_type": "api"
+  }
+}

+ 20 - 0
knowledge_v2/.cache/d0608df43f77/question.txt

@@ -0,0 +1,20 @@
+1.已知信息账号人设:
+-账号的品类:宠物表情包账号
+-人设里能和该贴匹配的点:
+鼓励式猫咪表情包-猫咪考试祝福
+推广饮品品牌-推广餐饮品牌
+互动粉丝-互动特点人群
+拟人化猫咪形象-拟人化猫咪形象
+表情包式图文-表情包式视觉风格
+情景化植入-强关联场景植入
+-账号聚出来的pattern模式:
+模式1: 拟人化穿搭+趣味分享意图, 萌宠主题内容+拟人化主体,视觉构图版式....
+模式2:校园学生人设+商业推广意图,商业产品推厂+场景化产品植入
+模式3:日常生活演绎+萌宠主题内容+图文叙事结构
+模式4:视觉隐喻+趣味分享意图+视觉构图版式
+
+2.待寻找点:
+-社交媒体解构贴中未与账号人设匹配的信息
+考试祝福
+
+3.帖子创作日期:2025-11-07

File diff suppressed because it is too large
+ 0 - 14
knowledge_v2/.cache/dd8dd68ebf0c/execution_record.json


+ 0 - 7
knowledge_v2/.cache/dd8dd68ebf0c/function_knowledge/extracted_params.json

@@ -1,7 +0,0 @@
-{
-  "prompt": "你是一个API调用专家。你的任务是根据已经选择的工具及使用方法信息生成正确的调用参数。\n\n选择的工具调用ID:\nnew_red_hot_search_words_search\n选择的工具使用方法:\n输入关键词\"教资查分\",获取该词在小红书的热度值、近90天热度值趋势曲线、声量概览及相关搜索结果,从而判断其作为选题点的热度和趋势,辅助选题决策。\n\n所有的工具参数定义:\n{\n    \"name\": \"新红热搜词搜索\",\n    \"description\": \"提供小红书热搜词深度检索与趋势分析服务,输入关键词即可获取全维度数据表现:核心包含热度值(实时动态更新)、声量概览(笔记数、总热度、热门天数、热门内容领域、高频搭配词)、近 90 天热度值趋势曲线(支持自定义时间区间)、相关搜索结果。可直观呈现关键词种草趋势、流量峰值时段、高转化内容特征,帮助用户优化笔记标题关键词布局、预判话题生命周期。\",\n    \"inputSchema\": {\n        \"type\": \"object\",\n        \"properties\": {\n            \"prompt\": {\n                \"type\": \"string\",\n                \"description\": \"用户使用方法,包括输入的关键词\"\n            }\n        },\n        \"required\": [\n            \"prompt\"\n        ]\n    }\n}\n\n请分析工具的参数要求,根据查询内容提取或推断出合适的参数值。\n\n输出格式:请以 JSON 格式输出参数字典,例如:\n{\n    \"param1\": \"value1\",\n    \"param2\": \"value2\"\n}\n\n注意事项:\n1. 只输出参数的JSON字典,不要包含任何解释\n2. 参数名必须与工具定义中的参数名完全一致\n3. 参数值要从查询中提取或合理推断\n4. 不要添加工具定义中没有的参数\n5. 如果某个参数无法从查询中获取,使用合理的默认值或省略该参数\n\n只输出JSON,不要包含markdown标记。",
-  "response": "{\n    \"prompt\": \"输入关键词\\\"教资查分\\\",获取该词在小红书的热度值、近90天热度值趋势曲线、声量概览及相关搜索结果,从而判断其作为选题点的热度和趋势,辅助选题决策。\"\n}",
-  "params": {
-    "prompt": "输入关键词\"教资查分\",获取该词在小红书的热度值、近90天热度值趋势曲线、声量概览及相关搜索结果,从而判断其作为选题点的热度和趋势,辅助选题决策。"
-  }
-}

+ 0 - 5
knowledge_v2/.cache/dd8dd68ebf0c/function_knowledge/generated_query.json

@@ -1,5 +0,0 @@
-{
-  "prompt": "你是一个问题转换助手。你的任务是将用户的问题,转换一个用于搜索或调用工具的查询语句(Query)。\n\n用户问题:\n教资查分这个选题点怎么来的\n\n转换规则:\n- 提取问题中的 主体对象\n- 将问题转换成 用什么工具获取 [主体对象] query格式\n\n示例:\n用户问题: “教资查分”这个选题点怎么来的\n主体对象: “教资查分”选题点\n转换的Query: 用什么工具获取“教资查分”选题点\n\n请分析上述信息,按要求生成Query语句。\n只输出Query语句,不要包含任何解释。",
-  "response": "用什么工具获取 教资查分这个选题点",
-  "query": "用什么工具获取 教资查分这个选题点"
-}

File diff suppressed because it is too large
+ 0 - 1
knowledge_v2/.cache/dd8dd68ebf0c/function_knowledge/selected_tool.json


+ 0 - 16
knowledge_v2/.cache/dd8dd68ebf0c/function_knowledge/tool_call.json

@@ -1,16 +0,0 @@
-{
-  "tool_name": "new_red_hot_search_words_search",
-  "arguments": {
-    "prompt": "输入关键词\"教资查分\",获取该词在小红书的热度值、近90天热度值趋势曲线、声量概览及相关搜索结果,从而判断其作为选题点的热度和趋势,辅助选题决策。"
-  },
-  "result": "## \"教资查分\"关键词数据表现和趋势分析\n\n### 热度值\n- 近30天热度值超过96.14%全站其他词\n- 近30天热度值超过95.86%教育领域其他词\n\n### 声量概览\n- **笔记数**: 16篇(环比增长700.00%)\n- **总热度**: 4082(环比增长408100.00%)\n- **热门天数**: 4/30天\n- **近30天热门内容领域**:\n  - 教育: 56.25%\n  - 职场: 31.25%\n  - 运动健身: 6.25%\n- **高频搭配词**: 暂无相关数据\n\n### 热度值趋势\n- **整体趋势**: 下降趋势\n- **效果分析**:\n  - TOP1下降趋势: 2025-11-07 至 2025-11-08\n  - TOP2下降趋势: 2025-11-04 至 2025-11-05\n\n### 相关搜索结果\n- 共1条搜索结果\n- 内容领域分布: 教育、职场等领域为主\n\n从数据可以看出,\"教资查分\"这个关键词在近期有显著的热度增长,但目前呈现下降趋势。该关键词主要与教育和职场领域相关,这符合教师资格证查询分数的实际应用场景。虽然笔记数量不多(16篇),但环比增长非常高,表明这是一个短期内突然受到关注的话题。",
-  "response": {
-    "result": {
-      "image_url": [],
-      "content": "## \"教资查分\"关键词数据表现和趋势分析\n\n### 热度值\n- 近30天热度值超过96.14%全站其他词\n- 近30天热度值超过95.86%教育领域其他词\n\n### 声量概览\n- **笔记数**: 16篇(环比增长700.00%)\n- **总热度**: 4082(环比增长408100.00%)\n- **热门天数**: 4/30天\n- **近30天热门内容领域**:\n  - 教育: 56.25%\n  - 职场: 31.25%\n  - 运动健身: 6.25%\n- **高频搭配词**: 暂无相关数据\n\n### 热度值趋势\n- **整体趋势**: 下降趋势\n- **效果分析**:\n  - TOP1下降趋势: 2025-11-07 至 2025-11-08\n  - TOP2下降趋势: 2025-11-04 至 2025-11-05\n\n### 相关搜索结果\n- 共1条搜索结果\n- 内容领域分布: 教育、职场等领域为主\n\n从数据可以看出,\"教资查分\"这个关键词在近期有显著的热度增长,但目前呈现下降趋势。该关键词主要与教育和职场领域相关,这符合教师资格证查询分数的实际应用场景。虽然笔记数量不多(16篇),但环比增长非常高,表明这是一个短期内突然受到关注的话题。",
-      "video_url": []
-    },
-    "success": true,
-    "error": ""
-  }
-}

+ 0 - 1
knowledge_v2/.cache/dd8dd68ebf0c/question.txt

@@ -1 +0,0 @@
-教资查分这个选题点怎么来的||发帖时间:2025.11.07||

+ 1 - 1
knowledge_v2/execution_collector.py

@@ -57,7 +57,7 @@ class ExecutionCollector:
                 "result": None,
             },
             "metadata": {
-                "execution_time": input_info.get("execution_time", 0),
+                # "execution_time": input_info.get("execution_time", 0),
                 "cache_hits": [],
                 "errors": []
             }

+ 44 - 42
knowledge_v2/function_knowledge.py

@@ -106,7 +106,7 @@ class FunctionKnowledge:
             logger.error(f"✗ 生成Query失败: {e}")
             return question  # 降级使用原问题
 
-    def select_tool(self, combined_question: str, query: str) -> str:
+    def select_tool(self, combined_question: str, input_info: str) -> str:
         """
         选择合适的工具
         
@@ -122,7 +122,7 @@ class FunctionKnowledge:
                 return "None"
             
             prompt_template = self._load_prompt("function_knowledge_select_tools_prompt.md")
-            prompt = prompt_template.replace("{all_tool_infos}", all_tool_infos).replace("query", query)
+            prompt = prompt_template.replace("{all_tool_infos}", all_tool_infos).replace("input_info", input_info)
 
             # 尝试从缓存读取
             if self.use_cache:
@@ -185,7 +185,7 @@ class FunctionKnowledge:
             print("未在文本中发现 JSON 结构")
             return None
 
-    def extract_tool_params(self, combined_question: str, query: str, tool_id: str, tool_instructions: str) -> dict:
+    def extract_tool_params(self, combined_question: str, input_info: str, tool_id: str, tool_instructions: str) -> dict:
         """
         根据工具信息和查询提取调用参数
         
@@ -204,13 +204,13 @@ class FunctionKnowledge:
             tool_params = get_tool_params(tool_id)
             if not tool_params:
                 logger.warning(f"  ⚠ 未找到工具 {tool_id} 的信息,使用默认参数")
-                return {"keyword": query}
+                return {"keyword": input_info}
             
             # 加载prompt
             prompt_template = self._load_prompt("function_knowledge_extract_tool_params_prompt.md")
             prompt = prompt_template.format(
                 tool_mcp_name=tool_id,
-                tool_instructions=tool_instructions,
+                input_info=input_info,
                 all_tool_params=tool_params
             )
 
@@ -257,15 +257,15 @@ class FunctionKnowledge:
             except json.JSONDecodeError as e:
                 logger.error(f"  ✗ 解析JSON失败: {e}")
                 logger.error(f"  响应内容: {response_text}")
-                # 降级:使用query作为keyword
-                default_params = {"keyword": query}
+                # 降级:使用input_info作为keyword
+                default_params = {"keyword": input_info}
                 logger.warning(f"  使用默认参数: {default_params}")
                 return default_params
                 
         except Exception as e:
             logger.error(f"✗ 提取工具参数失败: {e}")
-            # 降级:使用query作为keyword
-            return {"keyword": query}
+            # 降级:使用input_info作为keyword
+            return {"keyword": input_info}
 
     def save_knowledge_to_file(self, knowledge: str, combined_question: str):
         """保存获取到的知识到文件"""
@@ -313,7 +313,7 @@ class FunctionKnowledge:
         organized_result = organized_result.strip()
         return organized_result
 
-    def get_knowledge(self, question: str, post_info: str, persona_info: str) -> dict:
+    def get_knowledge(self, input_info: str) -> dict:
         """
         获取方法知识的主流程(重构后)
         
@@ -326,27 +326,25 @@ class FunctionKnowledge:
         
         logger.info("=" * 80)
         logger.info(f"Function Knowledge - 开始处理")
-        logger.info(f"问题: {question}")
-        logger.info(f"帖子信息: {post_info}")
-        logger.info(f"人设信息: {persona_info}")
+        logger.info(f"输入: {input_info}")
         logger.info("=" * 80)
         
         # 组合问题的唯一标识
-        combined_question = f"{question}||{post_info}||{persona_info}"
+        combined_question = input_info
         
         try:
             # 步骤1: 生成Query
-            query = self.generate_query(question, post_info, persona_info)
+            # query = self.generate_query(question, post_info, persona_info)
             
             # 步骤2: 选择工具
-            tool_info = self.select_tool(combined_question, query)
+            tool_info = self.select_tool(combined_question, input_info)
             # tool_name = tool_info.get("工具名")
             tool_id = tool_info.get("工具调用ID")
-            tool_instructions = tool_info.get("使用方法")
-            if tool_id and tool_instructions:
+            # tool_instructions = tool_info.get("使用方法")
+            if tool_id:
                 # 路径A: 使用工具
                 # 步骤3: 提取参数
-                arguments = self.extract_tool_params(combined_question, query, tool_id, tool_instructions)
+                arguments = self.extract_tool_params(combined_question, input_info, tool_id, None)
 
                 # 步骤4: 调用工具
                 logger.info(f"[步骤4] 调用工具: {tool_id}")
@@ -388,7 +386,7 @@ class FunctionKnowledge:
                 # 路径B: 知识搜索
                 logger.info("[步骤4] 未找到合适工具,调用 MultiSearch...")
                 
-                knowledge = get_multi_search_knowledge(query, cache_key=combined_question)
+                knowledge = get_multi_search_knowledge(input_info, cache_key=combined_question)
                 
                 # 异步保存知识到文件
                 logger.info("[后台任务] 保存知识到文件...")
@@ -406,12 +404,7 @@ class FunctionKnowledge:
             
             execution_record = collect_and_save_execution_record(
                 combined_question,
-                {
-                    "question": question,
-                    "post_info": post_info,
-                    "persona_info": persona_info,
-                    "timestamp": timestamp
-                }
+                input_info
             )
             
             logger.info("=" * 80)
@@ -433,24 +426,14 @@ class FunctionKnowledge:
                 from knowledge_v2.execution_collector import collect_and_save_execution_record
                 execution_record = collect_and_save_execution_record(
                     combined_question,
-                    {
-                        "question": question,
-                        "post_info": post_info,
-                        "persona_info": persona_info,
-                        "timestamp": timestamp
-                    }
+                    input_info
                 )
                 return execution_record
             except Exception as collect_error:
                 logger.error(f"收集执行记录也失败: {collect_error}")
                 # 返回基本错误信息
                 return {
-                    "input": {
-                        "question": question,
-                        "post_info": post_info,
-                        "persona_info": persona_info,
-                        "timestamp": timestamp
-                    },
+                    "input": f"{input_info}",
                     "result": {
                         "type": "error",
                         "content": f"执行失败: {str(e)}"
@@ -462,13 +445,32 @@ class FunctionKnowledge:
 
 if __name__ == "__main__":
     # 测试代码
-    question = "女儿的生日派对这个选题点怎么来的"
-    post_info = "发帖时间:2025-09-16"
-    persona_info = ""
+    
+    input_info = """1.已知信息账号人设:
+-账号的品类:宠物表情包账号
+-人设里能和该贴匹配的点:
+鼓励式猫咪表情包-猫咪考试祝福
+推广饮品品牌-推广餐饮品牌
+互动粉丝-互动特点人群
+拟人化猫咪形象-拟人化猫咪形象
+表情包式图文-表情包式视觉风格
+情景化植入-强关联场景植入
+-账号聚出来的pattern模式:
+模式1: 拟人化穿搭+趣味分享意图, 萌宠主题内容+拟人化主体,视觉构图版式....
+模式2:校园学生人设+商业推广意图,商业产品推厂+场景化产品植入
+模式3:日常生活演绎+萌宠主题内容+图文叙事结构
+模式4:视觉隐喻+趣味分享意图+视觉构图版式
+
+2.待寻找点:
+-社交媒体解构贴中未与账号人设匹配的信息
+考试祝福
+
+3.帖子创作日期:2025-11-07
+"""
 
     try:
         agent = FunctionKnowledge()
-        execution_result = agent.get_knowledge(question, post_info, persona_info)
+        execution_result = agent.get_knowledge(input_info=input_info)
         print("=" * 50)
         print("执行结果:")
         print("=" * 50)

+ 30 - 29
knowledge_v2/llm_search_knowledge.py

@@ -83,12 +83,13 @@ class LLMSearchKnowledge:
             logger.error(error_msg)
             raise
     
-    def generate_queries(self, question: str) -> List[str]:
+    def generate_queries(self, cache_key: str, input_info: str) -> List[str]:
         """
         根据问题生成多个搜索query
         
         Args:
-            question: 问题字符串
+            cache_key: 缓存键
+            input_info: 输入的需求
             
         Returns:
             List[str]: query列表
@@ -96,11 +97,11 @@ class LLMSearchKnowledge:
         Raises:
             Exception: 生成query失败时抛出异常
         """
-        logger.info(f"[步骤1] 生成搜索Query - 问题: {question[:50]}...")
+        logger.info(f"[步骤1] 生成搜索Query - 问题: {input_info[:50]}...")
         
         # 尝试从缓存读取
         if self.use_cache:
-            cached_data = self.cache.get(question, 'llm_search', 'generated_queries.json')
+            cached_data = self.cache.get(cache_key, 'llm_search', 'generated_queries.json')
             if cached_data:
                 # check if it's the new format or old format (list)
                 if isinstance(cached_data, list):
@@ -116,8 +117,8 @@ class LLMSearchKnowledge:
             # 加载prompt
             prompt_template = self._load_prompt("llm_search_generate_query_prompt.md")
             
-            # 构建prompt,使用 {question} 作为占位符
-            prompt = prompt_template.format(question=question)
+            # 构建prompt,使用 {input_info} 作为占位符
+            prompt = prompt_template.format(input_info=input_info)
             
             # 调用gemini生成query
             logger.info("→ 调用Gemini生成query...")
@@ -153,7 +154,7 @@ class LLMSearchKnowledge:
                         "response": response_text,
                         "queries": queries
                     }
-                    self.cache.set(question, 'llm_search', 'generated_queries.json', queries_data)
+                    self.cache.set(cache_key, 'llm_search', 'generated_queries.json', queries_data)
                 
                 return queries
                 
@@ -166,12 +167,12 @@ class LLMSearchKnowledge:
             logger.error(f"✗ 生成query失败: {e}")
             raise
     
-    def search_knowledge(self, question: str, query: str, query_index: int = 0) -> str:
+    def search_knowledge(self, cache_key: str, query: str, query_index: int = 0) -> str:
         """
         根据单个query搜索知识
         
         Args:
-            question: 原始问题(用于缓存)
+            cache_key: 缓存键
             query: 搜索query
             query_index: query索引(用于缓存文件名)
             
@@ -186,7 +187,7 @@ class LLMSearchKnowledge:
         # 尝试从缓存读取
         if self.use_cache:
             cache_filename = f"search_result_{query_index:03d}.json"
-            cached_data = self.cache.get(question, 'llm_search/search_results', cache_filename)
+            cached_data = self.cache.get(cache_key, 'llm_search/search_results', cache_filename)
             if cached_data:
                 content = cached_data.get('content', '')
                 logger.info(f"  ✓ 使用缓存结果 (长度: {len(content)})")
@@ -216,7 +217,7 @@ class LLMSearchKnowledge:
                     "content": knowledge_text
                 }
                 cache_filename = f"search_result_{query_index:03d}.json"
-                self.cache.set(question, 'llm_search/search_results', cache_filename, result_data)
+                self.cache.set(cache_key, 'llm_search/search_results', cache_filename, result_data)
             
             return knowledge_text
             
@@ -224,12 +225,12 @@ class LLMSearchKnowledge:
             logger.error(f"  ✗ 搜索知识失败,query: {query}, 错误: {e}")
             raise
     
-    def search_knowledge_batch(self, question: str, queries: List[str]) -> List[str]:
+    def search_knowledge_batch(self, cache_key: str, queries: List[str]) -> List[str]:
         """
         批量搜索知识
         
         Args:
-            question: 原始问题(用于缓存)
+            cache_key: 缓存键
             queries: query列表
             
         Returns:
@@ -240,7 +241,7 @@ class LLMSearchKnowledge:
         knowledge_texts = []
         for i, query in enumerate(queries, 1):
             try:
-                knowledge_text = self.search_knowledge(question, query, i)
+                knowledge_text = self.search_knowledge(cache_key, query, i)
                 knowledge_texts.append(knowledge_text)
             except Exception as e:
                 logger.error(f"  ✗ 搜索第 {i} 个query失败,跳过: {e}")
@@ -250,12 +251,12 @@ class LLMSearchKnowledge:
         logger.info(f"✓ 批量搜索完成,获得 {len([k for k in knowledge_texts if k])} 个有效结果")
         return knowledge_texts
     
-    def merge_knowledge(self, question: str, knowledge_texts: List[str]) -> str:
+    def merge_knowledge(self, cache_key: str, knowledge_texts: List[str]) -> str:
         """
         合并多个知识文本
         
         Args:
-            question: 原始问题(用于缓存)
+            cache_key: 缓存键
             knowledge_texts: 知识文本列表
             
         Returns:
@@ -271,7 +272,7 @@ class LLMSearchKnowledge:
         
         # 尝试从缓存读取
         if self.use_cache:
-            cached_data = self.cache.get(question, 'llm_search', 'merged_knowledge_detail.json')
+            cached_data = self.cache.get(cache_key, 'llm_search', 'merged_knowledge_detail.json')
             if cached_data:
                 merged_text = cached_data.get('response', '') or cached_data.get('merged_text', '')
                 logger.info(f"✓ 使用缓存的合并知识 (长度: {len(merged_text)})")
@@ -290,7 +291,7 @@ class LLMSearchKnowledge:
                 logger.info("  只有一个有效知识文本,直接返回")
                 result = valid_texts[0]
                 if self.use_cache:
-                    self.cache.set(question, 'llm_search', 'merged_knowledge.txt', result)
+                    self.cache.set(cache_key, 'llm_search', 'merged_knowledge.txt', result)
                 return result
             
             # 加载prompt
@@ -317,7 +318,7 @@ class LLMSearchKnowledge:
                     "response": merged_text,
                     "sources_count": len(valid_texts)
                 }
-                self.cache.set(question, 'llm_search', 'merged_knowledge_detail.json', merge_data)
+                self.cache.set(cache_key, 'llm_search', 'merged_knowledge_detail.json', merge_data)
             
             return merged_text.strip()
             
@@ -327,12 +328,12 @@ class LLMSearchKnowledge:
     
 
     
-    def get_knowledge(self, question: str, cache_key: str = None, need_generate_query: bool = True) -> str:
+    def get_knowledge(self, input_info: str, cache_key: str = None, need_generate_query: bool = True) -> str:
         """
         主方法:根据问题获取知识文本
         
         Args:
-            question: 问题字符串
+            input_info: 输入的需求
             cache_key: 可选的缓存键,用于与主流程共享同一缓存目录
             
         Returns:
@@ -342,21 +343,21 @@ class LLMSearchKnowledge:
             Exception: 处理过程中出现错误时抛出异常
         """
         # 使用cache_key或question作为缓存键
-        actual_cache_key = cache_key if cache_key is not None else question
+        actual_cache_key = cache_key if cache_key is not None else input_info
         
         import time
         start_time = time.time()
         
         try:
             logger.info(f"{'='*60}")
-            logger.info(f"LLM Search - 开始处理问题: {question[:50]}...")
+            logger.info(f"LLM Search - 开始处理问题: {input_info[:50]}...")
             logger.info(f"{'='*60}")
             
             # 步骤1: 生成多个query
             if need_generate_query:
-                queries = self.generate_queries(actual_cache_key)
+                queries = self.generate_queries(actual_cache_key, input_info)
             else:
-                queries = [question]
+                queries = [input_info]
             
             # 步骤2: 对每个query搜索知识
             knowledge_texts = self.search_knowledge_batch(actual_cache_key, queries)
@@ -374,26 +375,26 @@ class LLMSearchKnowledge:
             return merged_knowledge
             
         except Exception as e:
-            logger.error(f"✗ 获取知识文本失败,问题: {question[:50]}..., 错误: {e}")
+            logger.error(f"✗ 获取知识文本失败,问题: {input_info[:50]}..., 错误: {e}")
             # 即使失败也保存执行详情
             # 即使失败也保存执行详情
             execution_time = time.time() - start_time
             raise
 
 
-def get_knowledge(question: str, cache_key: str = None, need_generate_query: bool = True) -> str:
+def get_knowledge(input_info: str, cache_key: str = None, need_generate_query: bool = True) -> str:
     """
     便捷函数:根据问题获取知识文本
     
     Args:
-        question: 问题字符串
+        input_info: 输入的需求
         cache_key: 可选的缓存键
         
     Returns:
         str: 最终的知识文本
     """
     agent = LLMSearchKnowledge()
-    return agent.get_knowledge(question, cache_key=cache_key, need_generate_query=need_generate_query)
+    return agent.get_knowledge(input_info, cache_key=cache_key, need_generate_query=need_generate_query)
 
 
 if __name__ == "__main__":

+ 14 - 11
knowledge_v2/multi_search_knowledge.py

@@ -226,25 +226,25 @@ class MultiSearchKnowledge:
 
 
 
-    def get_knowledge(self, question: str, cache_key: str = None) -> str:
+    def get_knowledge(self, input_info: str, cache_key: str = None) -> str:
         """
         获取知识的主方法
         
         Args:
-            question: 问题字符串
+            input_info: 输入信息
             cache_key: 可选的缓存键,用于与主流程共享同一缓存目录
             
         Returns:
             str: 最终的知识文本
         """
-        #使用cache_key或question作为缓存键
-        actual_cache_key = cache_key if cache_key is not None else question
+        #使用cache_key或input_info作为缓存键
+        actual_cache_key = cache_key if cache_key is not None else input_info
         
         import time
         start_time = time.time()
         
         logger.info(f"{'='*60}")
-        logger.info(f"Multi-Search - 开始处理问题: {question[:50]}...")
+        logger.info(f"Multi-Search - 开始处理问题: {input_info[:50]}...")
         logger.info(f"{'='*60}")
         
         knowledge_map = {}
@@ -252,7 +252,7 @@ class MultiSearchKnowledge:
         # 1. 获取 LLM Search 知识
         try:
             logger.info("[渠道1] 调用 LLM Search...")
-            llm_knowledge = get_llm_knowledge(question, cache_key=actual_cache_key, need_generate_query = False)
+            llm_knowledge = get_llm_knowledge(input_info, cache_key=actual_cache_key, need_generate_query = True)
             knowledge_map["LLM Search"] = llm_knowledge
             logger.info(f"✓ LLM Search 完成 (长度: {len(llm_knowledge)})")
             logger.info(f"✓ LLM Search 完成 (长度: {len(llm_knowledge)})")
@@ -284,22 +284,25 @@ class MultiSearchKnowledge:
         
         return final_knowledge
 
-def get_knowledge(question: str, cache_key: str = None) -> str:
+def get_knowledge(input_info: str, cache_key: str = None) -> str:
     """
     便捷调用函数
     
     Args:
-        question: 问题
+        input_info: 输入的需求
         cache_key: 可选的缓存键
     """
     agent = MultiSearchKnowledge()
-    return agent.get_knowledge(question, cache_key=cache_key)
+    return agent.get_knowledge(input_info, cache_key=cache_key)
 
 if __name__ == "__main__":
     # 测试代码
-    test_question = "如何评价最近的国产3A游戏黑神话悟空?"
+    input_info = """问题:在内容创作选题阶段,猫咪爆炸头这个选题点怎么来的?
+日期:2025-09-16
+账号人设信息:萌宠
+"""
     try:
-        result = get_knowledge(test_question)
+        result = get_knowledge(input_info)
         print("=" * 50)
         print("最终整合知识:")
         print("=" * 50)

+ 2 - 10
knowledge_v2/prompt/all_tools_infos.md

@@ -1,16 +1,8 @@
 
 工具名:新红话题榜单
-工具调用ID:xh_newrank_hottopics
+工具调用ID:new_red_TopicRanking
 工具介绍:提供小红书平台热门话题全景榜单数据,覆盖排名、话题名称及核心简介、参与人数增量、浏览量增量、笔记增量、互动增量(点赞 / 收藏 / 评论综合统计)等核心维度。支持精准筛选与高效应用。话题类型涵盖美妆,美容个护,鞋包潮玩,穿搭打扮,美食,母婴育儿,旅游出行,家居家装,教育,生活,运动健身,兴趣爱好,影视综,婚嫁,摄影摄像,萌宠,情感星座,科技互联网,资讯,健康养生,科学科普,职场,交通工具,其他 24 个垂直领域,统计时间可选择日榜(近 7 天)、周榜(近 4 周)、月榜(近 5 个月),满足不同周期的热点追踪需求。榜单数据实时更新,同步呈现官方流量扶持话题标识,助力品牌、达人快速锁定高曝光赛道;便于拆解爆款逻辑、制定内容选题策略,提升运营效率。
 
-工具名:新红话题搜索
-工具调用ID:new_red_TopicSearch
-工具介绍:提供小红书平台话题精准检索服务,输入关键词即可匹配相关话题完整列表,核心数据包含话题名称及简介、总浏览量、总参与人数、近 30 天笔记增量、近 30 天互动增量。支持按参与人数、浏览量等指标排序筛选,可精准定位品牌发起话题或官方扶持话题,清晰展示话题流量趋势与内容创作方向。无论是达人寻找高适配性话题蹭流,还是品牌监测竞品话题布局,均能通过数据支撑快速决策,降低内容试错成本。
-
 工具名:新红热搜词榜单
-工具调用ID:xh_newrank_hotwords
+工具调用ID:new_red_hot_search_words_ranking
 工具介绍:提供小红书平台热搜词权威榜单数据,核心维度包括实时排名、热搜词、主要覆盖内容领域、相关笔记总量、爆文数(高互动笔记占比)、热度值(综合搜索量与互动率计算)。支持按统计时间(日榜 / 周榜 / 月榜)及 美妆,美容个护,鞋包潮玩,穿搭打扮,美食,母婴育儿,旅游出行,家居家装,教育,生活,运动健身,兴趣爱好,影视综,婚嫁,摄影摄像,萌宠,情感星座,科技互联网,资讯,健康养生,科学科普,职场,交通工具,其他 24 个垂直内容领域筛选。榜单每日更新,助力用户第一时间捕捉流量风口。可直接应用于选题规划、竞品投放策略分析。
-
-工具名:新红热搜词搜索
-工具调用ID:new_red_hot_search_words_search
-工具介绍:提供小红书热搜词深度检索与趋势分析服务,输入关键词即可获取全维度数据表现:核心包含热度值(实时动态更新)、声量概览(笔记数、总热度、热门天数、热门内容领域、高频搭配词)、近 90 天热度值趋势曲线(支持自定义时间区间)、相关搜索结果。可直观呈现关键词种草趋势、流量峰值时段、高转化内容特征,帮助用户优化笔记标题关键词布局、预判话题生命周期。

+ 31 - 47
knowledge_v2/prompt/all_tools_params.md

@@ -1,80 +1,64 @@
 
 工具名:新红话题榜单
-工具调用ID:xh_newrank_hottopics
+工具调用ID:new_red_TopicRanking
 工具调用参数信息:
 {
-    "name": "新红话题榜单",
+    "name": "new_red_TopicRanking",
+    "title": "新红话题榜单",
     "description": "提供小红书平台热门话题全景榜单数据,覆盖排名、话题名称及核心简介、参与人数增量、浏览量增量、笔记增量、互动增量(点赞 / 收藏 / 评论综合统计)等核心维度。支持精准筛选与高效应用。话题类型涵盖美妆,美容个护,鞋包潮玩,穿搭打扮,美食,母婴育儿,旅游出行,家居家装,教育,生活,运动健身,兴趣爱好,影视综,婚嫁,摄影摄像,萌宠,情感星座,科技互联网,资讯,健康养生,科学科普,职场,交通工具,其他 24 个垂直领域,统计时间可选择日榜(近 7 天)、周榜(近 4 周)、月榜(近 5 个月),满足不同周期的热点追踪需求。榜单数据实时更新,同步呈现官方流量扶持话题标识,助力品牌、达人快速锁定高曝光赛道;便于拆解爆款逻辑、制定内容选题策略,提升运营效率。",
     "inputSchema": {
         "type": "object",
         "properties": {
-            "prompt": {
+            "type": {
                 "type": "string",
-                "description": "用户使用方法,包括筛选的话题类型、统计时间等"
-            }
-        },
-        "required": [
-            "prompt"
-        ]
-    }
-}
-
-工具名:新红话题搜索
-工具调用ID:new_red_TopicSearch
-工具调用参数信息:
-{
-    "name": "新红话题搜索",
-    "description": "提供小红书平台话题精准检索服务,输入关键词即可匹配相关话题完整列表,核心数据包含话题名称及简介、总浏览量、总参与人数、近 30 天笔记增量、近 30 天互动增量。支持按参与人数、浏览量等指标排序筛选,可精准定位品牌发起话题或官方扶持话题,清晰展示话题流量趋势与内容创作方向。无论是达人寻找高适配性话题蹭流,还是品牌监测竞品话题布局,均能通过数据支撑快速决策,降低内容试错成本。",
-    "inputSchema": {
-        "type": "object",
-        "properties": {
-            "prompt": {
+                "description": "话题类型,如全部、美食、萌宠等,默认为'全部'",
+                "default": "全部"
+            },
+            "rankDate": {
+                "type": "string",
+                "description": "排名日期,格式为YYYY-MM-DD"
+            },
+            "sort": {
                 "type": "string",
-                "description": "用户使用方法,包括输入的话题关键词"
+                "description": "排序方式,默认按互动数'interactiveCount'排序",
+                "default": "interactiveCount"
             }
         },
         "required": [
-            "prompt"
+            "type",
+            "rankDate"
         ]
     }
 }
 
 工具名:新红热搜词榜单
-工具调用ID:xh_newrank_hotwords
+工具调用ID:new_red_hot_search_words_ranking
 工具调用参数信息:
 {
-    "name": "新红热搜词榜单",
+    "name": "new_red_hot_search_words_ranking",
+    "title": "新红热搜词榜单",
     "description": "提供小红书平台热搜词权威榜单数据,核心维度包括实时排名、热搜词、主要覆盖内容领域、相关笔记总量、爆文数(高互动笔记占比)、热度值(综合搜索量与互动率计算)。支持按统计时间(日榜 / 周榜 / 月榜)及 美妆,美容个护,鞋包潮玩,穿搭打扮,美食,母婴育儿,旅游出行,家居家装,教育,生活,运动健身,兴趣爱好,影视综,婚嫁,摄影摄像,萌宠,情感星座,科技互联网,资讯,健康养生,科学科普,职场,交通工具,其他 24 个垂直内容领域筛选。榜单每日更新,助力用户第一时间捕捉流量风口。可直接应用于选题规划、竞品投放策略分析。",
     "inputSchema": {
         "type": "object",
         "properties": {
-            "prompt": {
+            "typeV1": {
                 "type": "string",
-                "description": "用户使用方法,包括筛选的话题类型、统计时间等"
-            }
-        },
-        "required": [
-            "prompt"
-        ]
-    }
-}
+                "description": "可选参数,用于指定热搜词类型,如全部、美食、萌宠等,默认为'全部'",
+                "default": "全部"
 
-工具名:新红热搜词搜索
-工具调用ID:new_red_hot_search_words_search
-工具调用参数信息:
-{
-    "name": "新红热搜词搜索",
-    "description": "提供小红书热搜词深度检索与趋势分析服务,输入关键词即可获取全维度数据表现:核心包含热度值(实时动态更新)、声量概览(笔记数、总热度、热门天数、热门内容领域、高频搭配词)、近 90 天热度值趋势曲线(支持自定义时间区间)、相关搜索结果。可直观呈现关键词种草趋势、流量峰值时段、高转化内容特征,帮助用户优化笔记标题关键词布局、预判话题生命周期。",
-    "inputSchema": {
-        "type": "object",
-        "properties": {
-            "prompt": {
+            },
+            "rankDate": {
+                "type": "string",
+                "description": "排名日期,默认为'2025-10-20',格式为YYYY-MM-DD"
+            },
+            "sort": {
                 "type": "string",
-                "description": "用户使用方法,包括输入的关键词"
+                "description": "排序方式,默认为'hot_score',按热度分数排序"
             }
         },
         "required": [
-            "prompt"
+            "typeV1",
+            "rankDate"
         ]
     }
 }

+ 28 - 7
knowledge_v2/prompt/function_knowledge_extract_tool_params_prompt.md

@@ -1,25 +1,46 @@
-你是一个API调用专家。你的任务是根据已经选择的工具及使用方法信息生成正确的调用参数。
+你是一个API调用专家。你的任务是根据已经选择的工具及输入信息生成正确的调用参数。
 
 选择的工具调用ID:
 {tool_mcp_name}
-选择的工具使用方法:
-{tool_instructions}
+
+输入的信息:
+{input_info}
 
 所有的工具参数定义:
 {all_tool_params}
 
-请分析工具的参数要求,根据查询内容提取或推断出合适的参数值。
+请分析工具的参数要求,根据输入的信息推断出合适的参数值。
+
+**输入理解**
+
+你会收到两类信息:
+
+## 1. 已知信息-账号人设(上下文环境)
+包含:
+- 账号品类:账号所属的内容领域
+- 人设匹配点:已知与该帖子相关的账号特征
+- Pattern模式:账号总结出的内容创作模式
+
+**作用**:提供待寻找点的应用场景和创作背景,帮助你理解信息类型和匹配工具
+
+## 2. 待寻找点(核心匹配目标)
+- 帖子中未与账号人设直接匹配的信息点
+- 这些点是创作者在创作过程中引入的新元素
+
+**作用**:你需要针对每个待寻找点,判断其信息特征,并匹配最优工具
+
 
-输出格式:请以 JSON 格式输出参数字典,例如:
+**输出格式**
+请以 JSON 格式输出参数字典,例如:
 {{
     "param1": "value1",
     "param2": "value2"
 }}
 
-注意事项:
+**注意事项**
 1. 只输出参数的JSON字典,不要包含任何解释
 2. 参数名必须与工具定义中的参数名完全一致
-3. 参数值要从查询中提取或合理推断
+3. 参数值要从输入中提取或合理推断
 4. 不要添加工具定义中没有的参数
 5. 如果某个参数无法从查询中获取,使用合理的默认值或省略该参数
 

+ 49 - 82
knowledge_v2/prompt/function_knowledge_select_tools_prompt.md

@@ -1,75 +1,45 @@
 # 角色定位
-你是一个工具匹配专家,负责根据用户需求从MCP工具库中找到最合适的工具。
+你是一个「工具匹配专家」,专门负责将内容创作需求与MCP工具库中的具体工具进行精准匹配。
+你的核心能力是:理解待寻找信息的特征,判断现有工具能力边界,并选择最优工具。
 
 # 核心任务
-1. 接收上游传入的需求query
-2. 理解需求的核心意图(用户想找什么、解决什么问题)
-3. **判断需求内容是否在工具覆盖范围内**
-4. 查询MCP工具库,匹配最相关的工具
-5. 返回工具信息或"无工具"
+根据输入的"待寻找点",在MCP工具库中直接匹配出能够获取该信息的最优工具。
 
-# MCP工具库信息
+# 输入理解
 
-{all_tool_infos}
-
-# 匹配规则
-
-## 匹配逻辑(按顺序执行)
+你会收到两类信息:
 
-### 第一步:需求本质识别
-理解需求背后的真实意图:
-- 示例:"谐音梗这个选题灵感怎么来的" → 真实意图是"寻找热门选题的来源/方法"
-- 示例:"女儿生日派对这个选题点怎么来的" → 真实意图是"寻找选题的灵感来源"
-- 不关注具体关键词,而关注用户想解决什么问题
+## 1. 已知信息-账号人设(上下文环境)
+包含:
+- 账号品类:账号所属的内容领域
+- 人设匹配点:已知与该帖子相关的账号特征
+- Pattern模式:账号总结出的内容创作模式
 
-### 第二步:内容适用性判断(关键!)
-用什么工具能寻找到来源方法
-**在匹配工具前,必须先判断选题内容是否在工具覆盖范围内**
+**作用**:提供待寻找点的应用场景和创作背景,帮助你理解信息类型和匹配工具
 
-#### 热搜词工具适用的内容类型:
-- ✅ **大众话题**:教资查分、高考、春节、双十一等
-- ✅ **社会热点**:政策变化、明星事件、流行趋势
-- ✅ **行业热点**:美妆新品、穿搭流行、热门景点
-- ✅ **周期性事件**:节日、考试、季节性话题
-- ✅ **群体性关注**:大多数人都可能关注的话题
+## 2. 待寻找点(核心匹配目标)
+- 帖子中未与账号人设直接匹配的信息点
+- 这些点是创作者在创作过程中引入的新元素
 
-#### 热搜词工具不适用的内容类型:
-- ❌ **个人化场景**:我的生日、女儿生日派对、我的婚礼
-- ❌ **私人事件**:家庭聚会、个人旅行、朋友聚餐
-- ❌ **特定个体**:某个具体的人、某个具体的宠物、某个具体的家庭
-- ❌ **小众话题**:极少数人关注的专业话题
-- ❌ **虚构内容**:不存在的事件、假设的场景
+**作用**:你需要针对每个待寻找点,判断其信息特征,并匹配最优工具
 
-**判断标准**:
-- 这个选题是否有可能出现在小红书热搜榜上?
-- 这个选题是否是大众普遍关注的?
-- 这个选题是否具有"群体性"而非"个体性"?
+# MCP工具库清单
 
-**如果内容不在适用范围,直接返回"无工具",不再继续匹配。**
+当前工具库包含以下工具:
 
-### 第三步:需求类型分类
-判断需求属于哪种类型:
-- 寻找灵感/选题来源 → 需要热搜词/榜单类工具
-- 分析特定词的热度/趋势 → 需要趋势分析类工具
-- 寻找内容案例/参考 → 需要内容搜索/爬取类工具
-- 生成创意内容 → 需要大模型/AI生成类工具
-
-### 第四步:工具能力匹配
-根据需求类型,对比工具的核心能力:
-- 工具能否解决该类型的问题(如"提供热门选题")
-
-### 第五步:选择最优工具
-返回能力最匹配的1个工具,无匹配则返回"无工具"
+{all_tool_infos}
+ 
 
-## 匹配标准
-- 功能匹配:工具能力是否覆盖需求要解决的问题
+**一个待寻找点只匹配一个最优工具**
 
+# 输出格式
 
-## 无匹配判定
-当满足以下任一条件时,返回"无工具":
-1. 需求内容不在工具覆盖范围内(如非常个人化场景)
-2. MCP工具库中没有工具能解决该需求
-3. 需求涉及的领域完全不在工具库范围
+针对每个待寻找点,按以下格式输出:
+【待寻找点X】: [点的名称]
+工具匹配结果:
+匹配工具: [工具名称] 或 [无工具匹配]
+匹配理由: [2-3句话说明为什么选择该工具,或为什么无工具匹配]
+应用场景: [结合账号人设,说明该工具如何帮助创作者找到这个待寻找点]
 
 # 输出格式
 json格式,字段定义如下:
@@ -77,7 +47,8 @@ json格式,字段定义如下:
 {
     "工具名": "工具名称",
     "工具调用ID": "调用ID",
-    "使用方法": "简要说明如何使用该工具解决用户需求"
+    "匹配理由": "",
+    "应用场景": ""
 }
 '''
 
@@ -88,34 +59,30 @@ json格式,字段定义如下:
 }
 '''
 
-# 执行要求
-1. **必须先执行"内容适用性判断"**,再进行工具匹配
-2. 只返回1个最优工具,不返回多个备选
-3. 严格按照输出格式返回结果
-4. 使用方法要具体,说明如何用该工具解决当前需求
+---
 
-# 示例
+# 约束条件
 
-## 示例1:成功匹配
-需求输入:什么工具能找到教资查分这个灵感点?
+**必须遵守**:
+- 每个待寻找点只匹配一个最优工具
+- 必须基于工具的实际能力边界进行匹配,不能过度推测
+- 无法匹配时,必须诚实输出"无工具匹配"
+- 匹配理由必须清晰说明工具能力与待寻找点需求的对应关系
+- 必须结合账号人设提供应用场景说明
 
-输出:
-工具名:新红热搜词搜索
-工具调用ID:new_red_hot_search_words_search
-使用方法:输入关键词"教资查分",获取该词在小红书的热度值、近90天趋势曲线、相关笔记数据,判断是否为热门选题点。
-{
-    "工具名": "新红热搜词搜索",
-    "工具调用ID": "工具调用ID:new_red_hot_search_words_search",
-    "使用方法": "输入关键词"教资查分",获取该词在小红书的热度值、近90天趋势曲线、相关笔记数据,判断是否为热门选题点。"
-}
+**禁止**:
+- 强行匹配不适用的工具
+- 为一个待寻找点匹配多个工具
+- 输出工具库中不存在的工具
+- 提供模糊或无法验证的匹配理由
 
-## 示例2:无匹配
-需求输入:哪里可以找到股票实时行情数据?
+# 执行流程
 
-输出:
-{
+1. **接收输入**: 仔细阅读"已知账号人设"和"待寻找点"
+2. **类型分析**: 判断每个待寻找点属于A/B/C/D/E哪种信息类型
+3. **工具匹配**: 根据信息类型和工具能力,选择最优工具或判断无工具匹配
+4. **输出结果**: 按格式输出分析和匹配结果,包含匹配理由和应用场景
 
-}
 
-# 上游输入的需求query
-{query}
+# 输入信息
+{input_info}

+ 68 - 4
knowledge_v2/prompt/llm_search_generate_query_prompt.md

@@ -1,9 +1,70 @@
-你是一个搜索专家。你的任务是根据用户的问题,生成多个用于搜索引擎的查询语句(Query),以便从不同角度获取全面的信息。
+# 角色定位
+你是一个「内容灵感溯源分析师」,专门负责社交媒体内容创作过程的反向工程。
+你的核心能力是:理解社媒创作者在创作过程中的信息获取路径,并将其转化为可执行的工具查询问题。
 
-用户问题:
-{question}
+# 核心任务
+将用户输入的"待寻找点"转化为分层级的工具查询问题,用于寻找能够获取该灵感来源的工具。
+
+# 输入理解
+你会收到两类信息:
+## 1. 已知信息-账号人设(上下文环境)
+包含:
+- 账号品类:账号所属的内容领域
+- 人设匹配点:已知与该帖子相关的账号特征
+- Pattern模式:账号总结出的内容创作模式
+**作用**:为你提供创作者的背景context,帮助你理解"待寻找点"在什么创作环境下被使用
+## 2. 待寻找点(核心目标)
+- 帖子中未与账号人设直接匹配的信息点
+- 这些点是创作者在创作过程中引入的新元素
+**作用**:你需要围绕这些点,分析创作者是如何找到并决定使用这些信息的
+
+
+# 思考框架
+在生成query时,请遵循以下思考路径:
+1. **识别待寻找点的类型**
+   - 是热点事件?(时效性信息)
+   - 是商业品牌?(合作/推广信息)
+   - 是文化符号?(节日/习俗/梗)
+   - 是创意形式?(文案风格/视觉手法)
+2. **定位创作阶段**
+   - 选题阶段:创作者如何发现这个点?
+   - 素材收集:创作者从哪里获取相关信息?
+   - 创意组合:创作者如何决定将这个点与账号结合?
+3. **推测工具类型**
+   - 热点监测工具?(追踪趋势)
+   - 搜索引擎?(主动查询)
+   - 灵感平台?(内容参考)
+   - 数据分析工具?(受众洞察)
+   - 社交监听工具?(评论/反馈)
+4. **结合账号人设**
+   - {品类}的创作者通常关注什么信息源?
+   - {人设特征}的账号如何选题?
+   - {Pattern模式}下,这类信息如何被整合?
+
+# 约束条件
+**必须遵守**:
+- 所有query必须围绕"待寻找点",不偏离目标
+- 所有query必须关注HOW(如何找),而非WHAT(是什么)
+- 所有query必须包含账号人设的上下文信息
+- 所有query必须符合真实社媒创作者的信息获取习惯
+**禁止**:
+- 生成与"待寻找点"无关的query
+- 生成纯理论性、无法对应工具的query
+- 忽略"已知账号人设"信息,生成脱离上下文的query
+- 生成过于宽泛、无法用于工具检索的query
+
+# 输出格式
+对待寻找点,生成1-3个具体的工具查询问题。
+**核心关注点 - HOW层面**:
+- 创作者用什么工具/途径找到这个信息?
+- 创作者在什么创作阶段需要这类信息?
+- 创作者通过什么方式发现这个选题点?
+**Query生成原则**:
+1. **场景化**: query必须符合真实社媒创作流程
+2. **工具导向**: query表述要指向具体的工具类型或功能
+3. **上下文结合**: 将"已知账号人设"作为query的背景条件
+4. **可执行性**: query要能直接用于工具库检索
 
-请生成 3-5 个查询语句,涵盖问题的核心概念、相关背景和细节。
 请以 JSON 格式输出,格式如下:
 {{
     "queries": [
@@ -14,3 +75,6 @@
 }}
 
 只输出 JSON,不要包含任何解释或 markdown 标记。
+
+# 用户输入的需求:
+{input_info}

+ 46 - 34
knowledge_v2/visualization/workflow_visualization.py

@@ -16,15 +16,14 @@ from pathlib import Path
 
 # 硬编码的文件路径列表(相对于项目根目录)
 DATA_FILE_PATHS = [
-    "../.cache/dd8dd68ebf0c/execution_record.json",
-    "../.cache/70a208f70a7e/execution_record.json",
-    "../.cache/996e626b9c85/execution_record.json",
+    "../.cache/557e5ce27c1c/execution_record.json",
+    "../.cache/d0608df43f77/execution_record.json",
     # 可以在这里添加更多文件路径
 ]
 
 
 def load_data_files(file_paths):
-    """读取并解析JSON文件"""
+    """读取并解析JSON文件,返回数据和文件夹名称的列表"""
     data_list = []
     script_dir = Path(__file__).parent
     for file_path in file_paths:
@@ -36,43 +35,57 @@ def load_data_files(file_paths):
         try:
             with open(abs_path, 'r', encoding='utf-8') as f:
                 data = json.load(f)
-                data_list.append(data)
+                # 从文件路径中提取文件夹名称(如 a588c7a380ee)
+                # 路径格式:../.cache/a588c7a380ee/execution_record.json
+                folder_name = abs_path.parent.name
+                data_list.append((data, folder_name))
         except (json.JSONDecodeError, IOError) as e:
             print(f"错误: 读取文件失败 {abs_path}: {e}")
     return data_list
 
 
-def parse_workflow_data(data):
+def parse_workflow_data(data, folder_name=''):
     """解析工作流数据,提取关键信息"""
     workflow = {
         'input': {},
         'steps': [],
-        'output': {}
+        'output': {},
+        'folder_name': folder_name
     }
     
-    # 提取输入信息
+    # 提取输入信息(字符串格式)
     if 'input' in data:
-        workflow['input'] = {
-            'question': data['input'].get('question', ''),
-            'post_info': data['input'].get('post_info', ''),
-            'persona_info': data['input'].get('persona_info', '')
-        }
+        input_data = data['input']
+        if isinstance(input_data, str):
+            # 直接保存字符串
+            workflow['input'] = {'text': input_data}
+        else:
+            # 兼容旧格式:转换为字符串
+            question = input_data.get('question', '')
+            post_info = input_data.get('post_info', '')
+            persona_info = input_data.get('persona_info', '')
+            input_text = f'问题:{question}\n' if question else ''
+            if post_info:
+                input_text += f'{post_info}\n'
+            if persona_info:
+                input_text += f'账号人设信息:{persona_info}\n'
+            workflow['input'] = {'text': input_text.strip()}
     
     # 提取执行流程(新格式:execution 直接包含各步骤,不再有 modules.function_knowledge)
     if 'execution' in data:
         execution = data['execution']
         
-        # 步骤1: 生成query
-        if 'generate_query' in execution:
-            generate_query = execution['generate_query']
-            workflow['steps'].append({
-                'step': 'generate_query',
-                'name': '生成查询',
-                'query': generate_query.get('query', '') or generate_query.get('response', ''),
-                'prompt': generate_query.get('prompt', '')
-            })
-        
-        # 步骤2: 选择工具
+        # 步骤1: 生成query(暂时隐藏,不添加到步骤列表)
+        # if 'generate_query' in execution:
+        #     generate_query = execution['generate_query']
+        #     workflow['steps'].append({
+        #         'step': 'generate_query',
+        #         'name': '生成查询',
+        #         'query': generate_query.get('query', '') or generate_query.get('response', ''),
+        #         'prompt': generate_query.get('prompt', '')
+        #     })
+        
+        # 步骤1: 选择工具(原步骤2,现在变成步骤1)
         if 'select_tool' in execution:
             select_tool = execution['select_tool']
             response = select_tool.get('response', {})
@@ -591,9 +604,10 @@ def generate_html(workflows):
     
     # 生成Tab标签
     for i, workflow in enumerate(workflows):
-        question = workflow['input'].get('question', f'问题 {i+1}')
+        # 使用文件夹名称作为Tab标题
+        folder_name = workflow.get('folder_name', f'问题 {i+1}')
         active_class = 'active' if i == 0 else ''
-        html += f'            <button class="tab {active_class}" onclick="switchTab({i})">{escape_html(question)}</button>\n'
+        html += f'            <button class="tab {active_class}" onclick="switchTab({i})">{escape_html(folder_name)}</button>\n'
     
     html += '        </div>\n'
     
@@ -605,13 +619,11 @@ def generate_html(workflows):
         # 输入信息
         html += '            <div class="input-section">\n'
         html += '                <h3>输入信息</h3>\n'
-        html += f'                <div class="input-item"><strong>问题:</strong> {escape_html(workflow["input"].get("question", ""))}</div>\n'
-        post_info = workflow['input'].get('post_info', '')
-        post_info_display = escape_html(post_info) if post_info else '<span class="placeholder">(无)</span>'
-        html += f'                <div class="input-item"><strong>帖子信息:</strong> {post_info_display}</div>\n'
-        persona_info = workflow['input'].get('persona_info', '')
-        persona_info_display = escape_html(persona_info) if persona_info else '<span class="placeholder">(无)</span>'
-        html += f'                <div class="input-item"><strong>人设信息:</strong> {persona_info_display}</div>\n'
+        input_text = workflow['input'].get('text', '')
+        if input_text:
+            html += f'                <div class="input-item" style="white-space: pre-wrap; line-height: 1.8;">{escape_html(input_text)}</div>\n'
+        else:
+            html += '                <div class="input-item"><span class="placeholder">(无)</span></div>\n'
         html += '            </div>\n'
         
         # 工作流程
@@ -839,7 +851,7 @@ def main():
     
     # 解析工作流数据
     print("正在解析工作流数据...")
-    workflows = [parse_workflow_data(data) for data in data_list]
+    workflows = [parse_workflow_data(data, folder_name) for data, folder_name in data_list]
     
     # 生成HTML
     print("正在生成HTML页面...")

+ 0 - 1429
knowledge_v2/visualization/workflow_visualization_20251205_144231.html

@@ -1,1429 +0,0 @@
-<!DOCTYPE html>
-<html lang="zh-CN">
-<head>
-    <meta charset="UTF-8">
-    <meta name="viewport" content="width=device-width, initial-scale=1.0">
-    <title>知识获取工作流可视化</title>
-    <style>
-        * {
-            margin: 0;
-            padding: 0;
-            box-sizing: border-box;
-        }
-        
-        body {
-            font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', 'PingFang SC', 'Hiragino Sans GB', 'Microsoft YaHei', sans-serif;
-            background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
-            color: #333;
-            line-height: 1.6;
-            min-height: 100vh;
-        }
-        
-        .container {
-            max-width: 1400px;
-            margin: 0 auto;
-            padding: 30px 20px;
-        }
-        
-        h1 {
-            text-align: center;
-            color: white;
-            margin-bottom: 40px;
-            font-size: 32px;
-            font-weight: 600;
-            text-shadow: 0 2px 10px rgba(0,0,0,0.2);
-            letter-spacing: 1px;
-        }
-        
-        .tabs {
-            display: flex;
-            background: white;
-            border-radius: 12px 12px 0 0;
-            box-shadow: 0 4px 20px rgba(0,0,0,0.15);
-            overflow-x: auto;
-            padding: 5px;
-        }
-        
-        .tab {
-            padding: 16px 28px;
-            cursor: pointer;
-            border: none;
-            background: transparent;
-            color: #666;
-            font-size: 14px;
-            transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
-            white-space: nowrap;
-            border-radius: 8px;
-            margin: 0 4px;
-            position: relative;
-            font-weight: 500;
-        }
-        
-        .tab:hover {
-            background: #f0f0f0;
-            color: #333;
-        }
-        
-        .tab.active {
-            background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
-            color: white;
-            box-shadow: 0 4px 12px rgba(102, 126, 234, 0.4);
-        }
-        
-        .tab-content {
-            display: none;
-            background: white;
-            padding: 40px;
-            border-radius: 0 0 12px 12px;
-            box-shadow: 0 4px 20px rgba(0,0,0,0.15);
-            margin-bottom: 20px;
-            animation: fadeIn 0.3s ease-in;
-        }
-        
-        @keyframes fadeIn {
-            from { opacity: 0; transform: translateY(10px); }
-            to { opacity: 1; transform: translateY(0); }
-        }
-        
-        .tab-content.active {
-            display: block;
-        }
-        
-        .input-section {
-            background: linear-gradient(135deg, #f5f7fa 0%, #c3cfe2 100%);
-            padding: 28px;
-            border-radius: 12px;
-            margin-bottom: 35px;
-            box-shadow: 0 4px 15px rgba(0,0,0,0.1);
-            border: 1px solid rgba(255,255,255,0.5);
-        }
-        
-        .input-section h3 {
-            color: #2c3e50;
-            margin-bottom: 20px;
-            font-size: 20px;
-            font-weight: 600;
-            display: flex;
-            align-items: center;
-            gap: 10px;
-        }
-        
-        .input-section h3::before {
-            content: '📋';
-            font-size: 24px;
-        }
-        
-        .input-item {
-            margin-bottom: 16px;
-            padding: 12px;
-            background: rgba(255,255,255,0.7);
-            border-radius: 8px;
-            transition: all 0.3s;
-        }
-        
-        .input-item:hover {
-            background: rgba(255,255,255,0.9);
-            transform: translateX(5px);
-        }
-        
-        .input-item strong {
-            color: #495057;
-            display: inline-block;
-            width: 110px;
-            font-weight: 600;
-        }
-        
-        .input-item .placeholder {
-            color: #999;
-            font-style: italic;
-        }
-        
-        .workflow {
-            position: relative;
-        }
-        
-        .workflow-step {
-            background: white;
-            border: 2px solid #e0e0e0;
-            border-radius: 12px;
-            margin-bottom: 25px;
-            transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
-            overflow: hidden;
-            box-shadow: 0 2px 8px rgba(0,0,0,0.08);
-        }
-        
-        .workflow-step.active {
-            border-color: #667eea;
-            box-shadow: 0 8px 24px rgba(102, 126, 234, 0.25);
-            transform: translateY(-2px);
-        }
-        
-        .step-header {
-            padding: 20px 24px;
-            background: linear-gradient(135deg, #f8f9fa 0%, #e9ecef 100%);
-            cursor: pointer;
-            display: flex;
-            justify-content: space-between;
-            align-items: center;
-            user-select: none;
-            transition: all 0.3s;
-        }
-        
-        .step-header:hover {
-            background: linear-gradient(135deg, #e9ecef 0%, #dee2e6 100%);
-        }
-        
-        .workflow-step.active .step-header {
-            background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
-            color: white;
-        }
-        
-        .workflow-step.active .step-name {
-            color: white;
-        }
-        
-        .workflow-step.active .step-toggle {
-            color: white;
-        }
-        
-        .step-title {
-            display: flex;
-            align-items: center;
-            gap: 15px;
-        }
-        
-        .step-number {
-            display: inline-flex;
-            align-items: center;
-            justify-content: center;
-            width: 36px;
-            height: 36px;
-            background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
-            color: white;
-            border-radius: 50%;
-            font-size: 16px;
-            font-weight: bold;
-            box-shadow: 0 4px 12px rgba(102, 126, 234, 0.3);
-        }
-        
-        .workflow-step.active .step-number {
-            background: white;
-            color: #667eea;
-            box-shadow: 0 4px 12px rgba(255,255,255,0.3);
-        }
-        
-        .step-name {
-            font-size: 18px;
-            font-weight: 600;
-            color: #2c3e50;
-        }
-        
-        .step-toggle {
-            color: #6c757d;
-            font-size: 20px;
-            transition: transform 0.3s cubic-bezier(0.4, 0, 0.2, 1);
-        }
-        
-        .step-toggle.expanded {
-            transform: rotate(180deg);
-        }
-        
-        .step-content {
-            padding: 0 20px;
-            max-height: 0;
-            overflow: hidden;
-            transition: max-height 0.3s ease-out, padding 0.3s;
-        }
-        
-        .step-content.expanded {
-            max-height: 5000px;
-            padding: 20px;
-        }
-        
-        .step-detail {
-            margin-bottom: 20px;
-        }
-        
-        .step-detail-label {
-            font-weight: 600;
-            color: #495057;
-            margin-bottom: 10px;
-            display: block;
-            font-size: 14px;
-            text-transform: uppercase;
-            letter-spacing: 0.5px;
-        }
-        
-        .step-detail-content {
-            background: #f8f9fa;
-            padding: 16px;
-            border-radius: 8px;
-            border-left: 4px solid #667eea;
-            font-size: 14px;
-            line-height: 1.8;
-            white-space: pre-wrap;
-            word-wrap: break-word;
-            max-height: 400px;
-            overflow-y: auto;
-            box-shadow: 0 2px 8px rgba(0,0,0,0.05);
-        }
-        
-        .json-content {
-            font-family: 'SF Mono', 'Monaco', 'Courier New', monospace;
-            background: #1e1e1e;
-            color: #d4d4d4;
-            padding: 20px;
-            border-radius: 8px;
-            overflow-x: auto;
-            border-left: 4px solid #667eea;
-            box-shadow: 0 4px 12px rgba(0,0,0,0.15);
-        }
-        
-        .prompt-toggle-btn {
-            background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
-            color: white;
-            border: none;
-            padding: 10px 20px;
-            border-radius: 6px;
-            cursor: pointer;
-            font-size: 13px;
-            font-weight: 500;
-            margin-top: 15px;
-            transition: all 0.3s;
-            box-shadow: 0 2px 8px rgba(102, 126, 234, 0.3);
-        }
-        
-        .prompt-toggle-btn:hover {
-            transform: translateY(-2px);
-            box-shadow: 0 4px 12px rgba(102, 126, 234, 0.4);
-        }
-        
-        .prompt-content {
-            display: none;
-            margin-top: 15px;
-            padding: 16px;
-            background: #fff3cd;
-            border-radius: 8px;
-            border-left: 4px solid #ffc107;
-            font-size: 13px;
-            line-height: 1.8;
-            white-space: pre-wrap;
-            word-wrap: break-word;
-            max-height: 500px;
-            overflow-y: auto;
-        }
-        
-        .prompt-content.show {
-            display: block;
-            animation: slideDown 0.3s ease-out;
-        }
-        
-        @keyframes slideDown {
-            from {
-                opacity: 0;
-                max-height: 0;
-            }
-            to {
-                opacity: 1;
-                max-height: 500px;
-            }
-        }
-        
-        .output-section {
-            background: linear-gradient(135deg, #e0f2fe 0%, #bae6fd 100%);
-            padding: 28px;
-            border-radius: 12px;
-            margin-top: 35px;
-            border-left: 4px solid #0ea5e9;
-            box-shadow: 0 4px 15px rgba(14, 165, 233, 0.2);
-        }
-        
-        .output-section h3 {
-            color: #0369a1;
-            margin-bottom: 20px;
-            font-size: 20px;
-            font-weight: 600;
-            display: flex;
-            align-items: center;
-            gap: 10px;
-        }
-        
-        .output-section h3::before {
-            content: '✨';
-            font-size: 24px;
-        }
-        
-        .arrow {
-            text-align: center;
-            color: #667eea;
-            font-size: 32px;
-            margin: -15px 0;
-            position: relative;
-            z-index: 1;
-            filter: drop-shadow(0 2px 4px rgba(102, 126, 234, 0.3));
-        }
-        
-        .arrow::before {
-            content: '↓';
-        }
-        
-        @media (max-width: 768px) {
-            .container {
-                padding: 10px;
-            }
-            
-            .tab {
-                padding: 12px 15px;
-                font-size: 13px;
-            }
-            
-            .tab-content {
-                padding: 20px;
-            }
-        }
-    </style>
-</head>
-<body>
-    <div class="container">
-        <h1>知识获取工作流可视化</h1>
-        <div class="tabs" id="tabs">
-            <button class="tab active" onclick="switchTab(0)">教资查分这个选题点怎么来的</button>
-            <button class="tab " onclick="switchTab(1)">女儿的生日派对这个选题点怎么来的</button>
-            <button class="tab " onclick="switchTab(2)">花艺造型蛋糕这个选题点怎么来的</button>
-        </div>
-        <div class="tab-content active" id="tab-0">
-            <div class="input-section">
-                <h3>输入信息</h3>
-                <div class="input-item"><strong>问题:</strong> 教资查分这个选题点怎么来的</div>
-                <div class="input-item"><strong>帖子信息:</strong> 发帖时间:2025.11.07</div>
-                <div class="input-item"><strong>人设信息:</strong> <span class="placeholder">(无)</span></div>
-            </div>
-            <div class="workflow">
-                <div class="workflow-step" id="step-0-0">
-                    <div class="step-header" onclick="toggleStep('step-0-0')">
-                        <div class="step-title">
-                            <span class="step-number">1</span>
-                            <span class="step-name">生成查询</span>
-                        </div>
-                        <span class="step-toggle">▼</span>
-                    </div>
-                    <div class="step-content" id="content-step-0-0">
-                        <div class="step-detail">
-                            <span class="step-detail-label">生成的Query:</span>
-                            <div class="step-detail-content">用什么工具获取 教资查分这个选题点</div>
-                        </div>
-                        <button class="prompt-toggle-btn" onclick="togglePrompt('prompt-step-0-0')">显示 Prompt</button>
-                        <div class="prompt-content" id="prompt-step-0-0">你是一个问题转换助手。你的任务是将用户的问题,转换一个用于搜索或调用工具的查询语句(Query)。
-
-用户问题:
-教资查分这个选题点怎么来的
-
-转换规则:
-- 提取问题中的 主体对象
-- 将问题转换成 用什么工具获取 [主体对象] query格式
-
-示例:
-用户问题: “教资查分”这个选题点怎么来的
-主体对象: “教资查分”选题点
-转换的Query: 用什么工具获取“教资查分”选题点
-
-请分析上述信息,按要求生成Query语句。
-只输出Query语句,不要包含任何解释。</div>
-                    </div>
-                </div>
-                <div class="arrow"></div>
-                <div class="workflow-step" id="step-0-1">
-                    <div class="step-header" onclick="toggleStep('step-0-1')">
-                        <div class="step-title">
-                            <span class="step-number">2</span>
-                            <span class="step-name">选择工具</span>
-                        </div>
-                        <span class="step-toggle">▼</span>
-                    </div>
-                    <div class="step-content" id="content-step-0-1">
-                        <div class="step-detail">
-                            <span class="step-detail-label">工具名称:</span>
-                            <div class="step-detail-content">新红热搜词搜索</div>
-                        </div>
-                        <div class="step-detail">
-                            <span class="step-detail-label">工具调用ID:</span>
-                            <div class="step-detail-content">new_red_hot_search_words_search</div>
-                        </div>
-                        <div class="step-detail">
-                            <span class="step-detail-label">使用方法:</span>
-                            <div class="step-detail-content">输入关键词&quot;教资查分&quot;,获取该词在小红书的热度值、声量概览及近90天热度值趋势曲线,以评估其作为选题点的流量潜力和趋势。</div>
-                        </div>
-                        <button class="prompt-toggle-btn" onclick="togglePrompt('prompt-step-0-1')">显示 Prompt</button>
-                        <div class="prompt-content" id="prompt-step-0-1"># 角色定位
-你是一个工具匹配专家,负责根据用户需求从MCP工具库中找到最合适的工具。
-
-# 核心任务
-1. 接收上游传入的需求用什么工具获取 教资查分这个选题点
-2. 理解需求的核心意图(用户想找什么、解决什么问题)
-3. **判断需求内容是否在工具覆盖范围内**
-4. 查询MCP工具库,匹配最相关的工具
-5. 返回工具信息或&quot;无工具&quot;
-
-# MCP工具库信息
-
-工具名:新红话题榜单
-工具调用ID:xh_newrank_hottopics
-工具介绍:提供小红书平台热门话题全景榜单数据,覆盖排名、话题名称及核心简介、参与人数增量、浏览量增量、笔记增量、互动增量(点赞 / 收藏 / 评论综合统计)等核心维度。支持精准筛选与高效应用。话题类型涵盖美妆,美容个护,鞋包潮玩,穿搭打扮,美食,母婴育儿,旅游出行,家居家装,教育,生活,运动健身,兴趣爱好,影视综,婚嫁,摄影摄像,萌宠,情感星座,科技互联网,资讯,健康养生,科学科普,职场,交通工具,其他 24 个垂直领域,统计时间可选择日榜(近 7 天)、周榜(近 4 周)、月榜(近 5 个月),满足不同周期的热点追踪需求。榜单数据实时更新,同步呈现官方流量扶持话题标识,助力品牌、达人快速锁定高曝光赛道;便于拆解爆款逻辑、制定内容选题策略,提升运营效率。
-
-工具名:新红话题搜索
-工具调用ID:new_red_TopicSearch
-工具介绍:提供小红书平台话题精准检索服务,输入关键词即可匹配相关话题完整列表,核心数据包含话题名称及简介、总浏览量、总参与人数、近 30 天笔记增量、近 30 天互动增量。支持按参与人数、浏览量等指标排序筛选,可精准定位品牌发起话题或官方扶持话题,清晰展示话题流量趋势与内容创作方向。无论是达人寻找高适配性话题蹭流,还是品牌监测竞品话题布局,均能通过数据支撑快速决策,降低内容试错成本。
-
-工具名:新红热搜词榜单
-工具调用ID:xh_newrank_hotwords
-工具介绍:提供小红书平台热搜词权威榜单数据,核心维度包括实时排名、热搜词、主要覆盖内容领域、相关笔记总量、爆文数(高互动笔记占比)、热度值(综合搜索量与互动率计算)。支持按统计时间(日榜 / 周榜 / 月榜)及 美妆,美容个护,鞋包潮玩,穿搭打扮,美食,母婴育儿,旅游出行,家居家装,教育,生活,运动健身,兴趣爱好,影视综,婚嫁,摄影摄像,萌宠,情感星座,科技互联网,资讯,健康养生,科学科普,职场,交通工具,其他 24 个垂直内容领域筛选。榜单每日更新,助力用户第一时间捕捉流量风口。可直接应用于选题规划、竞品投放策略分析。
-
-工具名:新红热搜词搜索
-工具调用ID:new_red_hot_search_words_search
-工具介绍:提供小红书热搜词深度检索与趋势分析服务,输入关键词即可获取全维度数据表现:核心包含热度值(实时动态更新)、声量概览(笔记数、总热度、热门天数、热门内容领域、高频搭配词)、近 90 天热度值趋势曲线(支持自定义时间区间)、相关搜索结果。可直观呈现关键词种草趋势、流量峰值时段、高转化内容特征,帮助用户优化笔记标题关键词布局、预判话题生命周期。
-
-# 匹配规则
-
-## 匹配逻辑(按顺序执行)
-
-### 第一步:需求本质识别
-理解需求背后的真实意图:
-- 示例:&quot;谐音梗这个选题灵感怎么来的&quot; → 真实意图是&quot;寻找热门选题的来源/方法&quot;
-- 示例:&quot;女儿生日派对这个选题点怎么来的&quot; → 真实意图是&quot;寻找选题的灵感来源&quot;
-- 不关注具体关键词,而关注用户想解决什么问题
-
-### 第二步:内容适用性判断(关键!)
-用什么工具能寻找到来源方法
-**在匹配工具前,必须先判断选题内容是否在工具覆盖范围内**
-
-#### 热搜词工具适用的内容类型:
-- ✅ **大众话题**:教资查分、高考、春节、双十一等
-- ✅ **社会热点**:政策变化、明星事件、流行趋势
-- ✅ **行业热点**:美妆新品、穿搭流行、热门景点
-- ✅ **周期性事件**:节日、考试、季节性话题
-- ✅ **群体性关注**:大多数人都可能关注的话题
-
-#### 热搜词工具不适用的内容类型:
-- ❌ **个人化场景**:我的生日、女儿生日派对、我的婚礼
-- ❌ **私人事件**:家庭聚会、个人旅行、朋友聚餐
-- ❌ **特定个体**:某个具体的人、某个具体的宠物、某个具体的家庭
-- ❌ **小众话题**:极少数人关注的专业话题
-- ❌ **虚构内容**:不存在的事件、假设的场景
-
-**判断标准**:
-- 这个选题是否有可能出现在小红书热搜榜上?
-- 这个选题是否是大众普遍关注的?
-- 这个选题是否具有&quot;群体性&quot;而非&quot;个体性&quot;?
-
-**如果内容不在适用范围,直接返回&quot;无工具&quot;,不再继续匹配。**
-
-### 第三步:需求类型分类
-判断需求属于哪种类型:
-- 寻找灵感/选题来源 → 需要热搜词/榜单类工具
-- 分析特定词的热度/趋势 → 需要趋势分析类工具
-- 寻找内容案例/参考 → 需要内容搜索/爬取类工具
-- 生成创意内容 → 需要大模型/AI生成类工具
-
-### 第四步:工具能力匹配
-根据需求类型,对比工具的核心能力:
-- 工具能否解决该类型的问题(如&quot;提供热门选题&quot;)
-
-### 第五步:选择最优工具
-返回能力最匹配的1个工具,无匹配则返回&quot;无工具&quot;
-
-## 匹配标准
-- 功能匹配:工具能力是否覆盖需求要解决的问题
-
-
-## 无匹配判定
-当满足以下任一条件时,返回&quot;无工具&quot;:
-1. 需求内容不在工具覆盖范围内(如非常个人化场景)
-2. MCP工具库中没有工具能解决该需求
-3. 需求涉及的领域完全不在工具库范围
-
-# 输出格式
-json格式,字段定义如下:
-&#39;&#39;&#39;json
-{
-    &quot;工具名&quot;: &quot;工具名称&quot;,
-    &quot;工具调用ID&quot;: &quot;调用ID&quot;,
-    &quot;使用方法&quot;: &quot;简要说明如何使用该工具解决用户需求&quot;
-}
-&#39;&#39;&#39;
-
-## 无匹配时
-&#39;&#39;&#39;json
-{
-
-}
-&#39;&#39;&#39;
-
-# 执行要求
-1. **必须先执行&quot;内容适用性判断&quot;**,再进行工具匹配
-2. 只返回1个最优工具,不返回多个备选
-3. 严格按照输出格式返回结果
-4. 使用方法要具体,说明如何用该工具解决当前需求
-
-# 示例
-
-## 示例1:成功匹配
-需求输入:什么工具能找到教资查分这个灵感点?
-
-输出:
-工具名:新红热搜词搜索
-工具调用ID:new_red_hot_search_words_search
-使用方法:输入关键词&quot;教资查分&quot;,获取该词在小红书的热度值、近90天趋势曲线、相关笔记数据,判断是否为热门选题点。
-{
-    &quot;工具名&quot;: &quot;新红热搜词搜索&quot;,
-    &quot;工具调用ID&quot;: &quot;工具调用ID:new_red_hot_search_words_search&quot;,
-    &quot;使用方法&quot;: &quot;输入关键词&quot;教资查分&quot;,获取该词在小红书的热度值、近90天趋势曲线、相关笔记数据,判断是否为热门选题点。&quot;
-}
-
-## 示例2:无匹配
-需求输入:哪里可以找到股票实时行情数据?
-
-输出:
-{
-
-}
-
-# 上游输入的需求用什么工具获取 教资查分这个选题点
-{用什么工具获取 教资查分这个选题点}</div>
-                    </div>
-                </div>
-                <div class="arrow"></div>
-                <div class="workflow-step" id="step-0-2">
-                    <div class="step-header" onclick="toggleStep('step-0-2')">
-                        <div class="step-title">
-                            <span class="step-number">3</span>
-                            <span class="step-name">提取参数</span>
-                        </div>
-                        <span class="step-toggle">▼</span>
-                    </div>
-                    <div class="step-content" id="content-step-0-2">
-                        <div class="step-detail">
-                            <span class="step-detail-label">提取的参数:</span>
-                            <div class="step-detail-content json-content">{
-  &quot;prompt&quot;: &quot;输入关键词\&quot;教资查分\&quot;,获取该词在小红书的热度值、近90天热度值趋势曲线、声量概览及相关搜索结果,从而判断其作为选题点的热度和趋势,辅助选题决策。&quot;
-}</div>
-                        </div>
-                        <button class="prompt-toggle-btn" onclick="togglePrompt('prompt-step-0-2')">显示 Prompt</button>
-                        <div class="prompt-content" id="prompt-step-0-2">你是一个API调用专家。你的任务是根据已经选择的工具及使用方法信息生成正确的调用参数。
-
-选择的工具调用ID:
-new_red_hot_search_words_search
-选择的工具使用方法:
-输入关键词&quot;教资查分&quot;,获取该词在小红书的热度值、近90天热度值趋势曲线、声量概览及相关搜索结果,从而判断其作为选题点的热度和趋势,辅助选题决策。
-
-所有的工具参数定义:
-{
-    &quot;name&quot;: &quot;新红热搜词搜索&quot;,
-    &quot;description&quot;: &quot;提供小红书热搜词深度检索与趋势分析服务,输入关键词即可获取全维度数据表现:核心包含热度值(实时动态更新)、声量概览(笔记数、总热度、热门天数、热门内容领域、高频搭配词)、近 90 天热度值趋势曲线(支持自定义时间区间)、相关搜索结果。可直观呈现关键词种草趋势、流量峰值时段、高转化内容特征,帮助用户优化笔记标题关键词布局、预判话题生命周期。&quot;,
-    &quot;inputSchema&quot;: {
-        &quot;type&quot;: &quot;object&quot;,
-        &quot;properties&quot;: {
-            &quot;prompt&quot;: {
-                &quot;type&quot;: &quot;string&quot;,
-                &quot;description&quot;: &quot;用户使用方法,包括输入的关键词&quot;
-            }
-        },
-        &quot;required&quot;: [
-            &quot;prompt&quot;
-        ]
-    }
-}
-
-请分析工具的参数要求,根据查询内容提取或推断出合适的参数值。
-
-输出格式:请以 JSON 格式输出参数字典,例如:
-{
-    &quot;param1&quot;: &quot;value1&quot;,
-    &quot;param2&quot;: &quot;value2&quot;
-}
-
-注意事项:
-1. 只输出参数的JSON字典,不要包含任何解释
-2. 参数名必须与工具定义中的参数名完全一致
-3. 参数值要从查询中提取或合理推断
-4. 不要添加工具定义中没有的参数
-5. 如果某个参数无法从查询中获取,使用合理的默认值或省略该参数
-
-只输出JSON,不要包含markdown标记。</div>
-                    </div>
-                </div>
-                <div class="arrow"></div>
-                <div class="workflow-step" id="step-0-3">
-                    <div class="step-header" onclick="toggleStep('step-0-3')">
-                        <div class="step-title">
-                            <span class="step-number">4</span>
-                            <span class="step-name">执行工具</span>
-                        </div>
-                        <span class="step-toggle">▼</span>
-                    </div>
-                    <div class="step-content" id="content-step-0-3">
-                        <div class="step-detail">
-                            <span class="step-detail-label">执行结果:</span>
-                            <div class="step-detail-content json-content">## &quot;教资查分&quot;关键词数据表现和趋势分析
-
-### 热度值
-- 近30天热度值超过96.14%全站其他词
-- 近30天热度值超过95.86%教育领域其他词
-
-### 声量概览
-- **笔记数**: 16篇(环比增长700.00%)
-- **总热度**: 4082(环比增长408100.00%)
-- **热门天数**: 4/30天
-- **近30天热门内容领域**:
-  - 教育: 56.25%
-  - 职场: 31.25%
-  - 运动健身: 6.25%
-- **高频搭配词**: 暂无相关数据
-
-### 热度值趋势
-- **整体趋势**: 下降趋势
-- **效果分析**:
-  - TOP1下降趋势: 2025-11-07 至 2025-11-08
-  - TOP2下降趋势: 2025-11-04 至 2025-11-05
-
-### 相关搜索结果
-- 共1条搜索结果
-- 内容领域分布: 教育、职场等领域为主
-
-从数据可以看出,&quot;教资查分&quot;这个关键词在近期有显著的热度增长,但目前呈现下降趋势。该关键词主要与教育和职场领域相关,这符合教师资格证查询分数的实际应用场景。虽然笔记数量不多(16篇),但环比增长非常高,表明这是一个短期内突然受到关注的话题。</div>
-                        </div>
-                    </div>
-                </div>
-            </div>
-            <div class="output-section">
-                <h3>最终输出</h3>
-                <div class="step-detail-content json-content">## &quot;教资查分&quot;关键词数据表现和趋势分析
-
-### 热度值
-- 近30天热度值超过96.14%全站其他词
-- 近30天热度值超过95.86%教育领域其他词
-
-### 声量概览
-- **笔记数**: 16篇(环比增长700.00%)
-- **总热度**: 4082(环比增长408100.00%)
-- **热门天数**: 4/30天
-- **近30天热门内容领域**:
-  - 教育: 56.25%
-  - 职场: 31.25%
-  - 运动健身: 6.25%
-- **高频搭配词**: 暂无相关数据
-
-### 热度值趋势
-- **整体趋势**: 下降趋势
-- **效果分析**:
-  - TOP1下降趋势: 2025-11-07 至 2025-11-08
-  - TOP2下降趋势: 2025-11-04 至 2025-11-05
-
-### 相关搜索结果
-- 共1条搜索结果
-- 内容领域分布: 教育、职场等领域为主
-
-从数据可以看出,&quot;教资查分&quot;这个关键词在近期有显著的热度增长,但目前呈现下降趋势。该关键词主要与教育和职场领域相关,这符合教师资格证查询分数的实际应用场景。虽然笔记数量不多(16篇),但环比增长非常高,表明这是一个短期内突然受到关注的话题。</div>
-            </div>
-        </div>
-        <div class="tab-content " id="tab-1">
-            <div class="input-section">
-                <h3>输入信息</h3>
-                <div class="input-item"><strong>问题:</strong> 女儿的生日派对这个选题点怎么来的</div>
-                <div class="input-item"><strong>帖子信息:</strong> 发帖时间:2025-09-16</div>
-                <div class="input-item"><strong>人设信息:</strong> <span class="placeholder">(无)</span></div>
-            </div>
-            <div class="workflow">
-                <div class="workflow-step" id="step-1-0">
-                    <div class="step-header" onclick="toggleStep('step-1-0')">
-                        <div class="step-title">
-                            <span class="step-number">1</span>
-                            <span class="step-name">生成查询</span>
-                        </div>
-                        <span class="step-toggle">▼</span>
-                    </div>
-                    <div class="step-content" id="content-step-1-0">
-                        <div class="step-detail">
-                            <span class="step-detail-label">生成的Query:</span>
-                            <div class="step-detail-content">用什么工具获取女儿的生日派对这个选题点 query</div>
-                        </div>
-                        <button class="prompt-toggle-btn" onclick="togglePrompt('prompt-step-1-0')">显示 Prompt</button>
-                        <div class="prompt-content" id="prompt-step-1-0">你是一个问题转换助手。你的任务是将用户的问题,转换一个用于搜索或调用工具的查询语句(Query)。
-
-用户问题:
-女儿的生日派对这个选题点怎么来的
-
-转换规则:
-- 提取问题中的 主体对象
-- 将问题转换成 用什么工具获取 [主体对象] query格式
-
-示例:
-用户问题: “教资查分”这个选题点怎么来的
-主体对象: “教资查分”选题点
-转换的Query: 用什么工具获取“教资查分”选题点
-
-请分析上述信息,按要求生成Query语句。
-只输出Query语句,不要包含任何解释。</div>
-                    </div>
-                </div>
-                <div class="arrow"></div>
-                <div class="workflow-step" id="step-1-1">
-                    <div class="step-header" onclick="toggleStep('step-1-1')">
-                        <div class="step-title">
-                            <span class="step-number">2</span>
-                            <span class="step-name">选择工具</span>
-                        </div>
-                        <span class="step-toggle">▼</span>
-                    </div>
-                    <div class="step-content" id="content-step-1-1">
-                        <div class="step-detail">
-                            <span class="step-detail-label">选择结果:</span>
-                            <div class="step-detail-content" style="color: #dc3545; font-weight: 500;">无匹配工具</div>
-                        </div>
-                        <button class="prompt-toggle-btn" onclick="togglePrompt('prompt-step-1-1')">显示 Prompt</button>
-                        <div class="prompt-content" id="prompt-step-1-1"># 角色定位
-你是一个工具匹配专家,负责根据用户需求从MCP工具库中找到最合适的工具。
-
-# 核心任务
-1. 接收上游传入的需求用什么工具获取女儿的生日派对这个选题点 query
-2. 理解需求的核心意图(用户想找什么、解决什么问题)
-3. **判断需求内容是否在工具覆盖范围内**
-4. 查询MCP工具库,匹配最相关的工具
-5. 返回工具信息或&quot;无工具&quot;
-
-# MCP工具库信息
-
-工具名:新红话题榜单
-工具调用ID:xh_newrank_hottopics
-工具介绍:提供小红书平台热门话题全景榜单数据,覆盖排名、话题名称及核心简介、参与人数增量、浏览量增量、笔记增量、互动增量(点赞 / 收藏 / 评论综合统计)等核心维度。支持精准筛选与高效应用。话题类型涵盖美妆,美容个护,鞋包潮玩,穿搭打扮,美食,母婴育儿,旅游出行,家居家装,教育,生活,运动健身,兴趣爱好,影视综,婚嫁,摄影摄像,萌宠,情感星座,科技互联网,资讯,健康养生,科学科普,职场,交通工具,其他 24 个垂直领域,统计时间可选择日榜(近 7 天)、周榜(近 4 周)、月榜(近 5 个月),满足不同周期的热点追踪需求。榜单数据实时更新,同步呈现官方流量扶持话题标识,助力品牌、达人快速锁定高曝光赛道;便于拆解爆款逻辑、制定内容选题策略,提升运营效率。
-
-工具名:新红话题搜索
-工具调用ID:new_red_TopicSearch
-工具介绍:提供小红书平台话题精准检索服务,输入关键词即可匹配相关话题完整列表,核心数据包含话题名称及简介、总浏览量、总参与人数、近 30 天笔记增量、近 30 天互动增量。支持按参与人数、浏览量等指标排序筛选,可精准定位品牌发起话题或官方扶持话题,清晰展示话题流量趋势与内容创作方向。无论是达人寻找高适配性话题蹭流,还是品牌监测竞品话题布局,均能通过数据支撑快速决策,降低内容试错成本。
-
-工具名:新红热搜词榜单
-工具调用ID:xh_newrank_hotwords
-工具介绍:提供小红书平台热搜词权威榜单数据,核心维度包括实时排名、热搜词、主要覆盖内容领域、相关笔记总量、爆文数(高互动笔记占比)、热度值(综合搜索量与互动率计算)。支持按统计时间(日榜 / 周榜 / 月榜)及 美妆,美容个护,鞋包潮玩,穿搭打扮,美食,母婴育儿,旅游出行,家居家装,教育,生活,运动健身,兴趣爱好,影视综,婚嫁,摄影摄像,萌宠,情感星座,科技互联网,资讯,健康养生,科学科普,职场,交通工具,其他 24 个垂直内容领域筛选。榜单每日更新,助力用户第一时间捕捉流量风口。可直接应用于选题规划、竞品投放策略分析。
-
-工具名:新红热搜词搜索
-工具调用ID:new_red_hot_search_words_search
-工具介绍:提供小红书热搜词深度检索与趋势分析服务,输入关键词即可获取全维度数据表现:核心包含热度值(实时动态更新)、声量概览(笔记数、总热度、热门天数、热门内容领域、高频搭配词)、近 90 天热度值趋势曲线(支持自定义时间区间)、相关搜索结果。可直观呈现关键词种草趋势、流量峰值时段、高转化内容特征,帮助用户优化笔记标题关键词布局、预判话题生命周期。
-
-# 匹配规则
-
-## 匹配逻辑(按顺序执行)
-
-### 第一步:需求本质识别
-理解需求背后的真实意图:
-- 示例:&quot;谐音梗这个选题灵感怎么来的&quot; → 真实意图是&quot;寻找热门选题的来源/方法&quot;
-- 示例:&quot;女儿生日派对这个选题点怎么来的&quot; → 真实意图是&quot;寻找选题的灵感来源&quot;
-- 不关注具体关键词,而关注用户想解决什么问题
-
-### 第二步:内容适用性判断(关键!)
-用什么工具能寻找到来源方法
-**在匹配工具前,必须先判断选题内容是否在工具覆盖范围内**
-
-#### 热搜词工具适用的内容类型:
-- ✅ **大众话题**:教资查分、高考、春节、双十一等
-- ✅ **社会热点**:政策变化、明星事件、流行趋势
-- ✅ **行业热点**:美妆新品、穿搭流行、热门景点
-- ✅ **周期性事件**:节日、考试、季节性话题
-- ✅ **群体性关注**:大多数人都可能关注的话题
-
-#### 热搜词工具不适用的内容类型:
-- ❌ **个人化场景**:我的生日、女儿生日派对、我的婚礼
-- ❌ **私人事件**:家庭聚会、个人旅行、朋友聚餐
-- ❌ **特定个体**:某个具体的人、某个具体的宠物、某个具体的家庭
-- ❌ **小众话题**:极少数人关注的专业话题
-- ❌ **虚构内容**:不存在的事件、假设的场景
-
-**判断标准**:
-- 这个选题是否有可能出现在小红书热搜榜上?
-- 这个选题是否是大众普遍关注的?
-- 这个选题是否具有&quot;群体性&quot;而非&quot;个体性&quot;?
-
-**如果内容不在适用范围,直接返回&quot;无工具&quot;,不再继续匹配。**
-
-### 第三步:需求类型分类
-判断需求属于哪种类型:
-- 寻找灵感/选题来源 → 需要热搜词/榜单类工具
-- 分析特定词的热度/趋势 → 需要趋势分析类工具
-- 寻找内容案例/参考 → 需要内容搜索/爬取类工具
-- 生成创意内容 → 需要大模型/AI生成类工具
-
-### 第四步:工具能力匹配
-根据需求类型,对比工具的核心能力:
-- 工具能否解决该类型的问题(如&quot;提供热门选题&quot;)
-
-### 第五步:选择最优工具
-返回能力最匹配的1个工具,无匹配则返回&quot;无工具&quot;
-
-## 匹配标准
-- 功能匹配:工具能力是否覆盖需求要解决的问题
-
-
-## 无匹配判定
-当满足以下任一条件时,返回&quot;无工具&quot;:
-1. 需求内容不在工具覆盖范围内(如非常个人化场景)
-2. MCP工具库中没有工具能解决该需求
-3. 需求涉及的领域完全不在工具库范围
-
-# 输出格式
-json格式,字段定义如下:
-&#39;&#39;&#39;json
-{
-    &quot;工具名&quot;: &quot;工具名称&quot;,
-    &quot;工具调用ID&quot;: &quot;调用ID&quot;,
-    &quot;使用方法&quot;: &quot;简要说明如何使用该工具解决用户需求&quot;
-}
-&#39;&#39;&#39;
-
-## 无匹配时
-&#39;&#39;&#39;json
-{
-
-}
-&#39;&#39;&#39;
-
-# 执行要求
-1. **必须先执行&quot;内容适用性判断&quot;**,再进行工具匹配
-2. 只返回1个最优工具,不返回多个备选
-3. 严格按照输出格式返回结果
-4. 使用方法要具体,说明如何用该工具解决当前需求
-
-# 示例
-
-## 示例1:成功匹配
-需求输入:什么工具能找到教资查分这个灵感点?
-
-输出:
-工具名:新红热搜词搜索
-工具调用ID:new_red_hot_search_words_search
-使用方法:输入关键词&quot;教资查分&quot;,获取该词在小红书的热度值、近90天趋势曲线、相关笔记数据,判断是否为热门选题点。
-{
-    &quot;工具名&quot;: &quot;新红热搜词搜索&quot;,
-    &quot;工具调用ID&quot;: &quot;工具调用ID:new_red_hot_search_words_search&quot;,
-    &quot;使用方法&quot;: &quot;输入关键词&quot;教资查分&quot;,获取该词在小红书的热度值、近90天趋势曲线、相关笔记数据,判断是否为热门选题点。&quot;
-}
-
-## 示例2:无匹配
-需求输入:哪里可以找到股票实时行情数据?
-
-输出:
-{
-
-}
-
-# 上游输入的需求用什么工具获取女儿的生日派对这个选题点 query
-{用什么工具获取女儿的生日派对这个选题点 query}</div>
-                    </div>
-                </div>
-                <div class="arrow"></div>
-                <div class="workflow-step" id="step-1-2">
-                    <div class="step-header" onclick="toggleStep('step-1-2')">
-                        <div class="step-title">
-                            <span class="step-number">3</span>
-                            <span class="step-name">LLM搜索</span>
-                        </div>
-                        <span class="step-toggle">▼</span>
-                    </div>
-                    <div class="step-content" id="content-step-1-2">
-                        <div class="step-detail">
-                            <span class="step-detail-label">搜索结果:</span>
-                            <div style="margin-bottom: 15px; padding: 12px; background: #f0f8ff; border-radius: 6px; border-left: 3px solid #4a90e2;">
-                                <div style="font-weight: 600; color: #2c3e50; margin-bottom: 8px;">查询 1: 用什么工具获取女儿的生日派对这个选题点 query</div>
-                                <div style="color: #555; line-height: 1.6; white-space: pre-wrap;">根据搜索结果,要围绕“女儿的生日派对”这个选题点进行内容创作或策划,可以使用以下几类工具和方法来获取灵感、信息和执行方案:
-
-**1. 灵感与创意获取工具:**
-*   **社交媒体平台:** 如小红书、Instagram、Pinterest(需科学上网)等。这些平台上有大量用户分享的真实派对照片、视频和经验贴,是获取最新流行主题(如独角兽、小黄鸭、公主风等)、布置创意和DIY点子的绝佳来源。
-*   **视频平台:** 如YouTube、Bilibili。可以搜索“低成本生日派对”、“XX岁女孩生日派对”等关键词,观看详细的策划和布置过程视频,非常直观且具有可操作性。
-
-**2. 实用策划与执行工具:**
-*   **在线邀请函制作工具:** 如Canva、金数据、腾讯问卷等。可以轻松创建精美的电子邀请函,并附带RSVP(请回复)功能,方便统计人数。
-*   **清单与项目管理工具:** 如滴答清单(TickTick)、微软To Do、甚至简单的Excel表格。用于制定详细的待办事项清单,包括预算、采购清单、时间安排等,确保不遗漏任何环节。
-*   **本地生活服务平台:** 如大众点评、美团。用于搜索和预订附近的亲子餐厅、室内游乐场、派对策划公司、蛋糕房等服务。
-
-**3. 信息查询与学习工具:**
-*   **搜索引擎:** 直接使用百度、谷歌等搜索引擎,输入具体的疑问,例如“4岁女孩生日派对游戏”、“低预算生日派对食物”、“生日派对注意事项”等,可以找到大量博客文章、论坛讨论(如知乎、Reddit)和专业指南,了解不同年龄段孩子的派对要点、避坑指南和花费参考。
-
-总而言之,将**社交媒体/视频平台**作为灵感库,用**在线工具**处理邀请和规划,并通过**搜索引擎**解决具体问题,就能高效地完成“女儿生日派对”的选题策划。</div>
-                            </div>
-                        </div>
-                    </div>
-                </div>
-                <div class="arrow"></div>
-                <div class="workflow-step" id="step-1-3">
-                    <div class="step-header" onclick="toggleStep('step-1-3')">
-                        <div class="step-title">
-                            <span class="step-number">4</span>
-                            <span class="step-name">多渠道搜索结果整合</span>
-                        </div>
-                        <span class="step-toggle">▼</span>
-                    </div>
-                    <div class="step-content" id="content-step-1-3">
-                        <div class="step-detail">
-                            <span class="step-detail-label">来源统计:</span>
-                            <div class="step-detail-content">总来源数: 1, 有效来源数: 1</div>
-                        </div>
-                        <div class="step-detail">
-                            <span class="step-detail-label">整合结果:</span>
-                            <div class="step-detail-content">女儿的生日派对这一选题点,可以通过以下工具和方法进行灵感获取、信息查询及策划执行,从而使内容或派对本身得以具体化和完善:
-
-### 1. 灵感与创意获取
-
-*   **社交媒体平台:** 小红书、Instagram、Pinterest等平台汇集了大量用户分享的派对照片、视频和经验贴,是发现最新流行主题(如独角兽、小黄鸭、公主风)、布置创意和DIY点子的宝库。
-*   **视频平台:** YouTube、Bilibili等平台可搜索“低成本生日派对”、“XX岁女孩生日派对”等关键词,通过观看详细的策划和布置过程视频,获取直观且可操作的灵感。
-
-### 2. 实用策划与执行
-
-*   **在线邀请函制作工具:** Canva、金数据、腾讯问卷等工具可用于轻松创建精美的电子邀请函,并支持RSVP(请回复)功能,便于统计派对人数。
-*   **清单与项目管理工具:** 滴答清单(TickTick)、微软To Do或Excel表格等,有助于制定详细的待办事项清单,包括预算、采购清单和时间安排,确保派对筹备不遗漏任何环节。
-*   **本地生活服务平台:** 大众点评、美团等平台可用于搜索和预订附近的亲子餐厅、室内游乐场、派对策划公司、蛋糕房等服务。
-
-### 3. 信息查询与学习
-
-*   **搜索引擎:** 百度、谷歌等搜索引擎是解答具体疑问的强大工具。输入“4岁女孩生日派对游戏”、“低预算生日派对食物”、“生日派对注意事项”等关键词,可以找到大量博客文章、论坛讨论(如知乎、Reddit)和专业指南,了解不同年龄段孩子派对的要点、避坑指南及花费参考。
-
-总而言之,通过将社交媒体/视频平台作为灵感来源,利用在线工具进行邀请和规划,并通过搜索引擎解决具体问题,可以高效地展开和完善“女儿生日派对”这个选题点。</div>
-                        </div>
-                        <button class="prompt-toggle-btn" onclick="togglePrompt('prompt-step-1-3')">显示 Prompt</button>
-                        <div class="prompt-content" id="prompt-step-1-3">你是一个知识整合专家。你的任务是根据用户的问题,将来自不同渠道(如LLM搜索、小红书搜索等)的知识文本进行整合,生成一份全面、准确、逻辑清晰的回答。
-
-用户问题:
-女儿的生日派对这个选题点怎么来的||发帖时间:2025-09-16||
-
-以下是来自不同渠道的知识文本:
-【来源:LLM Search】
-根据搜索结果,要围绕“女儿的生日派对”这个选题点进行内容创作或策划,可以使用以下几类工具和方法来获取灵感、信息和执行方案:
-
-**1. 灵感与创意获取工具:**
-*   **社交媒体平台:** 如小红书、Instagram、Pinterest(需科学上网)等。这些平台上有大量用户分享的真实派对照片、视频和经验贴,是获取最新流行主题(如独角兽、小黄鸭、公主风等)、布置创意和DIY点子的绝佳来源。
-*   **视频平台:** 如YouTube、Bilibili。可以搜索“低成本生日派对”、“XX岁女孩生日派对”等关键词,观看详细的策划和布置过程视频,非常直观且具有可操作性。
-
-**2. 实用策划与执行工具:**
-*   **在线邀请函制作工具:** 如Canva、金数据、腾讯问卷等。可以轻松创建精美的电子邀请函,并附带RSVP(请回复)功能,方便统计人数。
-*   **清单与项目管理工具:** 如滴答清单(TickTick)、微软To Do、甚至简单的Excel表格。用于制定详细的待办事项清单,包括预算、采购清单、时间安排等,确保不遗漏任何环节。
-*   **本地生活服务平台:** 如大众点评、美团。用于搜索和预订附近的亲子餐厅、室内游乐场、派对策划公司、蛋糕房等服务。
-
-**3. 信息查询与学习工具:**
-*   **搜索引擎:** 直接使用百度、谷歌等搜索引擎,输入具体的疑问,例如“4岁女孩生日派对游戏”、“低预算生日派对食物”、“生日派对注意事项”等,可以找到大量博客文章、论坛讨论(如知乎、Reddit)和专业指南,了解不同年龄段孩子的派对要点、避坑指南和花费参考。
-
-总而言之,将**社交媒体/视频平台**作为灵感库,用**在线工具**处理邀请和规划,并通过**搜索引擎**解决具体问题,就能高效地完成“女儿生日派对”的选题策划。
-
-
-
-请遵循以下原则进行整合:
-1. **全面性**:涵盖所有渠道提供的关键信息,不要遗漏重要细节。
-2. **准确性**:如果不同渠道的信息存在冲突,请尝试分析原因并给出最合理的解释,或者同时呈现不同的观点并说明来源。
-3. **逻辑性**:将信息组织成结构清晰的文章,使用恰当的标题、列表和段落。
-4. **可读性**:语言通顺流畅,易于理解。
-5. **去重**:去除重复的信息。
-
-请直接输出整合后的知识文本,不要包含任何解释性的话语。</div>
-                    </div>
-                </div>
-            </div>
-        </div>
-        <div class="tab-content " id="tab-2">
-            <div class="input-section">
-                <h3>输入信息</h3>
-                <div class="input-item"><strong>问题:</strong> 花艺造型蛋糕这个选题点怎么来的</div>
-                <div class="input-item"><strong>帖子信息:</strong> 发帖时间:2025-09-16</div>
-                <div class="input-item"><strong>人设信息:</strong> <span class="placeholder">(无)</span></div>
-            </div>
-            <div class="workflow">
-                <div class="workflow-step" id="step-2-0">
-                    <div class="step-header" onclick="toggleStep('step-2-0')">
-                        <div class="step-title">
-                            <span class="step-number">1</span>
-                            <span class="step-name">生成查询</span>
-                        </div>
-                        <span class="step-toggle">▼</span>
-                    </div>
-                    <div class="step-content" id="content-step-2-0">
-                        <div class="step-detail">
-                            <span class="step-detail-label">生成的Query:</span>
-                            <div class="step-detail-content">用什么工具获取花艺造型蛋糕这个选题点</div>
-                        </div>
-                        <button class="prompt-toggle-btn" onclick="togglePrompt('prompt-step-2-0')">显示 Prompt</button>
-                        <div class="prompt-content" id="prompt-step-2-0">你是一个问题转换助手。你的任务是将用户的问题,转换一个用于搜索或调用工具的查询语句(Query)。
-
-用户问题:
-花艺造型蛋糕这个选题点怎么来的
-
-转换规则:
-- 提取问题中的 主体对象
-- 将问题转换成 用什么工具获取 [主体对象] query格式
-
-示例:
-用户问题: “教资查分”这个选题点怎么来的
-主体对象: “教资查分”选题点
-转换的Query: 用什么工具获取“教资查分”选题点
-
-请分析上述信息,按要求生成Query语句。
-只输出Query语句,不要包含任何解释。</div>
-                    </div>
-                </div>
-                <div class="arrow"></div>
-                <div class="workflow-step" id="step-2-1">
-                    <div class="step-header" onclick="toggleStep('step-2-1')">
-                        <div class="step-title">
-                            <span class="step-number">2</span>
-                            <span class="step-name">选择工具</span>
-                        </div>
-                        <span class="step-toggle">▼</span>
-                    </div>
-                    <div class="step-content" id="content-step-2-1">
-                        <div class="step-detail">
-                            <span class="step-detail-label">工具名称:</span>
-                            <div class="step-detail-content">新红热搜词搜索</div>
-                        </div>
-                        <div class="step-detail">
-                            <span class="step-detail-label">工具调用ID:</span>
-                            <div class="step-detail-content">new_red_hot_search_words_search</div>
-                        </div>
-                        <div class="step-detail">
-                            <span class="step-detail-label">使用方法:</span>
-                            <div class="step-detail-content">输入关键词&quot;花艺造型蛋糕&quot;,获取该词在小红书的热度值、近90天趋势曲线、声量概览(笔记数、总热度、热门天数、热门内容领域、高频搭配词),以此评估其作为选题点的潜力与创作方向。</div>
-                        </div>
-                        <button class="prompt-toggle-btn" onclick="togglePrompt('prompt-step-2-1')">显示 Prompt</button>
-                        <div class="prompt-content" id="prompt-step-2-1"># 角色定位
-你是一个工具匹配专家,负责根据用户需求从MCP工具库中找到最合适的工具。
-
-# 核心任务
-1. 接收上游传入的需求用什么工具获取花艺造型蛋糕这个选题点
-2. 理解需求的核心意图(用户想找什么、解决什么问题)
-3. **判断需求内容是否在工具覆盖范围内**
-4. 查询MCP工具库,匹配最相关的工具
-5. 返回工具信息或&quot;无工具&quot;
-
-# MCP工具库信息
-
-工具名:新红话题榜单
-工具调用ID:xh_newrank_hottopics
-工具介绍:提供小红书平台热门话题全景榜单数据,覆盖排名、话题名称及核心简介、参与人数增量、浏览量增量、笔记增量、互动增量(点赞 / 收藏 / 评论综合统计)等核心维度。支持精准筛选与高效应用。话题类型涵盖美妆,美容个护,鞋包潮玩,穿搭打扮,美食,母婴育儿,旅游出行,家居家装,教育,生活,运动健身,兴趣爱好,影视综,婚嫁,摄影摄像,萌宠,情感星座,科技互联网,资讯,健康养生,科学科普,职场,交通工具,其他 24 个垂直领域,统计时间可选择日榜(近 7 天)、周榜(近 4 周)、月榜(近 5 个月),满足不同周期的热点追踪需求。榜单数据实时更新,同步呈现官方流量扶持话题标识,助力品牌、达人快速锁定高曝光赛道;便于拆解爆款逻辑、制定内容选题策略,提升运营效率。
-
-工具名:新红话题搜索
-工具调用ID:new_red_TopicSearch
-工具介绍:提供小红书平台话题精准检索服务,输入关键词即可匹配相关话题完整列表,核心数据包含话题名称及简介、总浏览量、总参与人数、近 30 天笔记增量、近 30 天互动增量。支持按参与人数、浏览量等指标排序筛选,可精准定位品牌发起话题或官方扶持话题,清晰展示话题流量趋势与内容创作方向。无论是达人寻找高适配性话题蹭流,还是品牌监测竞品话题布局,均能通过数据支撑快速决策,降低内容试错成本。
-
-工具名:新红热搜词榜单
-工具调用ID:xh_newrank_hotwords
-工具介绍:提供小红书平台热搜词权威榜单数据,核心维度包括实时排名、热搜词、主要覆盖内容领域、相关笔记总量、爆文数(高互动笔记占比)、热度值(综合搜索量与互动率计算)。支持按统计时间(日榜 / 周榜 / 月榜)及 美妆,美容个护,鞋包潮玩,穿搭打扮,美食,母婴育儿,旅游出行,家居家装,教育,生活,运动健身,兴趣爱好,影视综,婚嫁,摄影摄像,萌宠,情感星座,科技互联网,资讯,健康养生,科学科普,职场,交通工具,其他 24 个垂直内容领域筛选。榜单每日更新,助力用户第一时间捕捉流量风口。可直接应用于选题规划、竞品投放策略分析。
-
-工具名:新红热搜词搜索
-工具调用ID:new_red_hot_search_words_search
-工具介绍:提供小红书热搜词深度检索与趋势分析服务,输入关键词即可获取全维度数据表现:核心包含热度值(实时动态更新)、声量概览(笔记数、总热度、热门天数、热门内容领域、高频搭配词)、近 90 天热度值趋势曲线(支持自定义时间区间)、相关搜索结果。可直观呈现关键词种草趋势、流量峰值时段、高转化内容特征,帮助用户优化笔记标题关键词布局、预判话题生命周期。
-
-# 匹配规则
-
-## 匹配逻辑(按顺序执行)
-
-### 第一步:需求本质识别
-理解需求背后的真实意图:
-- 示例:&quot;谐音梗这个选题灵感怎么来的&quot; → 真实意图是&quot;寻找热门选题的来源/方法&quot;
-- 示例:&quot;女儿生日派对这个选题点怎么来的&quot; → 真实意图是&quot;寻找选题的灵感来源&quot;
-- 不关注具体关键词,而关注用户想解决什么问题
-
-### 第二步:内容适用性判断(关键!)
-用什么工具能寻找到来源方法
-**在匹配工具前,必须先判断选题内容是否在工具覆盖范围内**
-
-#### 热搜词工具适用的内容类型:
-- ✅ **大众话题**:教资查分、高考、春节、双十一等
-- ✅ **社会热点**:政策变化、明星事件、流行趋势
-- ✅ **行业热点**:美妆新品、穿搭流行、热门景点
-- ✅ **周期性事件**:节日、考试、季节性话题
-- ✅ **群体性关注**:大多数人都可能关注的话题
-
-#### 热搜词工具不适用的内容类型:
-- ❌ **个人化场景**:我的生日、女儿生日派对、我的婚礼
-- ❌ **私人事件**:家庭聚会、个人旅行、朋友聚餐
-- ❌ **特定个体**:某个具体的人、某个具体的宠物、某个具体的家庭
-- ❌ **小众话题**:极少数人关注的专业话题
-- ❌ **虚构内容**:不存在的事件、假设的场景
-
-**判断标准**:
-- 这个选题是否有可能出现在小红书热搜榜上?
-- 这个选题是否是大众普遍关注的?
-- 这个选题是否具有&quot;群体性&quot;而非&quot;个体性&quot;?
-
-**如果内容不在适用范围,直接返回&quot;无工具&quot;,不再继续匹配。**
-
-### 第三步:需求类型分类
-判断需求属于哪种类型:
-- 寻找灵感/选题来源 → 需要热搜词/榜单类工具
-- 分析特定词的热度/趋势 → 需要趋势分析类工具
-- 寻找内容案例/参考 → 需要内容搜索/爬取类工具
-- 生成创意内容 → 需要大模型/AI生成类工具
-
-### 第四步:工具能力匹配
-根据需求类型,对比工具的核心能力:
-- 工具能否解决该类型的问题(如&quot;提供热门选题&quot;)
-
-### 第五步:选择最优工具
-返回能力最匹配的1个工具,无匹配则返回&quot;无工具&quot;
-
-## 匹配标准
-- 功能匹配:工具能力是否覆盖需求要解决的问题
-
-
-## 无匹配判定
-当满足以下任一条件时,返回&quot;无工具&quot;:
-1. 需求内容不在工具覆盖范围内(如非常个人化场景)
-2. MCP工具库中没有工具能解决该需求
-3. 需求涉及的领域完全不在工具库范围
-
-# 输出格式
-json格式,字段定义如下:
-&#39;&#39;&#39;json
-{
-    &quot;工具名&quot;: &quot;工具名称&quot;,
-    &quot;工具调用ID&quot;: &quot;调用ID&quot;,
-    &quot;使用方法&quot;: &quot;简要说明如何使用该工具解决用户需求&quot;
-}
-&#39;&#39;&#39;
-
-## 无匹配时
-&#39;&#39;&#39;json
-{
-
-}
-&#39;&#39;&#39;
-
-# 执行要求
-1. **必须先执行&quot;内容适用性判断&quot;**,再进行工具匹配
-2. 只返回1个最优工具,不返回多个备选
-3. 严格按照输出格式返回结果
-4. 使用方法要具体,说明如何用该工具解决当前需求
-
-# 示例
-
-## 示例1:成功匹配
-需求输入:什么工具能找到教资查分这个灵感点?
-
-输出:
-工具名:新红热搜词搜索
-工具调用ID:new_red_hot_search_words_search
-使用方法:输入关键词&quot;教资查分&quot;,获取该词在小红书的热度值、近90天趋势曲线、相关笔记数据,判断是否为热门选题点。
-{
-    &quot;工具名&quot;: &quot;新红热搜词搜索&quot;,
-    &quot;工具调用ID&quot;: &quot;工具调用ID:new_red_hot_search_words_search&quot;,
-    &quot;使用方法&quot;: &quot;输入关键词&quot;教资查分&quot;,获取该词在小红书的热度值、近90天趋势曲线、相关笔记数据,判断是否为热门选题点。&quot;
-}
-
-## 示例2:无匹配
-需求输入:哪里可以找到股票实时行情数据?
-
-输出:
-{
-
-}
-
-# 上游输入的需求用什么工具获取花艺造型蛋糕这个选题点
-{用什么工具获取花艺造型蛋糕这个选题点}</div>
-                    </div>
-                </div>
-                <div class="arrow"></div>
-                <div class="workflow-step" id="step-2-2">
-                    <div class="step-header" onclick="toggleStep('step-2-2')">
-                        <div class="step-title">
-                            <span class="step-number">3</span>
-                            <span class="step-name">提取参数</span>
-                        </div>
-                        <span class="step-toggle">▼</span>
-                    </div>
-                    <div class="step-content" id="content-step-2-2">
-                        <div class="step-detail">
-                            <span class="step-detail-label">提取的参数:</span>
-                            <div class="step-detail-content json-content">{
-  &quot;prompt&quot;: &quot;输入关键词\&quot;花艺造型蛋糕\&quot;,获取该词在小红书的热度值、近90天趋势曲线、声量概览(笔记数、总热度、热门天数、热门内容领域、高频搭配词),以此评估其作为选题点的潜力与创作方向。&quot;
-}</div>
-                        </div>
-                        <button class="prompt-toggle-btn" onclick="togglePrompt('prompt-step-2-2')">显示 Prompt</button>
-                        <div class="prompt-content" id="prompt-step-2-2">你是一个API调用专家。你的任务是根据已经选择的工具及使用方法信息生成正确的调用参数。
-
-选择的工具调用ID:
-new_red_hot_search_words_search
-选择的工具使用方法:
-输入关键词&quot;花艺造型蛋糕&quot;,获取该词在小红书的热度值、近90天趋势曲线、声量概览(笔记数、总热度、热门天数、热门内容领域、高频搭配词),以此评估其作为选题点的潜力与创作方向。
-
-所有的工具参数定义:
-{
-    &quot;name&quot;: &quot;新红热搜词搜索&quot;,
-    &quot;description&quot;: &quot;提供小红书热搜词深度检索与趋势分析服务,输入关键词即可获取全维度数据表现:核心包含热度值(实时动态更新)、声量概览(笔记数、总热度、热门天数、热门内容领域、高频搭配词)、近 90 天热度值趋势曲线(支持自定义时间区间)、相关搜索结果。可直观呈现关键词种草趋势、流量峰值时段、高转化内容特征,帮助用户优化笔记标题关键词布局、预判话题生命周期。&quot;,
-    &quot;inputSchema&quot;: {
-        &quot;type&quot;: &quot;object&quot;,
-        &quot;properties&quot;: {
-            &quot;prompt&quot;: {
-                &quot;type&quot;: &quot;string&quot;,
-                &quot;description&quot;: &quot;用户使用方法,包括输入的关键词&quot;
-            }
-        },
-        &quot;required&quot;: [
-            &quot;prompt&quot;
-        ]
-    }
-}
-
-请分析工具的参数要求,根据查询内容提取或推断出合适的参数值。
-
-输出格式:请以 JSON 格式输出参数字典,例如:
-{
-    &quot;param1&quot;: &quot;value1&quot;,
-    &quot;param2&quot;: &quot;value2&quot;
-}
-
-注意事项:
-1. 只输出参数的JSON字典,不要包含任何解释
-2. 参数名必须与工具定义中的参数名完全一致
-3. 参数值要从查询中提取或合理推断
-4. 不要添加工具定义中没有的参数
-5. 如果某个参数无法从查询中获取,使用合理的默认值或省略该参数
-
-只输出JSON,不要包含markdown标记。</div>
-                    </div>
-                </div>
-                <div class="arrow"></div>
-                <div class="workflow-step" id="step-2-3">
-                    <div class="step-header" onclick="toggleStep('step-2-3')">
-                        <div class="step-title">
-                            <span class="step-number">4</span>
-                            <span class="step-name">执行工具</span>
-                        </div>
-                        <span class="step-toggle">▼</span>
-                    </div>
-                    <div class="step-content" id="content-step-2-3">
-                        <div class="step-detail">
-                            <span class="step-detail-label">执行结果:</span>
-                            <div class="step-detail-content json-content">## &quot;花艺造型蛋糕&quot;关键词数据分析结果
-
-**关键词**: 花艺造型蛋糕
-
-**平台**: 小红书
-
-**主要发现**:
-1. **热度值**: 该关键词未达到小红书热搜榜单的门槛,无法获取具体的热度值数据
-2. **趋势曲线**: 由于未上榜,近90天的趋势曲线数据不可用
-3. **声量概览**:
-   - 笔记数: 数据不可用(未达到展示门槛)
-   - 总热度: 数据不可用(未达到展示门槛)
-   - 热门天数: 数据不可用(未达到展示门槛)
-   - 热门内容领域: 数据不可用(未达到展示门槛)
-   - 高频搭配词: 数据不可用(未达到展示门槛)
-
-**选题潜力评估**:
-- **热度水平**: 较低。该关键词在小红书平台上的讨论度和关注度不足以进入热搜榜单
-- **创作方向建议**:
-  1. 考虑使用更热门的相关关键词,如&quot;蛋糕&quot;、&quot;花艺&quot;、&quot;甜品&quot;等单独词汇
-  2. 或者尝试组合其他热门元素,如&quot;ins风花艺蛋糕&quot;、&quot;网红花艺蛋糕&quot;等
-  3. 可以关注页面推荐的热门热搜词,如&quot;美食VLOG&quot;、&quot;美食制作&quot;等,将花艺蛋糕内容融入这些热门话题中
-
-**建议**:
-由于&quot;花艺造型蛋糕&quot;关键词热度较低,建议调整选题策略:
-1. 扩大关键词范围,使用更通用的词汇
-2. 关注相关但更热门的话题标签
-3. 结合当前热门趋势(如页面显示的&quot;美食VLOG&quot;、&quot;美食制作&quot;等)来包装花艺蛋糕内容
-
-这个结果表明,虽然花艺造型蛋糕可能是一个有创意的内容方向,但在小红书平台上目前的热度不足以支撑作为独立的热门选题点.</div>
-                        </div>
-                    </div>
-                </div>
-            </div>
-            <div class="output-section">
-                <h3>最终输出</h3>
-                <div class="step-detail-content json-content">## &quot;花艺造型蛋糕&quot;关键词数据分析结果
-
-**关键词**: 花艺造型蛋糕
-
-**平台**: 小红书
-
-**主要发现**:
-1. **热度值**: 该关键词未达到小红书热搜榜单的门槛,无法获取具体的热度值数据
-2. **趋势曲线**: 由于未上榜,近90天的趋势曲线数据不可用
-3. **声量概览**:
-   - 笔记数: 数据不可用(未达到展示门槛)
-   - 总热度: 数据不可用(未达到展示门槛)
-   - 热门天数: 数据不可用(未达到展示门槛)
-   - 热门内容领域: 数据不可用(未达到展示门槛)
-   - 高频搭配词: 数据不可用(未达到展示门槛)
-
-**选题潜力评估**:
-- **热度水平**: 较低。该关键词在小红书平台上的讨论度和关注度不足以进入热搜榜单
-- **创作方向建议**:
-  1. 考虑使用更热门的相关关键词,如&quot;蛋糕&quot;、&quot;花艺&quot;、&quot;甜品&quot;等单独词汇
-  2. 或者尝试组合其他热门元素,如&quot;ins风花艺蛋糕&quot;、&quot;网红花艺蛋糕&quot;等
-  3. 可以关注页面推荐的热门热搜词,如&quot;美食VLOG&quot;、&quot;美食制作&quot;等,将花艺蛋糕内容融入这些热门话题中
-
-**建议**:
-由于&quot;花艺造型蛋糕&quot;关键词热度较低,建议调整选题策略:
-1. 扩大关键词范围,使用更通用的词汇
-2. 关注相关但更热门的话题标签
-3. 结合当前热门趋势(如页面显示的&quot;美食VLOG&quot;、&quot;美食制作&quot;等)来包装花艺蛋糕内容
-
-这个结果表明,虽然花艺造型蛋糕可能是一个有创意的内容方向,但在小红书平台上目前的热度不足以支撑作为独立的热门选题点.</div>
-            </div>
-        </div>
-    </div>
-    
-    <script>
-        function switchTab(index) {
-            // 隐藏所有tab内容
-            const contents = document.querySelectorAll('.tab-content');
-            contents.forEach(content => content.classList.remove('active'));
-            
-            // 移除所有tab的active状态
-            const tabs = document.querySelectorAll('.tab');
-            tabs.forEach(tab => tab.classList.remove('active'));
-            
-            // 显示选中的tab内容
-            document.getElementById('tab-' + index).classList.add('active');
-            tabs[index].classList.add('active');
-        }
-        
-        function toggleStep(stepId) {
-            const step = document.getElementById(stepId);
-            const content = document.getElementById('content-' + stepId);
-            const toggle = step.querySelector('.step-toggle');
-            
-            if (content.classList.contains('expanded')) {
-                content.classList.remove('expanded');
-                toggle.classList.remove('expanded');
-                step.classList.remove('active');
-            } else {
-                content.classList.add('expanded');
-                toggle.classList.add('expanded');
-                step.classList.add('active');
-            }
-        }
-        
-        function togglePrompt(promptId) {
-            const promptContent = document.getElementById(promptId);
-            const btn = promptContent.previousElementSibling;
-            
-            if (promptContent.classList.contains('show')) {
-                promptContent.classList.remove('show');
-                btn.textContent = '显示 Prompt';
-            } else {
-                promptContent.classList.add('show');
-                btn.textContent = '隐藏 Prompt';
-            }
-        }
-        
-        // 页面加载时高亮第一个步骤
-        window.addEventListener('load', function() {
-            const firstSteps = document.querySelectorAll('.workflow-step');
-            firstSteps.forEach((step, index) => {
-                if (index === 0 || index % (firstSteps.length / document.querySelectorAll('.tab-content').length) === 0) {
-                    step.classList.add('active');
-                    const content = step.querySelector('.step-content');
-                    const toggle = step.querySelector('.step-toggle');
-                    if (content) {
-                        content.classList.add('expanded');
-                        toggle.classList.add('expanded');
-                    }
-                }
-            });
-        });
-    </script>
-</body>
-</html>

+ 0 - 1378
knowledge_v2/visualization/workflow_visualization_20251205_151800.html

@@ -1,1378 +0,0 @@
-<!DOCTYPE html>
-<html lang="zh-CN">
-<head>
-    <meta charset="UTF-8">
-    <meta name="viewport" content="width=device-width, initial-scale=1.0">
-    <title>知识获取工作流可视化</title>
-    <style>
-        * {
-            margin: 0;
-            padding: 0;
-            box-sizing: border-box;
-        }
-        
-        body {
-            font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', 'PingFang SC', 'Hiragino Sans GB', 'Microsoft YaHei', sans-serif;
-            background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
-            color: #333;
-            line-height: 1.6;
-            min-height: 100vh;
-        }
-        
-        .container {
-            max-width: 1400px;
-            margin: 0 auto;
-            padding: 30px 20px;
-        }
-        
-        h1 {
-            text-align: center;
-            color: white;
-            margin-bottom: 40px;
-            font-size: 32px;
-            font-weight: 600;
-            text-shadow: 0 2px 10px rgba(0,0,0,0.2);
-            letter-spacing: 1px;
-        }
-        
-        .tabs {
-            display: flex;
-            background: white;
-            border-radius: 12px 12px 0 0;
-            box-shadow: 0 4px 20px rgba(0,0,0,0.15);
-            overflow-x: auto;
-            padding: 5px;
-        }
-        
-        .tab {
-            padding: 16px 28px;
-            cursor: pointer;
-            border: none;
-            background: transparent;
-            color: #666;
-            font-size: 14px;
-            transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
-            white-space: nowrap;
-            border-radius: 8px;
-            margin: 0 4px;
-            position: relative;
-            font-weight: 500;
-        }
-        
-        .tab:hover {
-            background: #f0f0f0;
-            color: #333;
-        }
-        
-        .tab.active {
-            background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
-            color: white;
-            box-shadow: 0 4px 12px rgba(102, 126, 234, 0.4);
-        }
-        
-        .tab-content {
-            display: none;
-            background: white;
-            padding: 40px;
-            border-radius: 0 0 12px 12px;
-            box-shadow: 0 4px 20px rgba(0,0,0,0.15);
-            margin-bottom: 20px;
-            animation: fadeIn 0.3s ease-in;
-        }
-        
-        @keyframes fadeIn {
-            from { opacity: 0; transform: translateY(10px); }
-            to { opacity: 1; transform: translateY(0); }
-        }
-        
-        .tab-content.active {
-            display: block;
-        }
-        
-        .input-section {
-            background: linear-gradient(135deg, #f5f7fa 0%, #c3cfe2 100%);
-            padding: 28px;
-            border-radius: 12px;
-            margin-bottom: 35px;
-            box-shadow: 0 4px 15px rgba(0,0,0,0.1);
-            border: 1px solid rgba(255,255,255,0.5);
-        }
-        
-        .input-section h3 {
-            color: #2c3e50;
-            margin-bottom: 20px;
-            font-size: 20px;
-            font-weight: 600;
-            display: flex;
-            align-items: center;
-            gap: 10px;
-        }
-        
-        .input-section h3::before {
-            content: '📋';
-            font-size: 24px;
-        }
-        
-        .input-item {
-            margin-bottom: 16px;
-            padding: 12px;
-            background: rgba(255,255,255,0.7);
-            border-radius: 8px;
-            transition: all 0.3s;
-        }
-        
-        .input-item:hover {
-            background: rgba(255,255,255,0.9);
-            transform: translateX(5px);
-        }
-        
-        .input-item strong {
-            color: #495057;
-            display: inline-block;
-            width: 110px;
-            font-weight: 600;
-        }
-        
-        .input-item .placeholder {
-            color: #999;
-            font-style: italic;
-        }
-        
-        .workflow {
-            position: relative;
-        }
-        
-        .workflow-step {
-            background: white;
-            border: 2px solid #e0e0e0;
-            border-radius: 12px;
-            margin-bottom: 25px;
-            transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
-            overflow: hidden;
-            box-shadow: 0 2px 8px rgba(0,0,0,0.08);
-        }
-        
-        .workflow-step.active {
-            border-color: #667eea;
-            box-shadow: 0 8px 24px rgba(102, 126, 234, 0.25);
-            transform: translateY(-2px);
-        }
-        
-        .step-header {
-            padding: 20px 24px;
-            background: linear-gradient(135deg, #f8f9fa 0%, #e9ecef 100%);
-            cursor: pointer;
-            display: flex;
-            justify-content: space-between;
-            align-items: center;
-            user-select: none;
-            transition: all 0.3s;
-        }
-        
-        .step-header:hover {
-            background: linear-gradient(135deg, #e9ecef 0%, #dee2e6 100%);
-        }
-        
-        .workflow-step.active .step-header {
-            background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
-            color: white;
-        }
-        
-        .workflow-step.active .step-name {
-            color: white;
-        }
-        
-        .workflow-step.active .step-toggle {
-            color: white;
-        }
-        
-        .step-title {
-            display: flex;
-            align-items: center;
-            gap: 15px;
-        }
-        
-        .step-number {
-            display: inline-flex;
-            align-items: center;
-            justify-content: center;
-            width: 36px;
-            height: 36px;
-            background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
-            color: white;
-            border-radius: 50%;
-            font-size: 16px;
-            font-weight: bold;
-            box-shadow: 0 4px 12px rgba(102, 126, 234, 0.3);
-        }
-        
-        .workflow-step.active .step-number {
-            background: white;
-            color: #667eea;
-            box-shadow: 0 4px 12px rgba(255,255,255,0.3);
-        }
-        
-        .step-name {
-            font-size: 18px;
-            font-weight: 600;
-            color: #2c3e50;
-        }
-        
-        .step-toggle {
-            color: #6c757d;
-            font-size: 20px;
-            transition: transform 0.3s cubic-bezier(0.4, 0, 0.2, 1);
-        }
-        
-        .step-toggle.expanded {
-            transform: rotate(180deg);
-        }
-        
-        .step-content {
-            padding: 0 20px;
-            max-height: 0;
-            overflow: hidden;
-            transition: max-height 0.3s ease-out, padding 0.3s;
-        }
-        
-        .step-content.expanded {
-            max-height: 5000px;
-            padding: 20px;
-        }
-        
-        .step-detail {
-            margin-bottom: 20px;
-        }
-        
-        .step-detail-label {
-            font-weight: 600;
-            color: #495057;
-            margin-bottom: 10px;
-            display: block;
-            font-size: 14px;
-            text-transform: uppercase;
-            letter-spacing: 0.5px;
-        }
-        
-        .step-detail-content {
-            background: #f8f9fa;
-            padding: 16px;
-            border-radius: 8px;
-            border-left: 4px solid #667eea;
-            font-size: 14px;
-            line-height: 1.8;
-            white-space: pre-wrap;
-            word-wrap: break-word;
-            max-height: 400px;
-            overflow-y: auto;
-            box-shadow: 0 2px 8px rgba(0,0,0,0.05);
-        }
-        
-        .json-content {
-            font-family: 'SF Mono', 'Monaco', 'Courier New', monospace;
-            background: #1e1e1e;
-            color: #d4d4d4;
-            padding: 20px;
-            border-radius: 8px;
-            overflow-x: auto;
-            border-left: 4px solid #667eea;
-            box-shadow: 0 4px 12px rgba(0,0,0,0.15);
-        }
-        
-        .prompt-toggle-btn {
-            background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
-            color: white;
-            border: none;
-            padding: 10px 20px;
-            border-radius: 6px;
-            cursor: pointer;
-            font-size: 13px;
-            font-weight: 500;
-            margin-top: 15px;
-            transition: all 0.3s;
-            box-shadow: 0 2px 8px rgba(102, 126, 234, 0.3);
-        }
-        
-        .prompt-toggle-btn:hover {
-            transform: translateY(-2px);
-            box-shadow: 0 4px 12px rgba(102, 126, 234, 0.4);
-        }
-        
-        .prompt-content {
-            display: none;
-            margin-top: 15px;
-            padding: 16px;
-            background: #fff3cd;
-            border-radius: 8px;
-            border-left: 4px solid #ffc107;
-            font-size: 13px;
-            line-height: 1.8;
-            white-space: pre-wrap;
-            word-wrap: break-word;
-            max-height: 500px;
-            overflow-y: auto;
-        }
-        
-        .prompt-content.show {
-            display: block;
-            animation: slideDown 0.3s ease-out;
-        }
-        
-        @keyframes slideDown {
-            from {
-                opacity: 0;
-                max-height: 0;
-            }
-            to {
-                opacity: 1;
-                max-height: 500px;
-            }
-        }
-        
-        .output-section {
-            background: linear-gradient(135deg, #e0f2fe 0%, #bae6fd 100%);
-            padding: 28px;
-            border-radius: 12px;
-            margin-top: 35px;
-            border-left: 4px solid #0ea5e9;
-            box-shadow: 0 4px 15px rgba(14, 165, 233, 0.2);
-        }
-        
-        .output-section h3 {
-            color: #0369a1;
-            margin-bottom: 20px;
-            font-size: 20px;
-            font-weight: 600;
-            display: flex;
-            align-items: center;
-            gap: 10px;
-        }
-        
-        .output-section h3::before {
-            content: '✨';
-            font-size: 24px;
-        }
-        
-        .arrow {
-            text-align: center;
-            color: #667eea;
-            font-size: 32px;
-            margin: -15px 0;
-            position: relative;
-            z-index: 1;
-            filter: drop-shadow(0 2px 4px rgba(102, 126, 234, 0.3));
-        }
-        
-        .arrow::before {
-            content: '↓';
-        }
-        
-        @media (max-width: 768px) {
-            .container {
-                padding: 10px;
-            }
-            
-            .tab {
-                padding: 12px 15px;
-                font-size: 13px;
-            }
-            
-            .tab-content {
-                padding: 20px;
-            }
-        }
-    </style>
-</head>
-<body>
-    <div class="container">
-        <h1>知识获取工作流可视化</h1>
-        <div class="tabs" id="tabs">
-            <button class="tab active" onclick="switchTab(0)">教资查分这个选题点怎么来的</button>
-            <button class="tab " onclick="switchTab(1)">女儿的生日派对这个选题点怎么来的</button>
-            <button class="tab " onclick="switchTab(2)">花艺造型蛋糕这个选题点怎么来的</button>
-        </div>
-        <div class="tab-content active" id="tab-0">
-            <div class="input-section">
-                <h3>输入信息</h3>
-                <div class="input-item"><strong>问题:</strong> 教资查分这个选题点怎么来的</div>
-                <div class="input-item"><strong>帖子信息:</strong> 发帖时间:2025.11.07</div>
-                <div class="input-item"><strong>人设信息:</strong> <span class="placeholder">(无)</span></div>
-            </div>
-            <div class="workflow">
-                <div class="workflow-step" id="step-0-0">
-                    <div class="step-header" onclick="toggleStep('step-0-0')">
-                        <div class="step-title">
-                            <span class="step-number">1</span>
-                            <span class="step-name">生成查询</span>
-                        </div>
-                        <span class="step-toggle">▼</span>
-                    </div>
-                    <div class="step-content" id="content-step-0-0">
-                        <div class="step-detail">
-                            <span class="step-detail-label">生成的Query:</span>
-                            <div class="step-detail-content">用什么工具获取 教资查分这个选题点</div>
-                        </div>
-                    </div>
-                </div>
-                <div class="arrow"></div>
-                <div class="workflow-step" id="step-0-1">
-                    <div class="step-header" onclick="toggleStep('step-0-1')">
-                        <div class="step-title">
-                            <span class="step-number">2</span>
-                            <span class="step-name">选择工具</span>
-                        </div>
-                        <span class="step-toggle">▼</span>
-                    </div>
-                    <div class="step-content" id="content-step-0-1">
-                        <div class="step-detail">
-                            <span class="step-detail-label">工具名称:</span>
-                            <div class="step-detail-content">新红热搜词搜索</div>
-                        </div>
-                        <div class="step-detail">
-                            <span class="step-detail-label">工具调用ID:</span>
-                            <div class="step-detail-content">new_red_hot_search_words_search</div>
-                        </div>
-                        <div class="step-detail">
-                            <span class="step-detail-label">使用方法:</span>
-                            <div class="step-detail-content">输入关键词&quot;教资查分&quot;,获取该词在小红书的热度值、声量概览及近90天热度值趋势曲线,以评估其作为选题点的流量潜力和趋势。</div>
-                        </div>
-                        <button class="prompt-toggle-btn" onclick="togglePrompt('prompt-step-0-1')">显示 Prompt</button>
-                        <div class="prompt-content" id="prompt-step-0-1"># 角色定位
-你是一个工具匹配专家,负责根据用户需求从MCP工具库中找到最合适的工具。
-
-# 核心任务
-1. 接收上游传入的需求用什么工具获取 教资查分这个选题点
-2. 理解需求的核心意图(用户想找什么、解决什么问题)
-3. **判断需求内容是否在工具覆盖范围内**
-4. 查询MCP工具库,匹配最相关的工具
-5. 返回工具信息或&quot;无工具&quot;
-
-# MCP工具库信息
-
-工具名:新红话题榜单
-工具调用ID:xh_newrank_hottopics
-工具介绍:提供小红书平台热门话题全景榜单数据,覆盖排名、话题名称及核心简介、参与人数增量、浏览量增量、笔记增量、互动增量(点赞 / 收藏 / 评论综合统计)等核心维度。支持精准筛选与高效应用。话题类型涵盖美妆,美容个护,鞋包潮玩,穿搭打扮,美食,母婴育儿,旅游出行,家居家装,教育,生活,运动健身,兴趣爱好,影视综,婚嫁,摄影摄像,萌宠,情感星座,科技互联网,资讯,健康养生,科学科普,职场,交通工具,其他 24 个垂直领域,统计时间可选择日榜(近 7 天)、周榜(近 4 周)、月榜(近 5 个月),满足不同周期的热点追踪需求。榜单数据实时更新,同步呈现官方流量扶持话题标识,助力品牌、达人快速锁定高曝光赛道;便于拆解爆款逻辑、制定内容选题策略,提升运营效率。
-
-工具名:新红话题搜索
-工具调用ID:new_red_TopicSearch
-工具介绍:提供小红书平台话题精准检索服务,输入关键词即可匹配相关话题完整列表,核心数据包含话题名称及简介、总浏览量、总参与人数、近 30 天笔记增量、近 30 天互动增量。支持按参与人数、浏览量等指标排序筛选,可精准定位品牌发起话题或官方扶持话题,清晰展示话题流量趋势与内容创作方向。无论是达人寻找高适配性话题蹭流,还是品牌监测竞品话题布局,均能通过数据支撑快速决策,降低内容试错成本。
-
-工具名:新红热搜词榜单
-工具调用ID:xh_newrank_hotwords
-工具介绍:提供小红书平台热搜词权威榜单数据,核心维度包括实时排名、热搜词、主要覆盖内容领域、相关笔记总量、爆文数(高互动笔记占比)、热度值(综合搜索量与互动率计算)。支持按统计时间(日榜 / 周榜 / 月榜)及 美妆,美容个护,鞋包潮玩,穿搭打扮,美食,母婴育儿,旅游出行,家居家装,教育,生活,运动健身,兴趣爱好,影视综,婚嫁,摄影摄像,萌宠,情感星座,科技互联网,资讯,健康养生,科学科普,职场,交通工具,其他 24 个垂直内容领域筛选。榜单每日更新,助力用户第一时间捕捉流量风口。可直接应用于选题规划、竞品投放策略分析。
-
-工具名:新红热搜词搜索
-工具调用ID:new_red_hot_search_words_search
-工具介绍:提供小红书热搜词深度检索与趋势分析服务,输入关键词即可获取全维度数据表现:核心包含热度值(实时动态更新)、声量概览(笔记数、总热度、热门天数、热门内容领域、高频搭配词)、近 90 天热度值趋势曲线(支持自定义时间区间)、相关搜索结果。可直观呈现关键词种草趋势、流量峰值时段、高转化内容特征,帮助用户优化笔记标题关键词布局、预判话题生命周期。
-
-# 匹配规则
-
-## 匹配逻辑(按顺序执行)
-
-### 第一步:需求本质识别
-理解需求背后的真实意图:
-- 示例:&quot;谐音梗这个选题灵感怎么来的&quot; → 真实意图是&quot;寻找热门选题的来源/方法&quot;
-- 示例:&quot;女儿生日派对这个选题点怎么来的&quot; → 真实意图是&quot;寻找选题的灵感来源&quot;
-- 不关注具体关键词,而关注用户想解决什么问题
-
-### 第二步:内容适用性判断(关键!)
-用什么工具能寻找到来源方法
-**在匹配工具前,必须先判断选题内容是否在工具覆盖范围内**
-
-#### 热搜词工具适用的内容类型:
-- ✅ **大众话题**:教资查分、高考、春节、双十一等
-- ✅ **社会热点**:政策变化、明星事件、流行趋势
-- ✅ **行业热点**:美妆新品、穿搭流行、热门景点
-- ✅ **周期性事件**:节日、考试、季节性话题
-- ✅ **群体性关注**:大多数人都可能关注的话题
-
-#### 热搜词工具不适用的内容类型:
-- ❌ **个人化场景**:我的生日、女儿生日派对、我的婚礼
-- ❌ **私人事件**:家庭聚会、个人旅行、朋友聚餐
-- ❌ **特定个体**:某个具体的人、某个具体的宠物、某个具体的家庭
-- ❌ **小众话题**:极少数人关注的专业话题
-- ❌ **虚构内容**:不存在的事件、假设的场景
-
-**判断标准**:
-- 这个选题是否有可能出现在小红书热搜榜上?
-- 这个选题是否是大众普遍关注的?
-- 这个选题是否具有&quot;群体性&quot;而非&quot;个体性&quot;?
-
-**如果内容不在适用范围,直接返回&quot;无工具&quot;,不再继续匹配。**
-
-### 第三步:需求类型分类
-判断需求属于哪种类型:
-- 寻找灵感/选题来源 → 需要热搜词/榜单类工具
-- 分析特定词的热度/趋势 → 需要趋势分析类工具
-- 寻找内容案例/参考 → 需要内容搜索/爬取类工具
-- 生成创意内容 → 需要大模型/AI生成类工具
-
-### 第四步:工具能力匹配
-根据需求类型,对比工具的核心能力:
-- 工具能否解决该类型的问题(如&quot;提供热门选题&quot;)
-
-### 第五步:选择最优工具
-返回能力最匹配的1个工具,无匹配则返回&quot;无工具&quot;
-
-## 匹配标准
-- 功能匹配:工具能力是否覆盖需求要解决的问题
-
-
-## 无匹配判定
-当满足以下任一条件时,返回&quot;无工具&quot;:
-1. 需求内容不在工具覆盖范围内(如非常个人化场景)
-2. MCP工具库中没有工具能解决该需求
-3. 需求涉及的领域完全不在工具库范围
-
-# 输出格式
-json格式,字段定义如下:
-&#39;&#39;&#39;json
-{
-    &quot;工具名&quot;: &quot;工具名称&quot;,
-    &quot;工具调用ID&quot;: &quot;调用ID&quot;,
-    &quot;使用方法&quot;: &quot;简要说明如何使用该工具解决用户需求&quot;
-}
-&#39;&#39;&#39;
-
-## 无匹配时
-&#39;&#39;&#39;json
-{
-
-}
-&#39;&#39;&#39;
-
-# 执行要求
-1. **必须先执行&quot;内容适用性判断&quot;**,再进行工具匹配
-2. 只返回1个最优工具,不返回多个备选
-3. 严格按照输出格式返回结果
-4. 使用方法要具体,说明如何用该工具解决当前需求
-
-# 示例
-
-## 示例1:成功匹配
-需求输入:什么工具能找到教资查分这个灵感点?
-
-输出:
-工具名:新红热搜词搜索
-工具调用ID:new_red_hot_search_words_search
-使用方法:输入关键词&quot;教资查分&quot;,获取该词在小红书的热度值、近90天趋势曲线、相关笔记数据,判断是否为热门选题点。
-{
-    &quot;工具名&quot;: &quot;新红热搜词搜索&quot;,
-    &quot;工具调用ID&quot;: &quot;工具调用ID:new_red_hot_search_words_search&quot;,
-    &quot;使用方法&quot;: &quot;输入关键词&quot;教资查分&quot;,获取该词在小红书的热度值、近90天趋势曲线、相关笔记数据,判断是否为热门选题点。&quot;
-}
-
-## 示例2:无匹配
-需求输入:哪里可以找到股票实时行情数据?
-
-输出:
-{
-
-}
-
-# 上游输入的需求用什么工具获取 教资查分这个选题点
-{用什么工具获取 教资查分这个选题点}</div>
-                    </div>
-                </div>
-                <div class="arrow"></div>
-                <div class="workflow-step" id="step-0-2">
-                    <div class="step-header" onclick="toggleStep('step-0-2')">
-                        <div class="step-title">
-                            <span class="step-number">3</span>
-                            <span class="step-name">提取参数</span>
-                        </div>
-                        <span class="step-toggle">▼</span>
-                    </div>
-                    <div class="step-content" id="content-step-0-2">
-                        <div class="step-detail">
-                            <span class="step-detail-label">提取的参数:</span>
-                            <div class="step-detail-content json-content">{
-  &quot;prompt&quot;: &quot;输入关键词\&quot;教资查分\&quot;,获取该词在小红书的热度值、近90天热度值趋势曲线、声量概览及相关搜索结果,从而判断其作为选题点的热度和趋势,辅助选题决策。&quot;
-}</div>
-                        </div>
-                        <button class="prompt-toggle-btn" onclick="togglePrompt('prompt-step-0-2')">显示 Prompt</button>
-                        <div class="prompt-content" id="prompt-step-0-2">你是一个API调用专家。你的任务是根据已经选择的工具及使用方法信息生成正确的调用参数。
-
-选择的工具调用ID:
-new_red_hot_search_words_search
-选择的工具使用方法:
-输入关键词&quot;教资查分&quot;,获取该词在小红书的热度值、近90天热度值趋势曲线、声量概览及相关搜索结果,从而判断其作为选题点的热度和趋势,辅助选题决策。
-
-所有的工具参数定义:
-{
-    &quot;name&quot;: &quot;新红热搜词搜索&quot;,
-    &quot;description&quot;: &quot;提供小红书热搜词深度检索与趋势分析服务,输入关键词即可获取全维度数据表现:核心包含热度值(实时动态更新)、声量概览(笔记数、总热度、热门天数、热门内容领域、高频搭配词)、近 90 天热度值趋势曲线(支持自定义时间区间)、相关搜索结果。可直观呈现关键词种草趋势、流量峰值时段、高转化内容特征,帮助用户优化笔记标题关键词布局、预判话题生命周期。&quot;,
-    &quot;inputSchema&quot;: {
-        &quot;type&quot;: &quot;object&quot;,
-        &quot;properties&quot;: {
-            &quot;prompt&quot;: {
-                &quot;type&quot;: &quot;string&quot;,
-                &quot;description&quot;: &quot;用户使用方法,包括输入的关键词&quot;
-            }
-        },
-        &quot;required&quot;: [
-            &quot;prompt&quot;
-        ]
-    }
-}
-
-请分析工具的参数要求,根据查询内容提取或推断出合适的参数值。
-
-输出格式:请以 JSON 格式输出参数字典,例如:
-{
-    &quot;param1&quot;: &quot;value1&quot;,
-    &quot;param2&quot;: &quot;value2&quot;
-}
-
-注意事项:
-1. 只输出参数的JSON字典,不要包含任何解释
-2. 参数名必须与工具定义中的参数名完全一致
-3. 参数值要从查询中提取或合理推断
-4. 不要添加工具定义中没有的参数
-5. 如果某个参数无法从查询中获取,使用合理的默认值或省略该参数
-
-只输出JSON,不要包含markdown标记。</div>
-                    </div>
-                </div>
-                <div class="arrow"></div>
-                <div class="workflow-step" id="step-0-3">
-                    <div class="step-header" onclick="toggleStep('step-0-3')">
-                        <div class="step-title">
-                            <span class="step-number">4</span>
-                            <span class="step-name">执行工具</span>
-                        </div>
-                        <span class="step-toggle">▼</span>
-                    </div>
-                    <div class="step-content" id="content-step-0-3">
-                        <div class="step-detail">
-                            <span class="step-detail-label">执行结果:</span>
-                            <div class="step-detail-content json-content">## &quot;教资查分&quot;关键词数据表现和趋势分析
-
-### 热度值
-- 近30天热度值超过96.14%全站其他词
-- 近30天热度值超过95.86%教育领域其他词
-
-### 声量概览
-- **笔记数**: 16篇(环比增长700.00%)
-- **总热度**: 4082(环比增长408100.00%)
-- **热门天数**: 4/30天
-- **近30天热门内容领域**:
-  - 教育: 56.25%
-  - 职场: 31.25%
-  - 运动健身: 6.25%
-- **高频搭配词**: 暂无相关数据
-
-### 热度值趋势
-- **整体趋势**: 下降趋势
-- **效果分析**:
-  - TOP1下降趋势: 2025-11-07 至 2025-11-08
-  - TOP2下降趋势: 2025-11-04 至 2025-11-05
-
-### 相关搜索结果
-- 共1条搜索结果
-- 内容领域分布: 教育、职场等领域为主
-
-从数据可以看出,&quot;教资查分&quot;这个关键词在近期有显著的热度增长,但目前呈现下降趋势。该关键词主要与教育和职场领域相关,这符合教师资格证查询分数的实际应用场景。虽然笔记数量不多(16篇),但环比增长非常高,表明这是一个短期内突然受到关注的话题。</div>
-                        </div>
-                    </div>
-                </div>
-            </div>
-            <div class="output-section">
-                <h3>最终输出</h3>
-                <div class="step-detail-content json-content">## &quot;教资查分&quot;关键词数据表现和趋势分析
-
-### 热度值
-- 近30天热度值超过96.14%全站其他词
-- 近30天热度值超过95.86%教育领域其他词
-
-### 声量概览
-- **笔记数**: 16篇(环比增长700.00%)
-- **总热度**: 4082(环比增长408100.00%)
-- **热门天数**: 4/30天
-- **近30天热门内容领域**:
-  - 教育: 56.25%
-  - 职场: 31.25%
-  - 运动健身: 6.25%
-- **高频搭配词**: 暂无相关数据
-
-### 热度值趋势
-- **整体趋势**: 下降趋势
-- **效果分析**:
-  - TOP1下降趋势: 2025-11-07 至 2025-11-08
-  - TOP2下降趋势: 2025-11-04 至 2025-11-05
-
-### 相关搜索结果
-- 共1条搜索结果
-- 内容领域分布: 教育、职场等领域为主
-
-从数据可以看出,&quot;教资查分&quot;这个关键词在近期有显著的热度增长,但目前呈现下降趋势。该关键词主要与教育和职场领域相关,这符合教师资格证查询分数的实际应用场景。虽然笔记数量不多(16篇),但环比增长非常高,表明这是一个短期内突然受到关注的话题。</div>
-            </div>
-        </div>
-        <div class="tab-content " id="tab-1">
-            <div class="input-section">
-                <h3>输入信息</h3>
-                <div class="input-item"><strong>问题:</strong> 女儿的生日派对这个选题点怎么来的</div>
-                <div class="input-item"><strong>帖子信息:</strong> 发帖时间:2025-09-16</div>
-                <div class="input-item"><strong>人设信息:</strong> <span class="placeholder">(无)</span></div>
-            </div>
-            <div class="workflow">
-                <div class="workflow-step" id="step-1-0">
-                    <div class="step-header" onclick="toggleStep('step-1-0')">
-                        <div class="step-title">
-                            <span class="step-number">1</span>
-                            <span class="step-name">生成查询</span>
-                        </div>
-                        <span class="step-toggle">▼</span>
-                    </div>
-                    <div class="step-content" id="content-step-1-0">
-                        <div class="step-detail">
-                            <span class="step-detail-label">生成的Query:</span>
-                            <div class="step-detail-content">用什么工具获取女儿的生日派对这个选题点 query</div>
-                        </div>
-                    </div>
-                </div>
-                <div class="arrow"></div>
-                <div class="workflow-step" id="step-1-1">
-                    <div class="step-header" onclick="toggleStep('step-1-1')">
-                        <div class="step-title">
-                            <span class="step-number">2</span>
-                            <span class="step-name">选择工具</span>
-                        </div>
-                        <span class="step-toggle">▼</span>
-                    </div>
-                    <div class="step-content" id="content-step-1-1">
-                        <div class="step-detail">
-                            <span class="step-detail-label">选择结果:</span>
-                            <div class="step-detail-content" style="color: #dc3545; font-weight: 500;">无匹配工具</div>
-                        </div>
-                        <button class="prompt-toggle-btn" onclick="togglePrompt('prompt-step-1-1')">显示 Prompt</button>
-                        <div class="prompt-content" id="prompt-step-1-1"># 角色定位
-你是一个工具匹配专家,负责根据用户需求从MCP工具库中找到最合适的工具。
-
-# 核心任务
-1. 接收上游传入的需求用什么工具获取女儿的生日派对这个选题点 query
-2. 理解需求的核心意图(用户想找什么、解决什么问题)
-3. **判断需求内容是否在工具覆盖范围内**
-4. 查询MCP工具库,匹配最相关的工具
-5. 返回工具信息或&quot;无工具&quot;
-
-# MCP工具库信息
-
-工具名:新红话题榜单
-工具调用ID:xh_newrank_hottopics
-工具介绍:提供小红书平台热门话题全景榜单数据,覆盖排名、话题名称及核心简介、参与人数增量、浏览量增量、笔记增量、互动增量(点赞 / 收藏 / 评论综合统计)等核心维度。支持精准筛选与高效应用。话题类型涵盖美妆,美容个护,鞋包潮玩,穿搭打扮,美食,母婴育儿,旅游出行,家居家装,教育,生活,运动健身,兴趣爱好,影视综,婚嫁,摄影摄像,萌宠,情感星座,科技互联网,资讯,健康养生,科学科普,职场,交通工具,其他 24 个垂直领域,统计时间可选择日榜(近 7 天)、周榜(近 4 周)、月榜(近 5 个月),满足不同周期的热点追踪需求。榜单数据实时更新,同步呈现官方流量扶持话题标识,助力品牌、达人快速锁定高曝光赛道;便于拆解爆款逻辑、制定内容选题策略,提升运营效率。
-
-工具名:新红话题搜索
-工具调用ID:new_red_TopicSearch
-工具介绍:提供小红书平台话题精准检索服务,输入关键词即可匹配相关话题完整列表,核心数据包含话题名称及简介、总浏览量、总参与人数、近 30 天笔记增量、近 30 天互动增量。支持按参与人数、浏览量等指标排序筛选,可精准定位品牌发起话题或官方扶持话题,清晰展示话题流量趋势与内容创作方向。无论是达人寻找高适配性话题蹭流,还是品牌监测竞品话题布局,均能通过数据支撑快速决策,降低内容试错成本。
-
-工具名:新红热搜词榜单
-工具调用ID:xh_newrank_hotwords
-工具介绍:提供小红书平台热搜词权威榜单数据,核心维度包括实时排名、热搜词、主要覆盖内容领域、相关笔记总量、爆文数(高互动笔记占比)、热度值(综合搜索量与互动率计算)。支持按统计时间(日榜 / 周榜 / 月榜)及 美妆,美容个护,鞋包潮玩,穿搭打扮,美食,母婴育儿,旅游出行,家居家装,教育,生活,运动健身,兴趣爱好,影视综,婚嫁,摄影摄像,萌宠,情感星座,科技互联网,资讯,健康养生,科学科普,职场,交通工具,其他 24 个垂直内容领域筛选。榜单每日更新,助力用户第一时间捕捉流量风口。可直接应用于选题规划、竞品投放策略分析。
-
-工具名:新红热搜词搜索
-工具调用ID:new_red_hot_search_words_search
-工具介绍:提供小红书热搜词深度检索与趋势分析服务,输入关键词即可获取全维度数据表现:核心包含热度值(实时动态更新)、声量概览(笔记数、总热度、热门天数、热门内容领域、高频搭配词)、近 90 天热度值趋势曲线(支持自定义时间区间)、相关搜索结果。可直观呈现关键词种草趋势、流量峰值时段、高转化内容特征,帮助用户优化笔记标题关键词布局、预判话题生命周期。
-
-# 匹配规则
-
-## 匹配逻辑(按顺序执行)
-
-### 第一步:需求本质识别
-理解需求背后的真实意图:
-- 示例:&quot;谐音梗这个选题灵感怎么来的&quot; → 真实意图是&quot;寻找热门选题的来源/方法&quot;
-- 示例:&quot;女儿生日派对这个选题点怎么来的&quot; → 真实意图是&quot;寻找选题的灵感来源&quot;
-- 不关注具体关键词,而关注用户想解决什么问题
-
-### 第二步:内容适用性判断(关键!)
-用什么工具能寻找到来源方法
-**在匹配工具前,必须先判断选题内容是否在工具覆盖范围内**
-
-#### 热搜词工具适用的内容类型:
-- ✅ **大众话题**:教资查分、高考、春节、双十一等
-- ✅ **社会热点**:政策变化、明星事件、流行趋势
-- ✅ **行业热点**:美妆新品、穿搭流行、热门景点
-- ✅ **周期性事件**:节日、考试、季节性话题
-- ✅ **群体性关注**:大多数人都可能关注的话题
-
-#### 热搜词工具不适用的内容类型:
-- ❌ **个人化场景**:我的生日、女儿生日派对、我的婚礼
-- ❌ **私人事件**:家庭聚会、个人旅行、朋友聚餐
-- ❌ **特定个体**:某个具体的人、某个具体的宠物、某个具体的家庭
-- ❌ **小众话题**:极少数人关注的专业话题
-- ❌ **虚构内容**:不存在的事件、假设的场景
-
-**判断标准**:
-- 这个选题是否有可能出现在小红书热搜榜上?
-- 这个选题是否是大众普遍关注的?
-- 这个选题是否具有&quot;群体性&quot;而非&quot;个体性&quot;?
-
-**如果内容不在适用范围,直接返回&quot;无工具&quot;,不再继续匹配。**
-
-### 第三步:需求类型分类
-判断需求属于哪种类型:
-- 寻找灵感/选题来源 → 需要热搜词/榜单类工具
-- 分析特定词的热度/趋势 → 需要趋势分析类工具
-- 寻找内容案例/参考 → 需要内容搜索/爬取类工具
-- 生成创意内容 → 需要大模型/AI生成类工具
-
-### 第四步:工具能力匹配
-根据需求类型,对比工具的核心能力:
-- 工具能否解决该类型的问题(如&quot;提供热门选题&quot;)
-
-### 第五步:选择最优工具
-返回能力最匹配的1个工具,无匹配则返回&quot;无工具&quot;
-
-## 匹配标准
-- 功能匹配:工具能力是否覆盖需求要解决的问题
-
-
-## 无匹配判定
-当满足以下任一条件时,返回&quot;无工具&quot;:
-1. 需求内容不在工具覆盖范围内(如非常个人化场景)
-2. MCP工具库中没有工具能解决该需求
-3. 需求涉及的领域完全不在工具库范围
-
-# 输出格式
-json格式,字段定义如下:
-&#39;&#39;&#39;json
-{
-    &quot;工具名&quot;: &quot;工具名称&quot;,
-    &quot;工具调用ID&quot;: &quot;调用ID&quot;,
-    &quot;使用方法&quot;: &quot;简要说明如何使用该工具解决用户需求&quot;
-}
-&#39;&#39;&#39;
-
-## 无匹配时
-&#39;&#39;&#39;json
-{
-
-}
-&#39;&#39;&#39;
-
-# 执行要求
-1. **必须先执行&quot;内容适用性判断&quot;**,再进行工具匹配
-2. 只返回1个最优工具,不返回多个备选
-3. 严格按照输出格式返回结果
-4. 使用方法要具体,说明如何用该工具解决当前需求
-
-# 示例
-
-## 示例1:成功匹配
-需求输入:什么工具能找到教资查分这个灵感点?
-
-输出:
-工具名:新红热搜词搜索
-工具调用ID:new_red_hot_search_words_search
-使用方法:输入关键词&quot;教资查分&quot;,获取该词在小红书的热度值、近90天趋势曲线、相关笔记数据,判断是否为热门选题点。
-{
-    &quot;工具名&quot;: &quot;新红热搜词搜索&quot;,
-    &quot;工具调用ID&quot;: &quot;工具调用ID:new_red_hot_search_words_search&quot;,
-    &quot;使用方法&quot;: &quot;输入关键词&quot;教资查分&quot;,获取该词在小红书的热度值、近90天趋势曲线、相关笔记数据,判断是否为热门选题点。&quot;
-}
-
-## 示例2:无匹配
-需求输入:哪里可以找到股票实时行情数据?
-
-输出:
-{
-
-}
-
-# 上游输入的需求用什么工具获取女儿的生日派对这个选题点 query
-{用什么工具获取女儿的生日派对这个选题点 query}</div>
-                    </div>
-                </div>
-                <div class="arrow"></div>
-                <div class="workflow-step" id="step-1-2">
-                    <div class="step-header" onclick="toggleStep('step-1-2')">
-                        <div class="step-title">
-                            <span class="step-number">3</span>
-                            <span class="step-name">LLM搜索</span>
-                        </div>
-                        <span class="step-toggle">▼</span>
-                    </div>
-                    <div class="step-content" id="content-step-1-2">
-                        <div class="step-detail">
-                            <span class="step-detail-label">搜索结果:</span>
-                            <div style="margin-bottom: 15px; padding: 12px; background: #f0f8ff; border-radius: 6px; border-left: 3px solid #4a90e2;">
-                                <div style="font-weight: 600; color: #2c3e50; margin-bottom: 8px;">查询 1: 用什么工具获取女儿的生日派对这个选题点 query</div>
-                                <div style="color: #555; line-height: 1.6; white-space: pre-wrap;">根据搜索结果,要围绕“女儿的生日派对”这个选题点进行内容创作或策划,可以使用以下几类工具和方法来获取灵感、信息和执行方案:
-
-**1. 灵感与创意获取工具:**
-*   **社交媒体平台:** 如小红书、Instagram、Pinterest(需科学上网)等。这些平台上有大量用户分享的真实派对照片、视频和经验贴,是获取最新流行主题(如独角兽、小黄鸭、公主风等)、布置创意和DIY点子的绝佳来源。
-*   **视频平台:** 如YouTube、Bilibili。可以搜索“低成本生日派对”、“XX岁女孩生日派对”等关键词,观看详细的策划和布置过程视频,非常直观且具有可操作性。
-
-**2. 实用策划与执行工具:**
-*   **在线邀请函制作工具:** 如Canva、金数据、腾讯问卷等。可以轻松创建精美的电子邀请函,并附带RSVP(请回复)功能,方便统计人数。
-*   **清单与项目管理工具:** 如滴答清单(TickTick)、微软To Do、甚至简单的Excel表格。用于制定详细的待办事项清单,包括预算、采购清单、时间安排等,确保不遗漏任何环节。
-*   **本地生活服务平台:** 如大众点评、美团。用于搜索和预订附近的亲子餐厅、室内游乐场、派对策划公司、蛋糕房等服务。
-
-**3. 信息查询与学习工具:**
-*   **搜索引擎:** 直接使用百度、谷歌等搜索引擎,输入具体的疑问,例如“4岁女孩生日派对游戏”、“低预算生日派对食物”、“生日派对注意事项”等,可以找到大量博客文章、论坛讨论(如知乎、Reddit)和专业指南,了解不同年龄段孩子的派对要点、避坑指南和花费参考。
-
-总而言之,将**社交媒体/视频平台**作为灵感库,用**在线工具**处理邀请和规划,并通过**搜索引擎**解决具体问题,就能高效地完成“女儿生日派对”的选题策划。</div>
-                            </div>
-                        </div>
-                    </div>
-                </div>
-                <div class="arrow"></div>
-                <div class="workflow-step" id="step-1-3">
-                    <div class="step-header" onclick="toggleStep('step-1-3')">
-                        <div class="step-title">
-                            <span class="step-number">4</span>
-                            <span class="step-name">多渠道搜索结果整合</span>
-                        </div>
-                        <span class="step-toggle">▼</span>
-                    </div>
-                    <div class="step-content" id="content-step-1-3">
-                        <div class="step-detail">
-                            <span class="step-detail-label">来源统计:</span>
-                            <div class="step-detail-content">总来源数: 1, 有效来源数: 1</div>
-                        </div>
-                        <div class="step-detail">
-                            <span class="step-detail-label">整合结果:</span>
-                            <div class="step-detail-content">女儿的生日派对这一选题点,可以通过以下工具和方法进行灵感获取、信息查询及策划执行,从而使内容或派对本身得以具体化和完善:
-
-### 1. 灵感与创意获取
-
-*   **社交媒体平台:** 小红书、Instagram、Pinterest等平台汇集了大量用户分享的派对照片、视频和经验贴,是发现最新流行主题(如独角兽、小黄鸭、公主风)、布置创意和DIY点子的宝库。
-*   **视频平台:** YouTube、Bilibili等平台可搜索“低成本生日派对”、“XX岁女孩生日派对”等关键词,通过观看详细的策划和布置过程视频,获取直观且可操作的灵感。
-
-### 2. 实用策划与执行
-
-*   **在线邀请函制作工具:** Canva、金数据、腾讯问卷等工具可用于轻松创建精美的电子邀请函,并支持RSVP(请回复)功能,便于统计派对人数。
-*   **清单与项目管理工具:** 滴答清单(TickTick)、微软To Do或Excel表格等,有助于制定详细的待办事项清单,包括预算、采购清单和时间安排,确保派对筹备不遗漏任何环节。
-*   **本地生活服务平台:** 大众点评、美团等平台可用于搜索和预订附近的亲子餐厅、室内游乐场、派对策划公司、蛋糕房等服务。
-
-### 3. 信息查询与学习
-
-*   **搜索引擎:** 百度、谷歌等搜索引擎是解答具体疑问的强大工具。输入“4岁女孩生日派对游戏”、“低预算生日派对食物”、“生日派对注意事项”等关键词,可以找到大量博客文章、论坛讨论(如知乎、Reddit)和专业指南,了解不同年龄段孩子派对的要点、避坑指南及花费参考。
-
-总而言之,通过将社交媒体/视频平台作为灵感来源,利用在线工具进行邀请和规划,并通过搜索引擎解决具体问题,可以高效地展开和完善“女儿生日派对”这个选题点。</div>
-                        </div>
-                        <button class="prompt-toggle-btn" onclick="togglePrompt('prompt-step-1-3')">显示 Prompt</button>
-                        <div class="prompt-content" id="prompt-step-1-3">你是一个知识整合专家。你的任务是根据用户的问题,将来自不同渠道(如LLM搜索、小红书搜索等)的知识文本进行整合,生成一份全面、准确、逻辑清晰的回答。
-
-用户问题:
-女儿的生日派对这个选题点怎么来的||发帖时间:2025-09-16||
-
-以下是来自不同渠道的知识文本:
-【来源:LLM Search】
-根据搜索结果,要围绕“女儿的生日派对”这个选题点进行内容创作或策划,可以使用以下几类工具和方法来获取灵感、信息和执行方案:
-
-**1. 灵感与创意获取工具:**
-*   **社交媒体平台:** 如小红书、Instagram、Pinterest(需科学上网)等。这些平台上有大量用户分享的真实派对照片、视频和经验贴,是获取最新流行主题(如独角兽、小黄鸭、公主风等)、布置创意和DIY点子的绝佳来源。
-*   **视频平台:** 如YouTube、Bilibili。可以搜索“低成本生日派对”、“XX岁女孩生日派对”等关键词,观看详细的策划和布置过程视频,非常直观且具有可操作性。
-
-**2. 实用策划与执行工具:**
-*   **在线邀请函制作工具:** 如Canva、金数据、腾讯问卷等。可以轻松创建精美的电子邀请函,并附带RSVP(请回复)功能,方便统计人数。
-*   **清单与项目管理工具:** 如滴答清单(TickTick)、微软To Do、甚至简单的Excel表格。用于制定详细的待办事项清单,包括预算、采购清单、时间安排等,确保不遗漏任何环节。
-*   **本地生活服务平台:** 如大众点评、美团。用于搜索和预订附近的亲子餐厅、室内游乐场、派对策划公司、蛋糕房等服务。
-
-**3. 信息查询与学习工具:**
-*   **搜索引擎:** 直接使用百度、谷歌等搜索引擎,输入具体的疑问,例如“4岁女孩生日派对游戏”、“低预算生日派对食物”、“生日派对注意事项”等,可以找到大量博客文章、论坛讨论(如知乎、Reddit)和专业指南,了解不同年龄段孩子的派对要点、避坑指南和花费参考。
-
-总而言之,将**社交媒体/视频平台**作为灵感库,用**在线工具**处理邀请和规划,并通过**搜索引擎**解决具体问题,就能高效地完成“女儿生日派对”的选题策划。
-
-
-
-请遵循以下原则进行整合:
-1. **全面性**:涵盖所有渠道提供的关键信息,不要遗漏重要细节。
-2. **准确性**:如果不同渠道的信息存在冲突,请尝试分析原因并给出最合理的解释,或者同时呈现不同的观点并说明来源。
-3. **逻辑性**:将信息组织成结构清晰的文章,使用恰当的标题、列表和段落。
-4. **可读性**:语言通顺流畅,易于理解。
-5. **去重**:去除重复的信息。
-
-请直接输出整合后的知识文本,不要包含任何解释性的话语。</div>
-                    </div>
-                </div>
-            </div>
-        </div>
-        <div class="tab-content " id="tab-2">
-            <div class="input-section">
-                <h3>输入信息</h3>
-                <div class="input-item"><strong>问题:</strong> 花艺造型蛋糕这个选题点怎么来的</div>
-                <div class="input-item"><strong>帖子信息:</strong> 发帖时间:2025-09-16</div>
-                <div class="input-item"><strong>人设信息:</strong> <span class="placeholder">(无)</span></div>
-            </div>
-            <div class="workflow">
-                <div class="workflow-step" id="step-2-0">
-                    <div class="step-header" onclick="toggleStep('step-2-0')">
-                        <div class="step-title">
-                            <span class="step-number">1</span>
-                            <span class="step-name">生成查询</span>
-                        </div>
-                        <span class="step-toggle">▼</span>
-                    </div>
-                    <div class="step-content" id="content-step-2-0">
-                        <div class="step-detail">
-                            <span class="step-detail-label">生成的Query:</span>
-                            <div class="step-detail-content">用什么工具获取花艺造型蛋糕这个选题点</div>
-                        </div>
-                    </div>
-                </div>
-                <div class="arrow"></div>
-                <div class="workflow-step" id="step-2-1">
-                    <div class="step-header" onclick="toggleStep('step-2-1')">
-                        <div class="step-title">
-                            <span class="step-number">2</span>
-                            <span class="step-name">选择工具</span>
-                        </div>
-                        <span class="step-toggle">▼</span>
-                    </div>
-                    <div class="step-content" id="content-step-2-1">
-                        <div class="step-detail">
-                            <span class="step-detail-label">工具名称:</span>
-                            <div class="step-detail-content">新红热搜词搜索</div>
-                        </div>
-                        <div class="step-detail">
-                            <span class="step-detail-label">工具调用ID:</span>
-                            <div class="step-detail-content">new_red_hot_search_words_search</div>
-                        </div>
-                        <div class="step-detail">
-                            <span class="step-detail-label">使用方法:</span>
-                            <div class="step-detail-content">输入关键词&quot;花艺造型蛋糕&quot;,获取该词在小红书的热度值、近90天趋势曲线、声量概览(笔记数、总热度、热门天数、热门内容领域、高频搭配词),以此评估其作为选题点的潜力与创作方向。</div>
-                        </div>
-                        <button class="prompt-toggle-btn" onclick="togglePrompt('prompt-step-2-1')">显示 Prompt</button>
-                        <div class="prompt-content" id="prompt-step-2-1"># 角色定位
-你是一个工具匹配专家,负责根据用户需求从MCP工具库中找到最合适的工具。
-
-# 核心任务
-1. 接收上游传入的需求用什么工具获取花艺造型蛋糕这个选题点
-2. 理解需求的核心意图(用户想找什么、解决什么问题)
-3. **判断需求内容是否在工具覆盖范围内**
-4. 查询MCP工具库,匹配最相关的工具
-5. 返回工具信息或&quot;无工具&quot;
-
-# MCP工具库信息
-
-工具名:新红话题榜单
-工具调用ID:xh_newrank_hottopics
-工具介绍:提供小红书平台热门话题全景榜单数据,覆盖排名、话题名称及核心简介、参与人数增量、浏览量增量、笔记增量、互动增量(点赞 / 收藏 / 评论综合统计)等核心维度。支持精准筛选与高效应用。话题类型涵盖美妆,美容个护,鞋包潮玩,穿搭打扮,美食,母婴育儿,旅游出行,家居家装,教育,生活,运动健身,兴趣爱好,影视综,婚嫁,摄影摄像,萌宠,情感星座,科技互联网,资讯,健康养生,科学科普,职场,交通工具,其他 24 个垂直领域,统计时间可选择日榜(近 7 天)、周榜(近 4 周)、月榜(近 5 个月),满足不同周期的热点追踪需求。榜单数据实时更新,同步呈现官方流量扶持话题标识,助力品牌、达人快速锁定高曝光赛道;便于拆解爆款逻辑、制定内容选题策略,提升运营效率。
-
-工具名:新红话题搜索
-工具调用ID:new_red_TopicSearch
-工具介绍:提供小红书平台话题精准检索服务,输入关键词即可匹配相关话题完整列表,核心数据包含话题名称及简介、总浏览量、总参与人数、近 30 天笔记增量、近 30 天互动增量。支持按参与人数、浏览量等指标排序筛选,可精准定位品牌发起话题或官方扶持话题,清晰展示话题流量趋势与内容创作方向。无论是达人寻找高适配性话题蹭流,还是品牌监测竞品话题布局,均能通过数据支撑快速决策,降低内容试错成本。
-
-工具名:新红热搜词榜单
-工具调用ID:xh_newrank_hotwords
-工具介绍:提供小红书平台热搜词权威榜单数据,核心维度包括实时排名、热搜词、主要覆盖内容领域、相关笔记总量、爆文数(高互动笔记占比)、热度值(综合搜索量与互动率计算)。支持按统计时间(日榜 / 周榜 / 月榜)及 美妆,美容个护,鞋包潮玩,穿搭打扮,美食,母婴育儿,旅游出行,家居家装,教育,生活,运动健身,兴趣爱好,影视综,婚嫁,摄影摄像,萌宠,情感星座,科技互联网,资讯,健康养生,科学科普,职场,交通工具,其他 24 个垂直内容领域筛选。榜单每日更新,助力用户第一时间捕捉流量风口。可直接应用于选题规划、竞品投放策略分析。
-
-工具名:新红热搜词搜索
-工具调用ID:new_red_hot_search_words_search
-工具介绍:提供小红书热搜词深度检索与趋势分析服务,输入关键词即可获取全维度数据表现:核心包含热度值(实时动态更新)、声量概览(笔记数、总热度、热门天数、热门内容领域、高频搭配词)、近 90 天热度值趋势曲线(支持自定义时间区间)、相关搜索结果。可直观呈现关键词种草趋势、流量峰值时段、高转化内容特征,帮助用户优化笔记标题关键词布局、预判话题生命周期。
-
-# 匹配规则
-
-## 匹配逻辑(按顺序执行)
-
-### 第一步:需求本质识别
-理解需求背后的真实意图:
-- 示例:&quot;谐音梗这个选题灵感怎么来的&quot; → 真实意图是&quot;寻找热门选题的来源/方法&quot;
-- 示例:&quot;女儿生日派对这个选题点怎么来的&quot; → 真实意图是&quot;寻找选题的灵感来源&quot;
-- 不关注具体关键词,而关注用户想解决什么问题
-
-### 第二步:内容适用性判断(关键!)
-用什么工具能寻找到来源方法
-**在匹配工具前,必须先判断选题内容是否在工具覆盖范围内**
-
-#### 热搜词工具适用的内容类型:
-- ✅ **大众话题**:教资查分、高考、春节、双十一等
-- ✅ **社会热点**:政策变化、明星事件、流行趋势
-- ✅ **行业热点**:美妆新品、穿搭流行、热门景点
-- ✅ **周期性事件**:节日、考试、季节性话题
-- ✅ **群体性关注**:大多数人都可能关注的话题
-
-#### 热搜词工具不适用的内容类型:
-- ❌ **个人化场景**:我的生日、女儿生日派对、我的婚礼
-- ❌ **私人事件**:家庭聚会、个人旅行、朋友聚餐
-- ❌ **特定个体**:某个具体的人、某个具体的宠物、某个具体的家庭
-- ❌ **小众话题**:极少数人关注的专业话题
-- ❌ **虚构内容**:不存在的事件、假设的场景
-
-**判断标准**:
-- 这个选题是否有可能出现在小红书热搜榜上?
-- 这个选题是否是大众普遍关注的?
-- 这个选题是否具有&quot;群体性&quot;而非&quot;个体性&quot;?
-
-**如果内容不在适用范围,直接返回&quot;无工具&quot;,不再继续匹配。**
-
-### 第三步:需求类型分类
-判断需求属于哪种类型:
-- 寻找灵感/选题来源 → 需要热搜词/榜单类工具
-- 分析特定词的热度/趋势 → 需要趋势分析类工具
-- 寻找内容案例/参考 → 需要内容搜索/爬取类工具
-- 生成创意内容 → 需要大模型/AI生成类工具
-
-### 第四步:工具能力匹配
-根据需求类型,对比工具的核心能力:
-- 工具能否解决该类型的问题(如&quot;提供热门选题&quot;)
-
-### 第五步:选择最优工具
-返回能力最匹配的1个工具,无匹配则返回&quot;无工具&quot;
-
-## 匹配标准
-- 功能匹配:工具能力是否覆盖需求要解决的问题
-
-
-## 无匹配判定
-当满足以下任一条件时,返回&quot;无工具&quot;:
-1. 需求内容不在工具覆盖范围内(如非常个人化场景)
-2. MCP工具库中没有工具能解决该需求
-3. 需求涉及的领域完全不在工具库范围
-
-# 输出格式
-json格式,字段定义如下:
-&#39;&#39;&#39;json
-{
-    &quot;工具名&quot;: &quot;工具名称&quot;,
-    &quot;工具调用ID&quot;: &quot;调用ID&quot;,
-    &quot;使用方法&quot;: &quot;简要说明如何使用该工具解决用户需求&quot;
-}
-&#39;&#39;&#39;
-
-## 无匹配时
-&#39;&#39;&#39;json
-{
-
-}
-&#39;&#39;&#39;
-
-# 执行要求
-1. **必须先执行&quot;内容适用性判断&quot;**,再进行工具匹配
-2. 只返回1个最优工具,不返回多个备选
-3. 严格按照输出格式返回结果
-4. 使用方法要具体,说明如何用该工具解决当前需求
-
-# 示例
-
-## 示例1:成功匹配
-需求输入:什么工具能找到教资查分这个灵感点?
-
-输出:
-工具名:新红热搜词搜索
-工具调用ID:new_red_hot_search_words_search
-使用方法:输入关键词&quot;教资查分&quot;,获取该词在小红书的热度值、近90天趋势曲线、相关笔记数据,判断是否为热门选题点。
-{
-    &quot;工具名&quot;: &quot;新红热搜词搜索&quot;,
-    &quot;工具调用ID&quot;: &quot;工具调用ID:new_red_hot_search_words_search&quot;,
-    &quot;使用方法&quot;: &quot;输入关键词&quot;教资查分&quot;,获取该词在小红书的热度值、近90天趋势曲线、相关笔记数据,判断是否为热门选题点。&quot;
-}
-
-## 示例2:无匹配
-需求输入:哪里可以找到股票实时行情数据?
-
-输出:
-{
-
-}
-
-# 上游输入的需求用什么工具获取花艺造型蛋糕这个选题点
-{用什么工具获取花艺造型蛋糕这个选题点}</div>
-                    </div>
-                </div>
-                <div class="arrow"></div>
-                <div class="workflow-step" id="step-2-2">
-                    <div class="step-header" onclick="toggleStep('step-2-2')">
-                        <div class="step-title">
-                            <span class="step-number">3</span>
-                            <span class="step-name">提取参数</span>
-                        </div>
-                        <span class="step-toggle">▼</span>
-                    </div>
-                    <div class="step-content" id="content-step-2-2">
-                        <div class="step-detail">
-                            <span class="step-detail-label">提取的参数:</span>
-                            <div class="step-detail-content json-content">{
-  &quot;prompt&quot;: &quot;输入关键词\&quot;花艺造型蛋糕\&quot;,获取该词在小红书的热度值、近90天趋势曲线、声量概览(笔记数、总热度、热门天数、热门内容领域、高频搭配词),以此评估其作为选题点的潜力与创作方向。&quot;
-}</div>
-                        </div>
-                        <button class="prompt-toggle-btn" onclick="togglePrompt('prompt-step-2-2')">显示 Prompt</button>
-                        <div class="prompt-content" id="prompt-step-2-2">你是一个API调用专家。你的任务是根据已经选择的工具及使用方法信息生成正确的调用参数。
-
-选择的工具调用ID:
-new_red_hot_search_words_search
-选择的工具使用方法:
-输入关键词&quot;花艺造型蛋糕&quot;,获取该词在小红书的热度值、近90天趋势曲线、声量概览(笔记数、总热度、热门天数、热门内容领域、高频搭配词),以此评估其作为选题点的潜力与创作方向。
-
-所有的工具参数定义:
-{
-    &quot;name&quot;: &quot;新红热搜词搜索&quot;,
-    &quot;description&quot;: &quot;提供小红书热搜词深度检索与趋势分析服务,输入关键词即可获取全维度数据表现:核心包含热度值(实时动态更新)、声量概览(笔记数、总热度、热门天数、热门内容领域、高频搭配词)、近 90 天热度值趋势曲线(支持自定义时间区间)、相关搜索结果。可直观呈现关键词种草趋势、流量峰值时段、高转化内容特征,帮助用户优化笔记标题关键词布局、预判话题生命周期。&quot;,
-    &quot;inputSchema&quot;: {
-        &quot;type&quot;: &quot;object&quot;,
-        &quot;properties&quot;: {
-            &quot;prompt&quot;: {
-                &quot;type&quot;: &quot;string&quot;,
-                &quot;description&quot;: &quot;用户使用方法,包括输入的关键词&quot;
-            }
-        },
-        &quot;required&quot;: [
-            &quot;prompt&quot;
-        ]
-    }
-}
-
-请分析工具的参数要求,根据查询内容提取或推断出合适的参数值。
-
-输出格式:请以 JSON 格式输出参数字典,例如:
-{
-    &quot;param1&quot;: &quot;value1&quot;,
-    &quot;param2&quot;: &quot;value2&quot;
-}
-
-注意事项:
-1. 只输出参数的JSON字典,不要包含任何解释
-2. 参数名必须与工具定义中的参数名完全一致
-3. 参数值要从查询中提取或合理推断
-4. 不要添加工具定义中没有的参数
-5. 如果某个参数无法从查询中获取,使用合理的默认值或省略该参数
-
-只输出JSON,不要包含markdown标记。</div>
-                    </div>
-                </div>
-                <div class="arrow"></div>
-                <div class="workflow-step" id="step-2-3">
-                    <div class="step-header" onclick="toggleStep('step-2-3')">
-                        <div class="step-title">
-                            <span class="step-number">4</span>
-                            <span class="step-name">执行工具</span>
-                        </div>
-                        <span class="step-toggle">▼</span>
-                    </div>
-                    <div class="step-content" id="content-step-2-3">
-                        <div class="step-detail">
-                            <span class="step-detail-label">执行结果:</span>
-                            <div class="step-detail-content json-content">## &quot;花艺造型蛋糕&quot;关键词数据分析结果
-
-**关键词**: 花艺造型蛋糕
-
-**平台**: 小红书
-
-**主要发现**:
-1. **热度值**: 该关键词未达到小红书热搜榜单的门槛,无法获取具体的热度值数据
-2. **趋势曲线**: 由于未上榜,近90天的趋势曲线数据不可用
-3. **声量概览**:
-   - 笔记数: 数据不可用(未达到展示门槛)
-   - 总热度: 数据不可用(未达到展示门槛)
-   - 热门天数: 数据不可用(未达到展示门槛)
-   - 热门内容领域: 数据不可用(未达到展示门槛)
-   - 高频搭配词: 数据不可用(未达到展示门槛)
-
-**选题潜力评估**:
-- **热度水平**: 较低。该关键词在小红书平台上的讨论度和关注度不足以进入热搜榜单
-- **创作方向建议**:
-  1. 考虑使用更热门的相关关键词,如&quot;蛋糕&quot;、&quot;花艺&quot;、&quot;甜品&quot;等单独词汇
-  2. 或者尝试组合其他热门元素,如&quot;ins风花艺蛋糕&quot;、&quot;网红花艺蛋糕&quot;等
-  3. 可以关注页面推荐的热门热搜词,如&quot;美食VLOG&quot;、&quot;美食制作&quot;等,将花艺蛋糕内容融入这些热门话题中
-
-**建议**:
-由于&quot;花艺造型蛋糕&quot;关键词热度较低,建议调整选题策略:
-1. 扩大关键词范围,使用更通用的词汇
-2. 关注相关但更热门的话题标签
-3. 结合当前热门趋势(如页面显示的&quot;美食VLOG&quot;、&quot;美食制作&quot;等)来包装花艺蛋糕内容
-
-这个结果表明,虽然花艺造型蛋糕可能是一个有创意的内容方向,但在小红书平台上目前的热度不足以支撑作为独立的热门选题点.</div>
-                        </div>
-                    </div>
-                </div>
-            </div>
-            <div class="output-section">
-                <h3>最终输出</h3>
-                <div class="step-detail-content json-content">## &quot;花艺造型蛋糕&quot;关键词数据分析结果
-
-**关键词**: 花艺造型蛋糕
-
-**平台**: 小红书
-
-**主要发现**:
-1. **热度值**: 该关键词未达到小红书热搜榜单的门槛,无法获取具体的热度值数据
-2. **趋势曲线**: 由于未上榜,近90天的趋势曲线数据不可用
-3. **声量概览**:
-   - 笔记数: 数据不可用(未达到展示门槛)
-   - 总热度: 数据不可用(未达到展示门槛)
-   - 热门天数: 数据不可用(未达到展示门槛)
-   - 热门内容领域: 数据不可用(未达到展示门槛)
-   - 高频搭配词: 数据不可用(未达到展示门槛)
-
-**选题潜力评估**:
-- **热度水平**: 较低。该关键词在小红书平台上的讨论度和关注度不足以进入热搜榜单
-- **创作方向建议**:
-  1. 考虑使用更热门的相关关键词,如&quot;蛋糕&quot;、&quot;花艺&quot;、&quot;甜品&quot;等单独词汇
-  2. 或者尝试组合其他热门元素,如&quot;ins风花艺蛋糕&quot;、&quot;网红花艺蛋糕&quot;等
-  3. 可以关注页面推荐的热门热搜词,如&quot;美食VLOG&quot;、&quot;美食制作&quot;等,将花艺蛋糕内容融入这些热门话题中
-
-**建议**:
-由于&quot;花艺造型蛋糕&quot;关键词热度较低,建议调整选题策略:
-1. 扩大关键词范围,使用更通用的词汇
-2. 关注相关但更热门的话题标签
-3. 结合当前热门趋势(如页面显示的&quot;美食VLOG&quot;、&quot;美食制作&quot;等)来包装花艺蛋糕内容
-
-这个结果表明,虽然花艺造型蛋糕可能是一个有创意的内容方向,但在小红书平台上目前的热度不足以支撑作为独立的热门选题点.</div>
-            </div>
-        </div>
-    </div>
-    
-    <script>
-        function switchTab(index) {
-            // 隐藏所有tab内容
-            const contents = document.querySelectorAll('.tab-content');
-            contents.forEach(content => content.classList.remove('active'));
-            
-            // 移除所有tab的active状态
-            const tabs = document.querySelectorAll('.tab');
-            tabs.forEach(tab => tab.classList.remove('active'));
-            
-            // 显示选中的tab内容
-            document.getElementById('tab-' + index).classList.add('active');
-            tabs[index].classList.add('active');
-        }
-        
-        function toggleStep(stepId) {
-            const step = document.getElementById(stepId);
-            const content = document.getElementById('content-' + stepId);
-            const toggle = step.querySelector('.step-toggle');
-            
-            if (content.classList.contains('expanded')) {
-                content.classList.remove('expanded');
-                toggle.classList.remove('expanded');
-                step.classList.remove('active');
-            } else {
-                content.classList.add('expanded');
-                toggle.classList.add('expanded');
-                step.classList.add('active');
-            }
-        }
-        
-        function togglePrompt(promptId) {
-            const promptContent = document.getElementById(promptId);
-            const btn = promptContent.previousElementSibling;
-            
-            if (promptContent.classList.contains('show')) {
-                promptContent.classList.remove('show');
-                btn.textContent = '显示 Prompt';
-            } else {
-                promptContent.classList.add('show');
-                btn.textContent = '隐藏 Prompt';
-            }
-        }
-        
-        // 页面加载时高亮第一个步骤
-        window.addEventListener('load', function() {
-            const firstSteps = document.querySelectorAll('.workflow-step');
-            firstSteps.forEach((step, index) => {
-                if (index === 0 || index % (firstSteps.length / document.querySelectorAll('.tab-content').length) === 0) {
-                    step.classList.add('active');
-                    const content = step.querySelector('.step-content');
-                    const toggle = step.querySelector('.step-toggle');
-                    if (content) {
-                        content.classList.add('expanded');
-                        toggle.classList.add('expanded');
-                    }
-                }
-            });
-        });
-    </script>
-</body>
-</html>

+ 1008 - 0
knowledge_v2/visualization/workflow_visualization_20251208_165958.html

@@ -0,0 +1,1008 @@
+<!DOCTYPE html>
+<html lang="zh-CN">
+<head>
+    <meta charset="UTF-8">
+    <meta name="viewport" content="width=device-width, initial-scale=1.0">
+    <title>知识获取工作流可视化</title>
+    <style>
+        * {
+            margin: 0;
+            padding: 0;
+            box-sizing: border-box;
+        }
+        
+        body {
+            font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', 'PingFang SC', 'Hiragino Sans GB', 'Microsoft YaHei', sans-serif;
+            background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
+            color: #333;
+            line-height: 1.6;
+            min-height: 100vh;
+        }
+        
+        .container {
+            max-width: 1400px;
+            margin: 0 auto;
+            padding: 30px 20px;
+        }
+        
+        h1 {
+            text-align: center;
+            color: white;
+            margin-bottom: 40px;
+            font-size: 32px;
+            font-weight: 600;
+            text-shadow: 0 2px 10px rgba(0,0,0,0.2);
+            letter-spacing: 1px;
+        }
+        
+        .tabs {
+            display: flex;
+            background: white;
+            border-radius: 12px 12px 0 0;
+            box-shadow: 0 4px 20px rgba(0,0,0,0.15);
+            overflow-x: auto;
+            padding: 5px;
+        }
+        
+        .tab {
+            padding: 16px 28px;
+            cursor: pointer;
+            border: none;
+            background: transparent;
+            color: #666;
+            font-size: 14px;
+            transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
+            white-space: nowrap;
+            border-radius: 8px;
+            margin: 0 4px;
+            position: relative;
+            font-weight: 500;
+        }
+        
+        .tab:hover {
+            background: #f0f0f0;
+            color: #333;
+        }
+        
+        .tab.active {
+            background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
+            color: white;
+            box-shadow: 0 4px 12px rgba(102, 126, 234, 0.4);
+        }
+        
+        .tab-content {
+            display: none;
+            background: white;
+            padding: 40px;
+            border-radius: 0 0 12px 12px;
+            box-shadow: 0 4px 20px rgba(0,0,0,0.15);
+            margin-bottom: 20px;
+            animation: fadeIn 0.3s ease-in;
+        }
+        
+        @keyframes fadeIn {
+            from { opacity: 0; transform: translateY(10px); }
+            to { opacity: 1; transform: translateY(0); }
+        }
+        
+        .tab-content.active {
+            display: block;
+        }
+        
+        .input-section {
+            background: linear-gradient(135deg, #f5f7fa 0%, #c3cfe2 100%);
+            padding: 28px;
+            border-radius: 12px;
+            margin-bottom: 35px;
+            box-shadow: 0 4px 15px rgba(0,0,0,0.1);
+            border: 1px solid rgba(255,255,255,0.5);
+        }
+        
+        .input-section h3 {
+            color: #2c3e50;
+            margin-bottom: 20px;
+            font-size: 20px;
+            font-weight: 600;
+            display: flex;
+            align-items: center;
+            gap: 10px;
+        }
+        
+        .input-section h3::before {
+            content: '📋';
+            font-size: 24px;
+        }
+        
+        .input-item {
+            margin-bottom: 16px;
+            padding: 12px;
+            background: rgba(255,255,255,0.7);
+            border-radius: 8px;
+            transition: all 0.3s;
+        }
+        
+        .input-item:hover {
+            background: rgba(255,255,255,0.9);
+            transform: translateX(5px);
+        }
+        
+        .input-item strong {
+            color: #495057;
+            display: inline-block;
+            width: 110px;
+            font-weight: 600;
+        }
+        
+        .input-item .placeholder {
+            color: #999;
+            font-style: italic;
+        }
+        
+        .workflow {
+            position: relative;
+        }
+        
+        .workflow-step {
+            background: white;
+            border: 2px solid #e0e0e0;
+            border-radius: 12px;
+            margin-bottom: 25px;
+            transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
+            overflow: hidden;
+            box-shadow: 0 2px 8px rgba(0,0,0,0.08);
+        }
+        
+        .workflow-step.active {
+            border-color: #667eea;
+            box-shadow: 0 8px 24px rgba(102, 126, 234, 0.25);
+            transform: translateY(-2px);
+        }
+        
+        .step-header {
+            padding: 20px 24px;
+            background: linear-gradient(135deg, #f8f9fa 0%, #e9ecef 100%);
+            cursor: pointer;
+            display: flex;
+            justify-content: space-between;
+            align-items: center;
+            user-select: none;
+            transition: all 0.3s;
+        }
+        
+        .step-header:hover {
+            background: linear-gradient(135deg, #e9ecef 0%, #dee2e6 100%);
+        }
+        
+        .workflow-step.active .step-header {
+            background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
+            color: white;
+        }
+        
+        .workflow-step.active .step-name {
+            color: white;
+        }
+        
+        .workflow-step.active .step-toggle {
+            color: white;
+        }
+        
+        .step-title {
+            display: flex;
+            align-items: center;
+            gap: 15px;
+        }
+        
+        .step-number {
+            display: inline-flex;
+            align-items: center;
+            justify-content: center;
+            width: 36px;
+            height: 36px;
+            background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
+            color: white;
+            border-radius: 50%;
+            font-size: 16px;
+            font-weight: bold;
+            box-shadow: 0 4px 12px rgba(102, 126, 234, 0.3);
+        }
+        
+        .workflow-step.active .step-number {
+            background: white;
+            color: #667eea;
+            box-shadow: 0 4px 12px rgba(255,255,255,0.3);
+        }
+        
+        .step-name {
+            font-size: 18px;
+            font-weight: 600;
+            color: #2c3e50;
+        }
+        
+        .step-toggle {
+            color: #6c757d;
+            font-size: 20px;
+            transition: transform 0.3s cubic-bezier(0.4, 0, 0.2, 1);
+        }
+        
+        .step-toggle.expanded {
+            transform: rotate(180deg);
+        }
+        
+        .step-content {
+            padding: 0 20px;
+            max-height: 0;
+            overflow: hidden;
+            transition: max-height 0.3s ease-out, padding 0.3s;
+        }
+        
+        .step-content.expanded {
+            max-height: 5000px;
+            padding: 20px;
+        }
+        
+        .step-detail {
+            margin-bottom: 20px;
+        }
+        
+        .step-detail-label {
+            font-weight: 600;
+            color: #495057;
+            margin-bottom: 10px;
+            display: block;
+            font-size: 14px;
+            text-transform: uppercase;
+            letter-spacing: 0.5px;
+        }
+        
+        .step-detail-content {
+            background: #f8f9fa;
+            padding: 16px;
+            border-radius: 8px;
+            border-left: 4px solid #667eea;
+            font-size: 14px;
+            line-height: 1.8;
+            white-space: pre-wrap;
+            word-wrap: break-word;
+            max-height: 400px;
+            overflow-y: auto;
+            box-shadow: 0 2px 8px rgba(0,0,0,0.05);
+        }
+        
+        .json-content {
+            font-family: 'SF Mono', 'Monaco', 'Courier New', monospace;
+            background: #1e1e1e;
+            color: #d4d4d4;
+            padding: 20px;
+            border-radius: 8px;
+            overflow-x: auto;
+            border-left: 4px solid #667eea;
+            box-shadow: 0 4px 12px rgba(0,0,0,0.15);
+        }
+        
+        .prompt-toggle-btn {
+            background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
+            color: white;
+            border: none;
+            padding: 10px 20px;
+            border-radius: 6px;
+            cursor: pointer;
+            font-size: 13px;
+            font-weight: 500;
+            margin-top: 15px;
+            transition: all 0.3s;
+            box-shadow: 0 2px 8px rgba(102, 126, 234, 0.3);
+        }
+        
+        .prompt-toggle-btn:hover {
+            transform: translateY(-2px);
+            box-shadow: 0 4px 12px rgba(102, 126, 234, 0.4);
+        }
+        
+        .prompt-content {
+            display: none;
+            margin-top: 15px;
+            padding: 16px;
+            background: #fff3cd;
+            border-radius: 8px;
+            border-left: 4px solid #ffc107;
+            font-size: 13px;
+            line-height: 1.8;
+            white-space: pre-wrap;
+            word-wrap: break-word;
+            max-height: 500px;
+            overflow-y: auto;
+        }
+        
+        .prompt-content.show {
+            display: block;
+            animation: slideDown 0.3s ease-out;
+        }
+        
+        @keyframes slideDown {
+            from {
+                opacity: 0;
+                max-height: 0;
+            }
+            to {
+                opacity: 1;
+                max-height: 500px;
+            }
+        }
+        
+        .output-section {
+            background: linear-gradient(135deg, #e0f2fe 0%, #bae6fd 100%);
+            padding: 28px;
+            border-radius: 12px;
+            margin-top: 35px;
+            border-left: 4px solid #0ea5e9;
+            box-shadow: 0 4px 15px rgba(14, 165, 233, 0.2);
+        }
+        
+        .output-section h3 {
+            color: #0369a1;
+            margin-bottom: 20px;
+            font-size: 20px;
+            font-weight: 600;
+            display: flex;
+            align-items: center;
+            gap: 10px;
+        }
+        
+        .output-section h3::before {
+            content: '✨';
+            font-size: 24px;
+        }
+        
+        .arrow {
+            text-align: center;
+            color: #667eea;
+            font-size: 32px;
+            margin: -15px 0;
+            position: relative;
+            z-index: 1;
+            filter: drop-shadow(0 2px 4px rgba(102, 126, 234, 0.3));
+        }
+        
+        .arrow::before {
+            content: '↓';
+        }
+        
+        @media (max-width: 768px) {
+            .container {
+                padding: 10px;
+            }
+            
+            .tab {
+                padding: 12px 15px;
+                font-size: 13px;
+            }
+            
+            .tab-content {
+                padding: 20px;
+            }
+        }
+    </style>
+</head>
+<body>
+    <div class="container">
+        <h1>知识获取工作流可视化</h1>
+        <div class="tabs" id="tabs">
+            <button class="tab active" onclick="switchTab(0)">557e5ce27c1c</button>
+            <button class="tab " onclick="switchTab(1)">d0608df43f77</button>
+        </div>
+        <div class="tab-content active" id="tab-0">
+            <div class="input-section">
+                <h3>输入信息</h3>
+                <div class="input-item" style="white-space: pre-wrap; line-height: 1.8;">1.已知信息账号人设:
+-账号的品类:宠物表情包账号
+-人设里能和该贴匹配的点:
+鼓励式猫咪表情包-猫咪考试祝福
+推广饮品品牌-推广餐饮品牌
+互动粉丝-互动特点人群
+拟人化猫咪形象-拟人化猫咪形象
+表情包式图文-表情包式视觉风格
+情景化植入-强关联场景植入
+-账号聚出来的pattern模式:
+模式1: 拟人化穿搭+趣味分享意图, 萌宠主题内容+拟人化主体,视觉构图版式....
+模式2:校园学生人设+商业推广意图,商业产品推厂+场景化产品植入
+模式3:日常生活演绎+萌宠主题内容+图文叙事结构
+模式4:视觉隐喻+趣味分享意图+视觉构图版式
+
+2.待寻找点:
+-社交媒体解构贴中未与账号人设匹配的信息
+饺子品牌
+
+3.帖子创作日期:2025-11-07
+</div>
+            </div>
+            <div class="workflow">
+                <div class="workflow-step" id="step-0-0">
+                    <div class="step-header" onclick="toggleStep('step-0-0')">
+                        <div class="step-title">
+                            <span class="step-number">1</span>
+                            <span class="step-name">选择工具</span>
+                        </div>
+                        <span class="step-toggle">▼</span>
+                    </div>
+                    <div class="step-content" id="content-step-0-0">
+                        <div class="step-detail">
+                            <span class="step-detail-label">工具名称:</span>
+                            <div class="step-detail-content">新红热搜词榜单</div>
+                        </div>
+                        <div class="step-detail">
+                            <span class="step-detail-label">工具调用ID:</span>
+                            <div class="step-detail-content">new_red_hot_search_words_ranking</div>
+                        </div>
+                        <button class="prompt-toggle-btn" onclick="togglePrompt('prompt-step-0-0')">显示 Prompt</button>
+                        <div class="prompt-content" id="prompt-step-0-0"># 角色定位
+你是一个「工具匹配专家」,专门负责将内容创作需求与MCP工具库中的具体工具进行精准匹配。
+你的核心能力是:理解待寻找信息的特征,判断现有工具能力边界,并选择最优工具。
+
+# 核心任务
+根据输入的&quot;待寻找点&quot;,在MCP工具库中直接匹配出能够获取该信息的最优工具。
+
+# 输入理解
+
+你会收到两类信息:
+
+## 1. 已知信息-账号人设(上下文环境)
+包含:
+- 账号品类:账号所属的内容领域
+- 人设匹配点:已知与该帖子相关的账号特征
+- Pattern模式:账号总结出的内容创作模式
+
+**作用**:提供待寻找点的应用场景和创作背景,帮助你理解信息类型和匹配工具
+
+## 2. 待寻找点(核心匹配目标)
+- 帖子中未与账号人设直接匹配的信息点
+- 这些点是创作者在创作过程中引入的新元素
+
+**作用**:你需要针对每个待寻找点,判断其信息特征,并匹配最优工具
+
+# MCP工具库清单
+
+当前工具库包含以下工具:
+
+工具名:新红话题榜单
+工具调用ID:new_red_TopicRanking
+工具介绍:提供小红书平台热门话题全景榜单数据,覆盖排名、话题名称及核心简介、参与人数增量、浏览量增量、笔记增量、互动增量(点赞 / 收藏 / 评论综合统计)等核心维度。支持精准筛选与高效应用。话题类型涵盖美妆,美容个护,鞋包潮玩,穿搭打扮,美食,母婴育儿,旅游出行,家居家装,教育,生活,运动健身,兴趣爱好,影视综,婚嫁,摄影摄像,萌宠,情感星座,科技互联网,资讯,健康养生,科学科普,职场,交通工具,其他 24 个垂直领域,统计时间可选择日榜(近 7 天)、周榜(近 4 周)、月榜(近 5 个月),满足不同周期的热点追踪需求。榜单数据实时更新,同步呈现官方流量扶持话题标识,助力品牌、达人快速锁定高曝光赛道;便于拆解爆款逻辑、制定内容选题策略,提升运营效率。
+
+工具名:新红热搜词榜单
+工具调用ID:new_red_hot_search_words_ranking
+工具介绍:提供小红书平台热搜词权威榜单数据,核心维度包括实时排名、热搜词、主要覆盖内容领域、相关笔记总量、爆文数(高互动笔记占比)、热度值(综合搜索量与互动率计算)。支持按统计时间(日榜 / 周榜 / 月榜)及 美妆,美容个护,鞋包潮玩,穿搭打扮,美食,母婴育儿,旅游出行,家居家装,教育,生活,运动健身,兴趣爱好,影视综,婚嫁,摄影摄像,萌宠,情感星座,科技互联网,资讯,健康养生,科学科普,职场,交通工具,其他 24 个垂直内容领域筛选。榜单每日更新,助力用户第一时间捕捉流量风口。可直接应用于选题规划、竞品投放策略分析。
+ 
+
+**一个待寻找点只匹配一个最优工具**
+
+# 输出格式
+
+针对每个待寻找点,按以下格式输出:
+【待寻找点X】: [点的名称]
+工具匹配结果:
+匹配工具: [工具名称] 或 [无工具匹配]
+匹配理由: [2-3句话说明为什么选择该工具,或为什么无工具匹配]
+应用场景: [结合账号人设,说明该工具如何帮助创作者找到这个待寻找点]
+
+# 输出格式
+json格式,字段定义如下:
+&#39;&#39;&#39;json
+{
+    &quot;工具名&quot;: &quot;工具名称&quot;,
+    &quot;工具调用ID&quot;: &quot;调用ID&quot;,
+    &quot;匹配理由&quot;: &quot;&quot;,
+    &quot;应用场景&quot;: &quot;&quot;
+}
+&#39;&#39;&#39;
+
+## 无匹配时
+&#39;&#39;&#39;json
+{
+
+}
+&#39;&#39;&#39;
+
+---
+
+# 约束条件
+
+**必须遵守**:
+- 每个待寻找点只匹配一个最优工具
+- 必须基于工具的实际能力边界进行匹配,不能过度推测
+- 无法匹配时,必须诚实输出&quot;无工具匹配&quot;
+- 匹配理由必须清晰说明工具能力与待寻找点需求的对应关系
+- 必须结合账号人设提供应用场景说明
+
+**禁止**:
+- 强行匹配不适用的工具
+- 为一个待寻找点匹配多个工具
+- 输出工具库中不存在的工具
+- 提供模糊或无法验证的匹配理由
+
+# 执行流程
+
+1. **接收输入**: 仔细阅读&quot;已知账号人设&quot;和&quot;待寻找点&quot;
+2. **类型分析**: 判断每个待寻找点属于A/B/C/D/E哪种信息类型
+3. **工具匹配**: 根据信息类型和工具能力,选择最优工具或判断无工具匹配
+4. **输出结果**: 按格式输出分析和匹配结果,包含匹配理由和应用场景
+
+
+# 输入信息
+{1.已知信息账号人设:
+-账号的品类:宠物表情包账号
+-人设里能和该贴匹配的点:
+鼓励式猫咪表情包-猫咪考试祝福
+推广饮品品牌-推广餐饮品牌
+互动粉丝-互动特点人群
+拟人化猫咪形象-拟人化猫咪形象
+表情包式图文-表情包式视觉风格
+情景化植入-强关联场景植入
+-账号聚出来的pattern模式:
+模式1: 拟人化穿搭+趣味分享意图, 萌宠主题内容+拟人化主体,视觉构图版式....
+模式2:校园学生人设+商业推广意图,商业产品推厂+场景化产品植入
+模式3:日常生活演绎+萌宠主题内容+图文叙事结构
+模式4:视觉隐喻+趣味分享意图+视觉构图版式
+
+2.待寻找点:
+-社交媒体解构贴中未与账号人设匹配的信息
+饺子品牌
+
+3.帖子创作日期:2025-11-07
+}</div>
+                    </div>
+                </div>
+                <div class="arrow"></div>
+                <div class="workflow-step" id="step-0-1">
+                    <div class="step-header" onclick="toggleStep('step-0-1')">
+                        <div class="step-title">
+                            <span class="step-number">2</span>
+                            <span class="step-name">提取参数</span>
+                        </div>
+                        <span class="step-toggle">▼</span>
+                    </div>
+                    <div class="step-content" id="content-step-0-1">
+                        <div class="step-detail">
+                            <span class="step-detail-label">提取的参数:</span>
+                            <div class="step-detail-content json-content">{
+  &quot;typeV1&quot;: &quot;美食&quot;,
+  &quot;rankDate&quot;: &quot;2025-11-07&quot;
+}</div>
+                        </div>
+                        <button class="prompt-toggle-btn" onclick="togglePrompt('prompt-step-0-1')">显示 Prompt</button>
+                        <div class="prompt-content" id="prompt-step-0-1">你是一个API调用专家。你的任务是根据已经选择的工具及输入信息生成正确的调用参数。
+
+选择的工具调用ID:
+new_red_hot_search_words_ranking
+
+输入的信息:
+1.已知信息账号人设:
+-账号的品类:宠物表情包账号
+-人设里能和该贴匹配的点:
+鼓励式猫咪表情包-猫咪考试祝福
+推广饮品品牌-推广餐饮品牌
+互动粉丝-互动特点人群
+拟人化猫咪形象-拟人化猫咪形象
+表情包式图文-表情包式视觉风格
+情景化植入-强关联场景植入
+-账号聚出来的pattern模式:
+模式1: 拟人化穿搭+趣味分享意图, 萌宠主题内容+拟人化主体,视觉构图版式....
+模式2:校园学生人设+商业推广意图,商业产品推厂+场景化产品植入
+模式3:日常生活演绎+萌宠主题内容+图文叙事结构
+模式4:视觉隐喻+趣味分享意图+视觉构图版式
+
+2.待寻找点:
+-社交媒体解构贴中未与账号人设匹配的信息
+饺子品牌
+
+3.帖子创作日期:2025-11-07
+
+
+所有的工具参数定义:
+{
+    &quot;name&quot;: &quot;new_red_hot_search_words_ranking&quot;,
+    &quot;title&quot;: &quot;新红热搜词榜单&quot;,
+    &quot;description&quot;: &quot;提供小红书平台热搜词权威榜单数据,核心维度包括实时排名、热搜词、主要覆盖内容领域、相关笔记总量、爆文数(高互动笔记占比)、热度值(综合搜索量与互动率计算)。支持按统计时间(日榜 / 周榜 / 月榜)及 美妆,美容个护,鞋包潮玩,穿搭打扮,美食,母婴育儿,旅游出行,家居家装,教育,生活,运动健身,兴趣爱好,影视综,婚嫁,摄影摄像,萌宠,情感星座,科技互联网,资讯,健康养生,科学科普,职场,交通工具,其他 24 个垂直内容领域筛选。榜单每日更新,助力用户第一时间捕捉流量风口。可直接应用于选题规划、竞品投放策略分析。&quot;,
+    &quot;inputSchema&quot;: {
+        &quot;type&quot;: &quot;object&quot;,
+        &quot;properties&quot;: {
+            &quot;typeV1&quot;: {
+                &quot;type&quot;: &quot;string&quot;,
+                &quot;description&quot;: &quot;可选参数,用于指定热搜词类型,如全部、美食、萌宠等,默认为&#39;全部&#39;&quot;,
+                &quot;default&quot;: &quot;全部&quot;
+
+            },
+            &quot;rankDate&quot;: {
+                &quot;type&quot;: &quot;string&quot;,
+                &quot;description&quot;: &quot;排名日期,默认为&#39;2025-10-20&#39;,格式为YYYY-MM-DD&quot;
+            },
+            &quot;sort&quot;: {
+                &quot;type&quot;: &quot;string&quot;,
+                &quot;description&quot;: &quot;排序方式,默认为&#39;hot_score&#39;,按热度分数排序&quot;
+            }
+        },
+        &quot;required&quot;: [
+            &quot;typeV1&quot;,
+            &quot;rankDate&quot;
+        ]
+    }
+}
+
+请分析工具的参数要求,根据查询内容提取或推断出合适的参数值。
+
+输出格式:请以 JSON 格式输出参数字典,例如:
+{
+    &quot;param1&quot;: &quot;value1&quot;,
+    &quot;param2&quot;: &quot;value2&quot;
+}
+
+注意事项:
+1. 只输出参数的JSON字典,不要包含任何解释
+2. 参数名必须与工具定义中的参数名完全一致
+3. 参数值要从查询中提取或合理推断
+4. 不要添加工具定义中没有的参数
+5. 如果某个参数无法从查询中获取,使用合理的默认值或省略该参数
+
+只输出JSON,不要包含markdown标记。</div>
+                    </div>
+                </div>
+                <div class="arrow"></div>
+                <div class="workflow-step" id="step-0-2">
+                    <div class="step-header" onclick="toggleStep('step-0-2')">
+                        <div class="step-title">
+                            <span class="step-number">3</span>
+                            <span class="step-name">执行工具</span>
+                        </div>
+                        <span class="step-toggle">▼</span>
+                    </div>
+                    <div class="step-content" id="content-step-0-2">
+                        <div class="step-detail">
+                            <span class="step-detail-label">执行结果:</span>
+                            <div class="step-detail-content json-content">未找到 2025-11-07 日期 美食 分类的热搜词数据</div>
+                        </div>
+                    </div>
+                </div>
+            </div>
+            <div class="output-section">
+                <h3>最终输出</h3>
+                <div class="step-detail-content json-content">未找到 2025-11-07 日期 美食 分类的热搜词数据</div>
+            </div>
+        </div>
+        <div class="tab-content " id="tab-1">
+            <div class="input-section">
+                <h3>输入信息</h3>
+                <div class="input-item" style="white-space: pre-wrap; line-height: 1.8;">1.已知信息账号人设:
+-账号的品类:宠物表情包账号
+-人设里能和该贴匹配的点:
+鼓励式猫咪表情包-猫咪考试祝福
+推广饮品品牌-推广餐饮品牌
+互动粉丝-互动特点人群
+拟人化猫咪形象-拟人化猫咪形象
+表情包式图文-表情包式视觉风格
+情景化植入-强关联场景植入
+-账号聚出来的pattern模式:
+模式1: 拟人化穿搭+趣味分享意图, 萌宠主题内容+拟人化主体,视觉构图版式....
+模式2:校园学生人设+商业推广意图,商业产品推厂+场景化产品植入
+模式3:日常生活演绎+萌宠主题内容+图文叙事结构
+模式4:视觉隐喻+趣味分享意图+视觉构图版式
+
+2.待寻找点:
+-社交媒体解构贴中未与账号人设匹配的信息
+考试祝福
+
+3.帖子创作日期:2025-11-07
+</div>
+            </div>
+            <div class="workflow">
+                <div class="workflow-step" id="step-1-0">
+                    <div class="step-header" onclick="toggleStep('step-1-0')">
+                        <div class="step-title">
+                            <span class="step-number">1</span>
+                            <span class="step-name">选择工具</span>
+                        </div>
+                        <span class="step-toggle">▼</span>
+                    </div>
+                    <div class="step-content" id="content-step-1-0">
+                        <div class="step-detail">
+                            <span class="step-detail-label">工具名称:</span>
+                            <div class="step-detail-content">新红话题榜单</div>
+                        </div>
+                        <div class="step-detail">
+                            <span class="step-detail-label">工具调用ID:</span>
+                            <div class="step-detail-content">new_red_TopicRanking</div>
+                        </div>
+                        <button class="prompt-toggle-btn" onclick="togglePrompt('prompt-step-1-0')">显示 Prompt</button>
+                        <div class="prompt-content" id="prompt-step-1-0"># 角色定位
+你是一个「工具匹配专家」,专门负责将内容创作需求与MCP工具库中的具体工具进行精准匹配。
+你的核心能力是:理解待寻找信息的特征,判断现有工具能力边界,并选择最优工具。
+
+# 核心任务
+根据输入的&quot;待寻找点&quot;,在MCP工具库中直接匹配出能够获取该信息的最优工具。
+
+# 输入理解
+
+你会收到两类信息:
+
+## 1. 已知信息-账号人设(上下文环境)
+包含:
+- 账号品类:账号所属的内容领域
+- 人设匹配点:已知与该帖子相关的账号特征
+- Pattern模式:账号总结出的内容创作模式
+
+**作用**:提供待寻找点的应用场景和创作背景,帮助你理解信息类型和匹配工具
+
+## 2. 待寻找点(核心匹配目标)
+- 帖子中未与账号人设直接匹配的信息点
+- 这些点是创作者在创作过程中引入的新元素
+
+**作用**:你需要针对每个待寻找点,判断其信息特征,并匹配最优工具
+
+# MCP工具库清单
+
+当前工具库包含以下工具:
+
+工具名:新红话题榜单
+工具调用ID:new_red_TopicRanking
+工具介绍:提供小红书平台热门话题全景榜单数据,覆盖排名、话题名称及核心简介、参与人数增量、浏览量增量、笔记增量、互动增量(点赞 / 收藏 / 评论综合统计)等核心维度。支持精准筛选与高效应用。话题类型涵盖美妆,美容个护,鞋包潮玩,穿搭打扮,美食,母婴育儿,旅游出行,家居家装,教育,生活,运动健身,兴趣爱好,影视综,婚嫁,摄影摄像,萌宠,情感星座,科技互联网,资讯,健康养生,科学科普,职场,交通工具,其他 24 个垂直领域,统计时间可选择日榜(近 7 天)、周榜(近 4 周)、月榜(近 5 个月),满足不同周期的热点追踪需求。榜单数据实时更新,同步呈现官方流量扶持话题标识,助力品牌、达人快速锁定高曝光赛道;便于拆解爆款逻辑、制定内容选题策略,提升运营效率。
+
+工具名:新红热搜词榜单
+工具调用ID:new_red_hot_search_words_ranking
+工具介绍:提供小红书平台热搜词权威榜单数据,核心维度包括实时排名、热搜词、主要覆盖内容领域、相关笔记总量、爆文数(高互动笔记占比)、热度值(综合搜索量与互动率计算)。支持按统计时间(日榜 / 周榜 / 月榜)及 美妆,美容个护,鞋包潮玩,穿搭打扮,美食,母婴育儿,旅游出行,家居家装,教育,生活,运动健身,兴趣爱好,影视综,婚嫁,摄影摄像,萌宠,情感星座,科技互联网,资讯,健康养生,科学科普,职场,交通工具,其他 24 个垂直内容领域筛选。榜单每日更新,助力用户第一时间捕捉流量风口。可直接应用于选题规划、竞品投放策略分析。
+ 
+
+**一个待寻找点只匹配一个最优工具**
+
+# 输出格式
+
+针对每个待寻找点,按以下格式输出:
+【待寻找点X】: [点的名称]
+工具匹配结果:
+匹配工具: [工具名称] 或 [无工具匹配]
+匹配理由: [2-3句话说明为什么选择该工具,或为什么无工具匹配]
+应用场景: [结合账号人设,说明该工具如何帮助创作者找到这个待寻找点]
+
+# 输出格式
+json格式,字段定义如下:
+&#39;&#39;&#39;json
+{
+    &quot;工具名&quot;: &quot;工具名称&quot;,
+    &quot;工具调用ID&quot;: &quot;调用ID&quot;,
+    &quot;匹配理由&quot;: &quot;&quot;,
+    &quot;应用场景&quot;: &quot;&quot;
+}
+&#39;&#39;&#39;
+
+## 无匹配时
+&#39;&#39;&#39;json
+{
+
+}
+&#39;&#39;&#39;
+
+---
+
+# 约束条件
+
+**必须遵守**:
+- 每个待寻找点只匹配一个最优工具
+- 必须基于工具的实际能力边界进行匹配,不能过度推测
+- 无法匹配时,必须诚实输出&quot;无工具匹配&quot;
+- 匹配理由必须清晰说明工具能力与待寻找点需求的对应关系
+- 必须结合账号人设提供应用场景说明
+
+**禁止**:
+- 强行匹配不适用的工具
+- 为一个待寻找点匹配多个工具
+- 输出工具库中不存在的工具
+- 提供模糊或无法验证的匹配理由
+
+# 执行流程
+
+1. **接收输入**: 仔细阅读&quot;已知账号人设&quot;和&quot;待寻找点&quot;
+2. **类型分析**: 判断每个待寻找点属于A/B/C/D/E哪种信息类型
+3. **工具匹配**: 根据信息类型和工具能力,选择最优工具或判断无工具匹配
+4. **输出结果**: 按格式输出分析和匹配结果,包含匹配理由和应用场景
+
+
+# 输入信息
+{1.已知信息账号人设:
+-账号的品类:宠物表情包账号
+-人设里能和该贴匹配的点:
+鼓励式猫咪表情包-猫咪考试祝福
+推广饮品品牌-推广餐饮品牌
+互动粉丝-互动特点人群
+拟人化猫咪形象-拟人化猫咪形象
+表情包式图文-表情包式视觉风格
+情景化植入-强关联场景植入
+-账号聚出来的pattern模式:
+模式1: 拟人化穿搭+趣味分享意图, 萌宠主题内容+拟人化主体,视觉构图版式....
+模式2:校园学生人设+商业推广意图,商业产品推厂+场景化产品植入
+模式3:日常生活演绎+萌宠主题内容+图文叙事结构
+模式4:视觉隐喻+趣味分享意图+视觉构图版式
+
+2.待寻找点:
+-社交媒体解构贴中未与账号人设匹配的信息
+考试祝福
+
+3.帖子创作日期:2025-11-07
+}</div>
+                    </div>
+                </div>
+                <div class="arrow"></div>
+                <div class="workflow-step" id="step-1-1">
+                    <div class="step-header" onclick="toggleStep('step-1-1')">
+                        <div class="step-title">
+                            <span class="step-number">2</span>
+                            <span class="step-name">提取参数</span>
+                        </div>
+                        <span class="step-toggle">▼</span>
+                    </div>
+                    <div class="step-content" id="content-step-1-1">
+                        <div class="step-detail">
+                            <span class="step-detail-label">提取的参数:</span>
+                            <div class="step-detail-content json-content">{
+  &quot;type&quot;: &quot;萌宠&quot;,
+  &quot;rankDate&quot;: &quot;2025-11-07&quot;
+}</div>
+                        </div>
+                        <button class="prompt-toggle-btn" onclick="togglePrompt('prompt-step-1-1')">显示 Prompt</button>
+                        <div class="prompt-content" id="prompt-step-1-1">你是一个API调用专家。你的任务是根据已经选择的工具及输入信息生成正确的调用参数。
+
+选择的工具调用ID:
+new_red_TopicRanking
+
+输入的信息:
+1.已知信息账号人设:
+-账号的品类:宠物表情包账号
+-人设里能和该贴匹配的点:
+鼓励式猫咪表情包-猫咪考试祝福
+推广饮品品牌-推广餐饮品牌
+互动粉丝-互动特点人群
+拟人化猫咪形象-拟人化猫咪形象
+表情包式图文-表情包式视觉风格
+情景化植入-强关联场景植入
+-账号聚出来的pattern模式:
+模式1: 拟人化穿搭+趣味分享意图, 萌宠主题内容+拟人化主体,视觉构图版式....
+模式2:校园学生人设+商业推广意图,商业产品推厂+场景化产品植入
+模式3:日常生活演绎+萌宠主题内容+图文叙事结构
+模式4:视觉隐喻+趣味分享意图+视觉构图版式
+
+2.待寻找点:
+-社交媒体解构贴中未与账号人设匹配的信息
+考试祝福
+
+3.帖子创作日期:2025-11-07
+
+
+所有的工具参数定义:
+{
+    &quot;name&quot;: &quot;new_red_TopicRanking&quot;,
+    &quot;title&quot;: &quot;新红话题榜单&quot;,
+    &quot;description&quot;: &quot;提供小红书平台热门话题全景榜单数据,覆盖排名、话题名称及核心简介、参与人数增量、浏览量增量、笔记增量、互动增量(点赞 / 收藏 / 评论综合统计)等核心维度。支持精准筛选与高效应用。话题类型涵盖美妆,美容个护,鞋包潮玩,穿搭打扮,美食,母婴育儿,旅游出行,家居家装,教育,生活,运动健身,兴趣爱好,影视综,婚嫁,摄影摄像,萌宠,情感星座,科技互联网,资讯,健康养生,科学科普,职场,交通工具,其他 24 个垂直领域,统计时间可选择日榜(近 7 天)、周榜(近 4 周)、月榜(近 5 个月),满足不同周期的热点追踪需求。榜单数据实时更新,同步呈现官方流量扶持话题标识,助力品牌、达人快速锁定高曝光赛道;便于拆解爆款逻辑、制定内容选题策略,提升运营效率。&quot;,
+    &quot;inputSchema&quot;: {
+        &quot;type&quot;: &quot;object&quot;,
+        &quot;properties&quot;: {
+            &quot;type&quot;: {
+                &quot;type&quot;: &quot;string&quot;,
+                &quot;description&quot;: &quot;话题类型,如全部、美食、萌宠等,默认为&#39;全部&#39;&quot;,
+                &quot;default&quot;: &quot;全部&quot;
+            },
+            &quot;rankDate&quot;: {
+                &quot;type&quot;: &quot;string&quot;,
+                &quot;description&quot;: &quot;排名日期,格式为YYYY-MM-DD&quot;
+            },
+            &quot;sort&quot;: {
+                &quot;type&quot;: &quot;string&quot;,
+                &quot;description&quot;: &quot;排序方式,默认按互动数&#39;interactiveCount&#39;排序&quot;,
+                &quot;default&quot;: &quot;interactiveCount&quot;
+            }
+        },
+        &quot;required&quot;: [
+            &quot;type&quot;,
+            &quot;rankDate&quot;
+        ]
+    }
+}
+
+请分析工具的参数要求,根据查询内容提取或推断出合适的参数值。
+
+输出格式:请以 JSON 格式输出参数字典,例如:
+{
+    &quot;param1&quot;: &quot;value1&quot;,
+    &quot;param2&quot;: &quot;value2&quot;
+}
+
+注意事项:
+1. 只输出参数的JSON字典,不要包含任何解释
+2. 参数名必须与工具定义中的参数名完全一致
+3. 参数值要从查询中提取或合理推断
+4. 不要添加工具定义中没有的参数
+5. 如果某个参数无法从查询中获取,使用合理的默认值或省略该参数
+
+只输出JSON,不要包含markdown标记。</div>
+                    </div>
+                </div>
+                <div class="arrow"></div>
+                <div class="workflow-step" id="step-1-2">
+                    <div class="step-header" onclick="toggleStep('step-1-2')">
+                        <div class="step-title">
+                            <span class="step-number">3</span>
+                            <span class="step-name">执行工具</span>
+                        </div>
+                        <span class="step-toggle">▼</span>
+                    </div>
+                    <div class="step-content" id="content-step-1-2">
+                        <div class="step-detail">
+                            <span class="step-detail-label">执行结果:</span>
+                            <div class="step-detail-content json-content">未找到 2025-11-07 日期 萌宠 分类的话题数据</div>
+                        </div>
+                    </div>
+                </div>
+            </div>
+            <div class="output-section">
+                <h3>最终输出</h3>
+                <div class="step-detail-content json-content">未找到 2025-11-07 日期 萌宠 分类的话题数据</div>
+            </div>
+        </div>
+    </div>
+    
+    <script>
+        function switchTab(index) {
+            // 隐藏所有tab内容
+            const contents = document.querySelectorAll('.tab-content');
+            contents.forEach(content => content.classList.remove('active'));
+            
+            // 移除所有tab的active状态
+            const tabs = document.querySelectorAll('.tab');
+            tabs.forEach(tab => tab.classList.remove('active'));
+            
+            // 显示选中的tab内容
+            document.getElementById('tab-' + index).classList.add('active');
+            tabs[index].classList.add('active');
+        }
+        
+        function toggleStep(stepId) {
+            const step = document.getElementById(stepId);
+            const content = document.getElementById('content-' + stepId);
+            const toggle = step.querySelector('.step-toggle');
+            
+            if (content.classList.contains('expanded')) {
+                content.classList.remove('expanded');
+                toggle.classList.remove('expanded');
+                step.classList.remove('active');
+            } else {
+                content.classList.add('expanded');
+                toggle.classList.add('expanded');
+                step.classList.add('active');
+            }
+        }
+        
+        function togglePrompt(promptId) {
+            const promptContent = document.getElementById(promptId);
+            const btn = promptContent.previousElementSibling;
+            
+            if (promptContent.classList.contains('show')) {
+                promptContent.classList.remove('show');
+                btn.textContent = '显示 Prompt';
+            } else {
+                promptContent.classList.add('show');
+                btn.textContent = '隐藏 Prompt';
+            }
+        }
+        
+        // 页面加载时高亮第一个步骤
+        window.addEventListener('load', function() {
+            const firstSteps = document.querySelectorAll('.workflow-step');
+            firstSteps.forEach((step, index) => {
+                if (index === 0 || index % (firstSteps.length / document.querySelectorAll('.tab-content').length) === 0) {
+                    step.classList.add('active');
+                    const content = step.querySelector('.step-content');
+                    const toggle = step.querySelector('.step-toggle');
+                    if (content) {
+                        content.classList.add('expanded');
+                        toggle.classList.add('expanded');
+                    }
+                }
+            });
+        });
+    </script>
+</body>
+</html>

Some files were not shown because too many files changed in this diff