04丨GEO效果评估报告自动生成

哈喽大家好,我是帮你们省时间的运营搭子小实。
前天发了免费的「品牌GEO展现率追踪」智能体,很多同学在后台追问一个问题:
“那个GEO分析报告咋做的?”
“知道这个问题没被提及,但我该去知乎发还是小红书发?”
“每周整理数据做报告还要俩小时,能不能连这步也省了?”
同样是运营,我太懂了。
运营人最怕的就是“有数据但不会用”,对着一表格的✅❌发呆,最后还是只能凭感觉发内容。
所以今天这篇,小实把最后一块拼图给你们补上。
不用写一行代码,不用懂任何技术,只要会复制粘贴,3分钟就能搭好一个专属的GEO自动分析工具。
以后监测完数据,直接上传文件就能拿到一份排版固定、数据准确、连优化建议都写好的完整报告,周会直接讲给老板听。
01 先给你们看成品:搭好之后有多爽
上传1个Excel提及率表+3个大模型信源txt(都是「品牌GEO展现率追踪」智能体自动导出的),什么都不用干,直接出这样的报告:
- ✅ 核心数据一眼看:整体提及率、哪个大模型表现最好/最差
- ✅ 分问题明细:每个问题在3个平台的提及状态,标好紧急优化项
- ✅ 最有用的部分:每个大模型最爱引用的TOP10平台,直接告诉你该去哪发内容
- ✅ 连标题关键词都给你扒好了:AI最喜欢带什么词的标题,直接抄就行
- ✅ 未提及问题专属清单:每个没被提到的问题,大模型都抓了哪些平台的内容
你再也不用对着Excel拉公式、调表格格式、凑优化建议了。

02 搭建步骤
全程不用你写任何东西,我都写好了,直接用:
打开实在Agent客户端,先用「品牌GEO展现率追踪」智能体跑一遍,你会得到以下文件:

我这里是跑了DeepSeek大模型,然后为了省事,就直接把DeepSeek-W22.txt复制了两份,改名为豆包和腾讯元宝的源数据了,所以你仔细看上面的分析报告,会发现三个大模型的TOP10平台结果是一样的。
第一步:新建智能体
点右上角的「+创建智能体」,名字随你心意。


第二步:大模型组件
点开大模型组件,复制以下提示词到大模型里:
# 绝对规则
1. 同时读取用户上传的所有文件【这里插入变量】:1个Excel文件(提及率表)+ 最多3个txt文件(大模型信源数据)
2. 只输出纯JSON代码,不能有任何其他文字、解释、markdown格式
3. Excel只处理Period列值为"2026-WXX"的行,忽略MASTER行
4. 只处理以下3个大模型的txt文件,其他模型文件直接忽略:
- DeepSeek(文件名如"Deepseek2026-W22.txt")
- Doubao(豆包,文件名如"Doubao2026-W22.txt")
- Yuanbao(腾讯元宝,文件名如"Yuanbao2026-W22.txt")
5. 所有计算结果四舍五入到整数
# 数据提取规则
## 一、Excel提及率数据提取
{
"汇报周期": "从Excel提取",
"问题数据": [
{
"问题": "Excel中Question列内容",
"DeepSeek": true/false,
"Doubao": true/false,
"Yuanbao": true/false
}
]
}
## 二、txt信源数据提取(分模型独立提取)
每个txt文件的格式:
### 问题内容:XXX
- [标题1] 平台1
- [标题2] 平台2
...
提取为:
"信源数据": {
"DeepSeek": [
{
"问题": "问题内容",
"信源列表": [
{"标题": "标题1", "平台": "平台1"},
{"标题": "标题2", "平台": "平台2"}
]
},
...
],
"Doubao": [], // 豆包信源数据,没有上传则为空数组
"Yuanbao": [] // 腾讯元宝信源数据,没有上传则为空数组
}
# 最终输出格式(严格按照这个结构)
{
"汇报周期": "2026-W22",
"问题数据": [...],
"信源数据": {
"DeepSeek": [...],
"Doubao": [...],
"Yuanbao": [...]
}
}这里需要看你监测了几个大模型的品牌提及率,我这里是设定了三个:DeepSeek、豆包、腾讯元宝。
如果你只监测DeepSeek和豆包,就删除下面提示词里与腾讯元宝相关的内容:
【- Yuanbao(腾讯元宝,文件名如"Yuanbao2026-W22.txt")】
【"Yuanbao": true/false】
【"Yuanbao": [] // 腾讯元宝信源数据,没有上传则为空数组】
【"Yuanbao": [...]】
同理,如果你检测的模型不止这三个,就新增下对应的提示词即可。
模型的温度建议改为0,保证每次输出结果都按照文件内容,不会乱改。
文件输入和提示词里面记得插入变量。

第三步:加代码组件
很多同学看到代码就头大,放心,我都写好了,你只需要复制粘贴。
- 从左侧「工具」组件库或直接点击画布上的"+",插入「代码」节点。
- 输入变量那里: 把默认的arg2删掉,只留arg1把arg1改名叫modelOutput点「设置变量值」,选「大模型对话 → 输出内容」
- 中间的代码框,把原来的内容全删了,完整复制粘贴我给你的代码
- 输出变量那里: 默认的result改个名 html,类型选「字符串」

复制的代码在这里,这些都是大模型给我生成的,小实也不会写代码:
function main({modelOutput}) {
// 1. 解析大模型输出的统一JSON数据
const data = JSON.parse(modelOutput.trim());
// 2. 固定配置
const 品牌名称 = "iPhone";
const 环比变化 = 0;
const 汇报周期 = data.汇报周期;
const 模型列表 = ["DeepSeek", "Doubao", "Yuanbao"];
const 模型中文名 = {"DeepSeek": "DeepSeek", "Doubao": "豆包", "Yuanbao": "腾讯元宝"};
const 模型颜色 = {
"DeepSeek": "rgba(59, 130, 246, 0.7)",
"Doubao": "rgba(16, 185, 129, 0.7)",
"Yuanbao": "rgba(245, 158, 11, 0.7)"
};
// 3. 基础提及率计算(仅3个模型)
const 总问题数 = data.问题数据.length;
const 计算提及率 = (model) => {
const count = data.问题数据.filter(q => q[model]).length;
return Math.round((count / 总问题数) * 100);
};
const DeepSeek提及率 = 计算提及率('DeepSeek');
const 豆包提及率 = 计算提及率('Doubao');
const 腾讯元宝提及率 = 计算提及率('Yuanbao');
const 整体提及率 = Math.round((DeepSeek提及率 + 豆包提及率 + 腾讯元宝提及率) / 3);
// 4. 生成分问题表格行(仅3个模型列)
let 分问题表格行 = '';
data.问题数据.forEach((row, index) => {
const 问题编号 = `Q${index + 1}`;
const DeepSeek状态 = row.DeepSeek ? '✅' : '❌';
const 豆包状态 = row.Doubao ? '✅' : '❌';
const 腾讯元宝状态 = row.Yuanbao ? '✅' : '❌';
const 提及次数 = [row.DeepSeek, row.Doubao, row.Yuanbao].filter(v => v).length;
const 综合提及率 = Math.round((提及次数 / 3) * 100);
let 状态标签, 状态类;
if (综合提及率 === 100) {
状态标签 = '优秀';
状态类 = 'bg-green-100 text-green-800';
} else if (综合提及率 >= 60) {
状态标签 = '良好';
状态类 = 'bg-yellow-100 text-yellow-800';
} else if (综合提及率 > 0) {
状态标签 = '待优化';
状态类 = 'bg-orange-100 text-orange-800';
} else {
状态标签 = '紧急优化';
状态类 = 'bg-red-100 text-red-800';
}
分问题表格行 += `
<tr>
<td class="px-6 py-4 whitespace-nowrap text-sm text-gray-900">${问题编号}</td>
<td class="px-6 py-4 text-sm text-gray-900">${row.问题}</td>
<td class="px-6 py-4 whitespace-nowrap text-center text-sm">${DeepSeek状态}</td>
<td class="px-6 py-4 whitespace-nowrap text-center text-sm">${豆包状态}</td>
<td class="px-6 py-4 whitespace-nowrap text-center text-sm">${腾讯元宝状态}</td>
<td class="px-6 py-4 whitespace-nowrap text-center text-sm font-semibold">${综合提及率}%</td>
<td class="px-6 py-4 whitespace-nowrap text-center">
<span class="px-2 py-1 text-xs rounded-full ${状态类}">${状态标签}</span>
</td>
</tr>
`;
});
// -------------------------- 分模型信源深度分析逻辑 --------------------------
let 所有模型信源分析HTML = '';
let 所有图表初始化代码 = '';
let 图表计数器 = 0;
模型列表.forEach(模型名 => {
const 信源数据 = data.信源数据[模型名] || [];
if (信源数据.length === 0) return; // 没有上传该模型的txt则跳过
// 5.1 统计该模型的平台出现次数
const 平台统计 = {};
信源数据.forEach(问题 => {
问题.信源列表.forEach(信源 => {
平台统计[信源.平台] = (平台统计[信源.平台] || 0) + 1;
});
});
// 转换为图表数据(取前10个平台)
const 平台排名 = Object.entries(平台统计)
.sort((a, b) => b[1] - a[1])
.slice(0, 10);
const 平台名称数组 = JSON.stringify(平台排名.map(item => item[0]));
const 平台次数数组 = JSON.stringify(平台排名.map(item => item[1]));
// 5.2 区分该模型下提及和未提及问题的平台差异
const 提及问题平台 = {};
const 未提及问题平台 = {};
data.问题数据.forEach(问题数据 => {
const 对应信源 = 信源数据.find(s => s.问题 === 问题数据.问题);
if (!对应信源) return;
const 目标统计 = 问题数据[模型名] ? 提及问题平台 : 未提及问题平台;
对应信源.信源列表.forEach(信源 => {
目标统计[信源.平台] = (目标统计[信源.平台] || 0) + 1;
});
});
// 5.3 提取该模型的标题高频关键词
const 所有标题 = 信源数据.flatMap(q => q.信源列表.map(s => s.标题));
const 关键词统计 = {};
const 停用词 = ['的', '了', '是', '在', '有', '和', '与', '为', '对', '等', '这', '那', '个', '款', '台'];
所有标题.forEach(标题 => {
const 词语 = 标题.split(/[\s\[\]\(\)\-\+\!\.\,\,\。\!\?\:]+/);
词语.forEach(词 => {
if (词.length >= 2 && !停用词.includes(词)) {
关键词统计[词] = (关键词统计[词] || 0) + 1;
}
});
});
const 高频关键词 = Object.entries(关键词统计)
.sort((a, b) => b[1] - a[1])
.slice(0, 8)
.map(item => item[0])
.join('、');
// 5.4 生成该模型的针对性优化建议
const 未提及问题列表 = data.问题数据.filter(q => !q[模型名]).map(q => q.问题);
const 未提及平台排名 = Object.entries(未提及问题平台)
.sort((a, b) => b[1] - a[1])
.slice(0, 5);
let 优化建议HTML = '';
if (未提及平台排名.length > 0) {
优化建议HTML = `
<div class="border-l-4 border-red-500 pl-4 py-2 mb-4">
<h4 class="font-semibold text-lg">核心优化方向</h4>
<p class="text-gray-600">未提及问题中,${模型中文名[模型名]}引用最多的平台是:<strong>${未提及平台排名[0][0]}</strong>(${未提及平台排名[0][1]}次)</p>
<p class="text-gray-600">建议立即在以下平台发布针对未提及问题的内容:</p>
<ul class="list-disc list-inside text-gray-600 mt-2">
${未提及平台排名.map(item => `<li>${item[0]}:发布包含"${高频关键词.split('、')[0]}"、"${高频关键词.split('、')[1]}"等关键词的文章</li>`).join('')}
</ul>
</div>
<div class="border-l-4 border-yellow-500 pl-4 py-2">
<h4 class="font-semibold text-lg">标题优化建议</h4>
<p class="text-gray-600">${模型中文名[模型名]}偏好包含以下关键词的标题:<strong>${高频关键词}</strong></p>
<p class="text-gray-600">示例标题:"2026年${高频关键词.split('、')[0]}手机推荐:${品牌名称}领衔"</p>
</div>
`;
}
// 5.5 生成该模型的未提及问题详情表
let 未提及问题HTML = '';
if (未提及问题列表.length > 0) {
未提及问题HTML = `
<div class="bg-white rounded-lg p-6 card-shadow mt-6">
<h3 class="text-xl font-semibold mb-4">${模型中文名[模型名]}未提及问题及对应抓取平台</h3>
<div class="overflow-x-auto">
<table class="w-full">
<thead>
<tr class="bg-gray-50 border-b">
<th class="px-6 py-3 text-left text-xs font-medium text-gray-500 uppercase tracking-wider">未提及问题</th>
<th class="px-6 py-3 text-left text-xs font-medium text-gray-500 uppercase tracking-wider">主要引用平台</th>
</tr>
</thead>
<tbody class="divide-y divide-gray-200">
${未提及问题列表.map(问题 => {
const 对应信源 = 信源数据.find(s => s.问题 === 问题);
const 平台列表 = 对应信源 ? [...new Set(对应信源.信源列表.map(s => s.平台))].slice(0, 5).join('、') : '无数据';
return `
<tr>
<td class="px-6 py-4 text-sm text-gray-900">${问题}</td>
<td class="px-6 py-4 text-sm text-gray-900">${平台列表}</td>
</tr>
`;
}).join('')}
</tbody>
</table>
</div>
</div>
`;
}
// 5.6 生成该模型的信源分析HTML块
const 图表ID = `sourceChart_${图表计数器}`;
所有模型信源分析HTML += `
<div class="mb-12">
<h3 class="text-xl font-bold text-dark mb-6 flex items-center">
<span class="w-3 h-3 rounded-full mr-2" style="background-color: ${模型颜色[模型名]}"></span>
${模型中文名[模型名]} 信源深度分析
</h3>
<div class="grid grid-cols-1 lg:grid-cols-2 gap-8">
<!-- 平台分布图表 -->
<div class="bg-white rounded-lg p-6 card-shadow">
<h4 class="text-lg font-semibold mb-4">引用平台TOP10</h4>
<div class="h-64">
<canvas id="${图表ID}"></canvas>
</div>
</div>
<!-- 优化建议 -->
<div class="bg-white rounded-lg p-6 card-shadow">
<h4 class="text-lg font-semibold mb-4">针对性优化建议</h4>
<div class="space-y-4">
${优化建议HTML || '<p class="text-gray-500">该模型所有问题均已提及,表现优秀!</p>'}
</div>
</div>
</div>
${未提及问题HTML}
</div>
`;
// 5.7 添加该模型的图表初始化代码
所有图表初始化代码 += `
// ${模型中文名[模型名]} 平台分布图表
const ${图表ID}_ctx = document.getElementById('${图表ID}').getContext('2d');
new Chart(${图表ID}_ctx, {
type: 'bar',
data: {
labels: ${平台名称数组},
datasets: [{
label: '引用次数',
data: ${平台次数数组},
backgroundColor: '${模型颜色[模型名]}',
borderColor: '${模型颜色[模型名].replace('0.7', '1')}',
borderWidth: 1
}]
},
options: {
responsive: true,
maintainAspectRatio: false,
indexAxis: 'y',
scales: {
x: {
beginAtZero: true
}
},
plugins: {
legend: {
display: false
}
}
}
});
`;
图表计数器++;
});
// -------------------------- 信源分析逻辑结束 --------------------------
// 6. 完整HTML模板
const html = `
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>品牌GEO展现率周度汇报</title>
<script src="https://cdn.tailwindcss.com"></script>
<script src="https://cdn.jsdelivr.net/npm/chart.js@4.4.8/dist/chart.umd.min.js"></script>
<link href="https://cdn.jsdelivr.net/npm/font-awesome@4.7.0/css/font-awesome.min.css" rel="stylesheet">
<script>
tailwind.config = {
theme: {
extend: {
colors: {
primary: '#3b82f6',
secondary: '#10b981',
danger: '#ef4444',
warning: '#f59e0b',
dark: '#1f2937'
},
fontFamily: {
sans: ['Inter', 'system-ui', 'sans-serif'],
},
}
}
}
</script>
<style type="text/tailwindcss">
@layer utilities {
.card-shadow {
box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06);
}
.gradient-bg {
background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
}
}
</style>
</head>
<body class="bg-gray-50 font-sans">
<!-- 页面头部 -->
<header class="gradient-bg text-white py-8 px-4 md:px-8">
<div class="container mx-auto">
<h1 class="text-[clamp(1.8rem,4vw,2.8rem)] font-bold mb-2">品牌GEO展现率周度汇报</h1>
<div class="flex flex-wrap items-center text-white/90 gap-4">
<div class="flex items-center">
<i class="fa fa-calendar mr-2"></i>
<span>${汇报周期}</span>
</div>
<div class="flex items-center">
<i class="fa fa-user mr-2"></i>
<span>汇报人:市场部</span>
</div>
<div class="flex items-center">
<i class="fa fa-building mr-2"></i>
<span>${品牌名称}</span>
</div>
</div>
</div>
</header>
<!-- 核心数据概览 -->
<section class="py-8 px-4 md:px-8">
<div class="container mx-auto">
<h2 class="text-2xl font-bold text-dark mb-6 flex items-center">
<i class="fa fa-dashboard text-primary mr-2"></i>核心数据概览
</h2>
<div class="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-4 gap-6 mb-8">
<!-- 整体提及率 -->
<div class="bg-white rounded-lg p-6 card-shadow">
<div class="flex justify-between items-start mb-4">
<div>
<p class="text-gray-500 text-sm">整体品牌提及率</p>
<h3 class="text-3xl font-bold text-primary">${整体提及率}%</h3>
</div>
<div class="bg-green-100 text-green-600 px-2 py-1 rounded text-sm flex items-center">
<i class="fa fa-arrow-up mr-1"></i>${环比变化}%
</div>
</div>
<div class="w-full bg-gray-200 rounded-full h-2.5">
<div class="bg-primary h-2.5 rounded-full" style="width: ${整体提及率}%"></div>
</div>
</div>
<!-- 监测问题数 -->
<div class="bg-white rounded-lg p-6 card-shadow">
<div class="flex justify-between items-start mb-4">
<div>
<p class="text-gray-500 text-sm">监测问题数</p>
<h3 class="text-3xl font-bold text-dark">${总问题数}个</h3>
</div>
<div class="bg-blue-100 text-blue-600 px-2 py-1 rounded text-sm">
核心问题
</div>
</div>
<p class="text-gray-500 text-sm">覆盖用户搜索量TOP${总问题数}的行业问题</p>
</div>
<!-- 覆盖模型数 -->
<div class="bg-white rounded-lg p-6 card-shadow">
<div class="flex justify-between items-start mb-4">
<div>
<p class="text-gray-500 text-sm">覆盖大模型</p>
<h3 class="text-3xl font-bold text-dark">3个</h3>
</div>
<div class="bg-purple-100 text-purple-600 px-2 py-1 rounded text-sm">
主流平台
</div>
</div>
<p class="text-gray-500 text-sm">DeepSeek、豆包、腾讯元宝</p>
</div>
<!-- 表现最好模型 -->
<div class="bg-white rounded-lg p-6 card-shadow">
<div class="flex justify-between items-start mb-4">
<div>
<p class="text-gray-500 text-sm">表现最好模型</p>
<h3 class="text-3xl font-bold text-dark">${DeepSeek提及率 >= 豆包提及率 && DeepSeek提及率 >= 腾讯元宝提及率 ? 'DeepSeek' : (豆包提及率 >= 腾讯元宝提及率 ? '豆包' : '腾讯元宝')}</h3>
</div>
<div class="bg-green-100 text-green-600 px-2 py-1 rounded text-sm">
${Math.max(DeepSeek提及率, 豆包提及率, 腾讯元宝提及率)}%
</div>
</div>
<p class="text-gray-500 text-sm">在该平台表现最佳</p>
</div>
</div>
<!-- 分模型表现图表 -->
<div class="bg-white rounded-lg p-6 card-shadow mb-8">
<h3 class="text-xl font-semibold mb-4">分模型表现对比</h3>
<div class="h-64">
<canvas id="modelChart"></canvas>
</div>
</div>
</div>
</section>
<!-- 分问题表现 -->
<section class="py-8 px-4 md:px-8 bg-gray-100">
<div class="container mx-auto">
<h2 class="text-2xl font-bold text-dark mb-6 flex items-center">
<i class="fa fa-list text-primary mr-2"></i>分问题表现详情
</h2>
<div class="bg-white rounded-lg card-shadow overflow-hidden">
<div class="overflow-x-auto">
<table class="w-full">
<thead>
<tr class="bg-gray-50 border-b">
<th class="px-6 py-3 text-left text-xs font-medium text-gray-500 uppercase tracking-wider">问题编号</th>
<th class="px-6 py-3 text-left text-xs font-medium text-gray-500 uppercase tracking-wider">监测问题</th>
<th class="px-6 py-3 text-center text-xs font-medium text-gray-500 uppercase tracking-wider">DeepSeek</th>
<th class="px-6 py-3 text-center text-xs font-medium text-gray-500 uppercase tracking-wider">豆包</th>
<th class="px-6 py-3 text-center text-xs font-medium text-gray-500 uppercase tracking-wider">腾讯元宝</th>
<th class="px-6 py-3 text-center text-xs font-medium text-gray-500 uppercase tracking-wider">综合提及率</th>
<th class="px-6 py-3 text-center text-xs font-medium text-gray-500 uppercase tracking-wider">状态</th>
</tr>
</thead>
<tbody class="divide-y divide-gray-200">
${分问题表格行}
</tbody>
</table>
</div>
</div>
</div>
</section>
<!-- AI引用信源深度分析(分模型) -->
<section class="py-8 px-4 md:px-8">
<div class="container mx-auto">
<h2 class="text-2xl font-bold text-dark mb-6 flex items-center">
<i class="fa fa-link text-primary mr-2"></i>AI引用信源深度分析
</h2>
${所有模型信源分析HTML || '<div class="bg-white rounded-lg p-6 card-shadow text-center text-gray-500">暂未上传任何大模型信源数据</div>'}
</div>
</section>
<!-- 整体优化建议 -->
<section class="py-8 px-4 md:px-8 bg-gray-100">
<div class="container mx-auto">
<h2 class="text-2xl font-bold text-dark mb-6 flex items-center">
<i class="fa fa-rocket text-primary mr-2"></i>整体优化建议
</h2>
<div class="bg-white rounded-lg card-shadow p-6">
<div class="space-y-4">
<div class="border-l-4 border-red-500 pl-4 py-2">
<h4 class="font-semibold text-lg">紧急优化</h4>
<p class="text-gray-600">立即针对综合提及率为0%的问题,在对应大模型偏好的平台发布内容</p>
</div>
<div class="border-l-4 border-yellow-500 pl-4 py-2">
<h4 class="font-semibold text-lg">中期建设</h4>
<p class="text-gray-600">重点布局IT之家、太平洋科技、什么值得买等全平台高引用渠道</p>
</div>
<div class="border-l-4 border-blue-500 pl-4 py-2">
<h4 class="font-semibold text-lg">长期目标</h4>
<p class="text-gray-600">持续监测各模型信源变化,逐步提升整体提及率至80%以上</p>
</div>
</div>
</div>
</div>
</section>
<!-- 页脚 -->
<footer class="bg-dark text-white py-6 px-4 md:px-8 mt-8">
<div class="container mx-auto text-center">
<p class="mb-2">本报告由「实在Agent GEO展现率追踪」智能体自动生成</p>
<p class="text-white/60 text-sm">实在智能 · 用实在的AI,做靠谱的事</p>
</div>
</footer>
<!-- 图表初始化脚本 -->
<script>
// 分模型表现图表
const modelCtx = document.getElementById('modelChart').getContext('2d');
new Chart(modelCtx, {
type: 'bar',
data: {
labels: ['DeepSeek', '豆包', '腾讯元宝'],
datasets: [{
label: '品牌提及率',
data: [${DeepSeek提及率}, ${豆包提及率}, ${腾讯元宝提及率}],
backgroundColor: [
'rgba(59, 130, 246, 0.7)',
'rgba(16, 185, 129, 0.7)',
'rgba(245, 158, 11, 0.7)'
],
borderColor: [
'rgba(59, 130, 246, 1)',
'rgba(16, 185, 129, 1)',
'rgba(245, 158, 11, 1)'
],
borderWidth: 1
}]
},
options: {
responsive: true,
maintainAspectRatio: false,
scales: {
y: {
beginAtZero: true,
max: 100,
ticks: {
callback: function(value) {
return value + '%';
}
}
}
},
plugins: {
legend: {
display: false
}
}
}
});
// 所有分模型信源图表
${所有图表初始化代码}
</script>
</body>
</html>
`;
// 7. 返回HTML给网页预览组件
return {
html: html
};
}第四步:加预览组件
- 从左侧「工具」组件库或直接点击画布上的"+",插入「网页预览」节点。
- 类型选HTML。
- HTML代码那里,先输入一个“/”,就会弹出下拉框,然后选html。

删掉「回复」组件。
搞定!现在点右上角的「运行」,就能用了。

03 我踩过的坑,你们别再踩了
- 文件名千万别瞎改:GEO监测卫士导出的txt文件名是自动生成的,比如Deepseek2026-W22.txt,改了大模型会识别不出来
- 代码一个字都别动:所有格式、计算逻辑我都调好了,改一个标点都可能崩
- 温度最好是0:不然大模型可能会自己发挥,改你的报告格式
- 等待时长:数据越多,流程运行时间越长,这个与选择的大模型性能相关,并不是智能体卡
04 常见问题
Q:我只上传了DeepSeek的txt,其他两个模型的分析会显示吗?
不会。工具会自动识别你传了几个文件,只显示有数据的部分。
Q:品牌名称怎么改成我的?
打开代码组件,找到第6行const 品牌名称 = "iPhone";,把引号里的iPhone改成你的品牌名就行,其他地方别动。
Q:以后想加文心一言、通义千问怎么办?
在大模型提取指令里加上对应的模型名,然后在代码里改一下模型列表就行,很简单。
最后说一下,2025年我做GEO的时候,6个大模型、几十个问题,我自己人肉去提问、分析,一套流程下来真的要耗费6-7个小时,现在我花在这上面的时间不到10分钟,都是自动化的,我只需要看最后的报告,制定接下来优化策略就可以了。
对了,GEO优化策略最有帮助的就是发文章,现在发文章我们市场部也做了一个智能体,下一期分享给大家。
如果搭建过程中遇到任何问题,或者需要我帮你生成专属的代码版本,直接在评论区留言就行。
实在智能,用实在的AI,帮你少加班,多赚钱。
0人点赞
后可进行评论



