必须关闭向量化预处理,否则LSI词根被切碎导致语义关联丢失;长尾词需含主词+限定词+后缀,每簇≤8个且按搜索量截断,“怎么”“哪里买”属信息型、“推荐”“评测”属决策型。
☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 多模态理解力帮你轻松跨越从0到1的创作门槛☜☜☜

你需要在Dify中一次性完成长尾关键词批量挖掘、语义聚类、搜索意图判定,并为每组词自动生成匹配的SEO文章,整个流程不依赖人工筛选与重复配置。
准备长尾词挖掘专用知识库
新建知识库,名称填“SEO_长尾词规则_2026”,类型选“文档”,上传你整理的《主流行业LSI词根表_v3.2》和《搜索意图判定矩阵_2026》两个文件。
进入该知识库高级设置→关闭“启用向量化预处理”→将分块大小设为256,重叠设为32。这一步【必须关闭向量化预处理】,否则LSI词根会被切碎成孤立片段,导致后续聚类时丢失语义关联性。
手动添加三条纯文本规则条目: ① “长尾词必须包含1个主关键词+1个限定词(地域/人群/场景/问题)+1个动词或名词后缀” ② “同一语义簇内长尾词数量≤8个,超限则按搜索量降序截断” ③ “‘怎么’‘如何’‘哪里买’‘多少钱’类词必须归入‘信息型意图’,‘推荐’‘对比’‘评测’必须归入‘决策型意图’”
搭建双路长尾词生成工作流
创建新应用→选择【工作流】类型→命名“长尾词挖掘+内容生成_v4”→点击创建。
拖入【开始】节点→右侧面板添加两个必填字段: • 【seed_keyword】:种子主词,如“宠物空气净化器” • 【max_cluster_count】:最大语义簇数,填数字,如“5”
从节点库拖入【LLM】节点→模型选“Qwen2.5-72B-Instruct”→温度设0.4→最大输出长度设1500→提示词写: 你是一位SEO语义工程师。请基于种子词{{seed_keyword}},严格按以下规则生成长尾词簇: 1. 每簇含4–8个长尾词,格式为纯文本列表,每行1个,不带编号不带标点 2. 必须覆盖地域型(如“北京”“长三角”)、人群型(如“新手养猫人”“多猫家庭”)、问题型(如“除臭效果差”“噪音大”)、场景型(如“小户型”“卧室用”)四类限定维度 3. 禁止出现重复词干,禁止堆砌同义词 4. 输出仅含词簇,不解释、不总结、不加空行
接入DataForSEO实现真实搜索量校验
进入【设置→模型与工具→自定义工具】→点击【+添加工具】→选择“DataForSEO SERP API”→填入你的API密钥与Base URL(https://api.dataforseo.com/v3)。
返回画布→拖入【Tool】节点→选择刚注册的DataForSEO工具→在参数配置中填: • endpoint: serp/google/organic/live • post_data: { "keywords": {{llm_output}}, "location_code": 2840, "language_code": "en" } 注意:【location_code必须填2840(代表中国)】,填错会导致返回全球数据,干扰本地化长尾词判断。
该节点输出为JSON格式,含每个词的search_volume、cpc、competition字段。后续所有聚类与过滤均基于此真实数据,而非LLM幻觉估算。
执行语义聚类与意图打标
在DataForSEO节点后接【代码】节点→语言选Python→粘贴以下逻辑:
import json
from sklearn.feature_extraction.text import TfidfVectorizer
from sklearn.cluster import KMeans
def main(arg1: str) -> dict:
data = json.loads(arg1)
keywords = [item['keyword'] for item in data.get('tasks', [{}])[0].get('result', []) if 'keyword' in item]
if len(keywords) return {"clusters": [{"group": "fallback", "keywords": keywords}] }
vectorizer = TfidfVectorizer(analyzer='char_wb', ngram_range=(2, 4))
X = vectorizer.fit_transform(keywords)
kmeans = KMeans(n_clusters=min(len(keywords), {{max_cluster_count}}), random_state=42)
labels = kmeans.fit_predict(X)
clusters = {}
for i, label in enumerate(labels):
group = f"group_{label + 1}"
if group not in clusters:
clusters[group] = []
clusters[group].append(keywords[i])
return {"clusters": [{"group": k, "keywords": v} for k, v in clusters.items()] }
为每组长尾词自动触发内容生成
从【代码】节点输出拖出箭头→接【循环】节点→循环变量设为“cluster_item”→循环体填入: ① 【LLM】节点:生成该簇专属大纲,提示词含“围绕{{cluster_item.keywords}}设计3段式结构:问题引入→原理拆解→实操建议” ② 【LLM】节点:分段写作,输入为上一步大纲,要求每段≤320字,自然嵌入全部长尾词且密度≤2.1% ③ 【知识检索】节点:绑定“SEO_长尾词规则_2026”知识库→相似度阈值0.78→校验H1唯一性与锚文本合规性
循环结束后接【合并】节点→将所有簇生成的文章按“语义相关性”排序后拼接→输出最终HTML正文,含h1/h2标签、关键词加粗、内部链接占位符[[link:product_comparison]]。


















