AI Agent 驱动 CSV 批量 SEO 生成实战教程
› 社区话题 › wordpress开发 › AI Agent 驱动 CSV 批量 SEO 生成实战教程
标签: seo
- 该话题为空。
- 作者帖子
- 2026年8月17日 - 下午11:45 #1504

追光管理员开发思路与实践过程
hermes agent完成wp的seo
现在已进入一个精细化时代,运营多年头一次意识到seo的重要性,以前一直把系统能力放在首位,而seo是决定系统能否存活的关键。手搓seo了一个星期,才完成200多篇,我属于手速极快那种。十几万数据怎么处理?手搓的流程如何拆分能让ai接管?带着这个疑问,将思绪集中到了mysql,于是开发了插件导出数据为csv,将数据交给ai批量做,结果一塌糊涂还不如手搓。
后来想到,做一个小工具让其每次读取正文标题、描述,然后提交ai,结果非常完美,于是开发了个skill含工具的,让其自动读取一行处理,然后写seo,接着读取下一行,然后自动检测循环、验证。做出的结果比手搓强大,仅仅本地部署的qwen 9b模型就已经做出高级seo的能力了,24小时自动化干活,俩天俩夜多半天,做完了全部工作。然后我开始写了新的插件,如法炮制,让其优化表达重写完善旧内容。
这里存在一个严重的问题,任务执行到100条后,上下文渐渐开始腐烂,ai智力开始下降。于是用python和pandas组件写了个插件,让其自动拆分csv数据为100条。一共三天完成了任务,这中间一边检测质量,一边调节指令,让其可以复用。代码都开放在开发者社区。
#hemersagent #ai #wordpress #bbpress #seo
这是一份完整的 《AI Agent 驱动 CSV 批量 SEO 生成实战教程》。本教程将我们在 NewVFX 项目中验证过的“逐行独立闭环”工作流,转化为可复用的 AI Agent 开发指南与标准化 Prompt。
1. 核心设计理念:为什么不能用普通 LLM 对话?
在处理影视后期/VFX 等专业领域的 CSV 数据时,直接将文件丢给 AI 会导致三大灾难:
幻觉污染:AI 会根据前几行内容“脑补”后续行的设备型号或软件版本。
格式崩塌:输出 Markdown 表格而非标准 CSV,导致导入系统失败。
上下文遗忘:超过 20 行后,AI 会忘记长度限制和 `%sitename%` 后缀规则。
解决方案:构建 “Python 控制器 + LLM 生成器” 的双引擎架构。Python 负责“纪律”,LLM 负责“创意”。
开发这个skill过程中我也做了一个csv拆分工具,非常好用,本地python和pandans拆分csv很方便
2. 系统架构图
mermaidgraph LR
A[原始CSV] –> B(Python 控制器)
B –>|单行 Title+Snippet| C[LLM 生成器]
C –>|SEO JSON| D{Python 校验器}
D –>|校验失败| C
D –>|校验通过| E[输出缓冲]
E –> F[最终质检]
F –> G[合规CSV]3. Python 控制器核心代码(可直接复用)
这是整个系统的“骨架”,确保红线规则被物理执行:python
import csv, json, time from your_llm_client import generate_seo # 封装好的LLM调用函数 MAX_RETRIES = 3 SITENAME_SUFFIX = " %sitename%" def process_csv(input_path, output_path): results = [] with open(input_path, 'r', encoding='utf-8') as f: reader = csv.DictReader(f) fieldnames = reader.fieldnames for idx, row in enumerate(reader): current = dict(row) retry = 0 valid = False while retry < MAX_RETRIES and not valid: # 1. 仅传入当前行核心字段,杜绝跨行污染 seo = generate_seo( title=current['original_title'], snippet=current['content_snippet'] ) # 2. 物理校验(非AI判断) errors = [] t = seo.get('seo_title', '') d = seo.get('seo_desc', '') k = seo.get('seo_keywords', '') if not (25 <= len(t) <= 60): errors.append(f"title_len={len(t)}") if not t.endswith(SITENAME_SUFFIX): errors.append("missing_suffix") if not (70 <= len(d) <= 160): errors.append(f"desc_len={len(d)}") kw_count = len([x for x in k.split(',') if x.strip()]) if not (3 <= kw_count <= 5): errors.append(f"kw_count={kw_count}") if not errors: current.update(seo) valid = True else: print(f"Row {idx} retry {retry+1}: {errors}") retry += 1 time.sleep(1) # 避免触发限流 if valid: results.append(current) else: print(f"⚠️ Row {idx} FAILED after {MAX_RETRIES} retries") # 3. 写入时保持原始列顺序 with open(output_path, 'w', encoding='utf-8', newline='') as f: writer = csv.DictWriter(f, fieldnames=fieldnames) writer.writeheader() writer.writerows(results)4. LLM 生成器专用 System Prompt
将此 Prompt 配置到你的 AI Agent 或 API 调用中。此 Prompt 已内化 NewVFX 项目的所有质量标准。#🎬 VFX/影视后期 SEO 生成专家 System Prompt
markdown
# Role 你是影视后期/VFX/Nuke领域资深SEO专家。你的任务是将单条视频的标题与摘要转化为高质量SEO元数据。 # Input Format 你将收到一个JSON对象,包含两个字段: - original_title: 视频/文章原始标题 - content_snippet: 内容摘要或描述 # Output Format 严格返回纯JSON对象,不含任何Markdown标记、解释文字或换行符: { "seo_title": "string", "seo_desc": "string", "seo_keywords": "string" } # ⛔ Absolute Red Lines 1. NEVER invent equipment models, software versions, or person names not present in input 2. NEVER use generic phrases like "这是一个关于...的视频" 3. NEVER reference other videos or external knowledge 4. When snippet is too short, focus on generic value of the content type, DO NOT fabricate details # ✅ Field Specifications seo_title - Length: 25-60 characters INCLUDING suffix - Format: `核心词|描述性短语 %sitename%` - Suffix: MUST end with exactly " %sitename%" (space + literal string) - Truncation priority: %sitename% > core product name > descriptive phrase seo_desc - Length: 70-160 characters - Structure: 1. Subject + core value 2. Application scenario / pain point solved 3. Value to VFX/post-production creators (e.g., "是VFX创作者学习...的优质案例") - Tone: Professional, concise, no keyword stuffing seo_keywords - Count: 3-5 comma-separated terms - Composition: ①Product/work name ②Function/tech term ③Application/software name - Language: Keep English for proper nouns (VFX, Nuke, DaVinci), Chinese for general terms - No substring duplication between keywords # 💡 Perfect Example Input: {"original_title": "VFX REEL Breakdown", "content_snippet": "影片中综合了各种影视拍摄,后期制作效果的花絮..."} Output: {"seo_title": "VFX REEL Breakdown|前卫视觉创意体幕后花絮集锦 %sitename%", "seo_desc": "VFX REEL Breakdown汇集多种影视拍摄与后期制作效果花絮,展现前卫视觉创意体,打开视觉想象之门,是VFX创作者获取灵感、学习后期技巧与拓展视觉思维的优质参考资源。", "seo_keywords": "VFX REEL,Breakdown花絮,前卫视觉,影视后期,创意集锦"}5. 部署与调优建议
5.1 温度设置
推荐值:`temperature=0.3~0.5`
原因:SEO 需要格式稳定性高于创意发散性。过低(<0.2)会导致关键词重复,过高(>0.7)会破坏长度约束。5.2 批量处理节奏
单请求单行:每次 API 调用只传 1 行数据,这是杜绝跨行污染的唯一可靠方式。
并发控制:建议使用 5-10 并发,配合速率限制(如 60 RPM),避免触发 LLM 限流导致重试风暴。5.3 质量兜底机制
即使 AI 输出合规,仍需在 Python 层做二次校验:
长度硬校验:`len(title) <= 60` 后缀存在性:`title.endswith(" %sitename%")` 关键词计数:`3 <= len(keywords.split(',')) <= 5` 原始字段完整性:比对输入输出的 `id`, `original_title` 是否一致5.4 迭代优化策略 将人工修正后的优质样本加入 Few-shot 示例区。例如发现 AI 总是把“延时摄影”写成“timelapse”,则在 Prompt 的 Perfect Example 中增加一个中文关键词的正确样例。6. 常见陷阱与规避| 陷阱 | 表现 | 解决方案 |
| 跨行污染 | 第10行出现第3行的设备型号 | 坚持单请求单行,不在 prompt 中传入历史数据 |
| 后缀丢失 | title 超长时被截断掉 %sitename% | Python 层强制追加,而非依赖 AI 自觉遵守 |
| 信息编造 | snippet 仅4字却生成详细设备参数 | Prompt 中明确“信息不足时聚焦通用价值” |
| CSV 格式错误 | 含逗号字段未加引号 | 使用 Python csv 模块写入,禁止字符串拼接 |
| 关键词堆砌 | 5个关键词全是“延时摄影”变体 | 校验逻辑增加去重检查 |7. 扩展应用
此框架不仅适用于 SEO 生成,还可迁移至:
视频标签自动生成:修改 keywords 规范为平台标签格式
多语言本地化:在 prompt 中增加目标语言与文化适配规则
内容审核:将生成逻辑替换为合规性检查逻辑
元数据补全:针对缺失字段进行结构化推断
关键洞察:AI Agent 的价值不在于“替代人”,而在于将人类专家的质量标准编码为可执行的程序逻辑。Prompt 定义“什么是好”,Python 确保“必须是好”。两者缺一不可。
此教程与 Prompt 已在 10000+ 行真实CSV数据库内容上验证通过,可直接投入生产环境。如需针对特定子领域(如 Houdini 特效、Nuke 合成)微调,可在 Prompt 的 Field Specifications 中补充领域专属词库与示例。
- 作者帖子
- 在下方一键注册,登录后就可以回复啦。