关于 keyword-research
keyword-research 是用于规划 Google Ads 关键词覆盖的 Agent Skills™ 技能,支持扩展种子词、按意图分组和选择匹配类型,并从搜索词数据中发现否定关键词。
主要功能
- 01扩展种子关键词
- 02挖掘竞品与搜索词
- 03按意图分组关键词
- 04推荐关键词匹配类型
- 05管理分层否定关键词列表
适用场景
- 01从种子词制定关键词策略
- 02发现长尾词和竞品词缺口
- 03为广告系列选择匹配类型
- 04减少无关搜索词带来的支出
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ itallstartedwithaidea/ agent-skills --skill keyword-research安装后在 Claude Code 中输入/keyword-research确认已加载。
详细介绍
关键词研究
Agent Skills™ 的一部分,由 googleadsagent.ai™ 提供
描述
关键词研究技能为 Google Ads 广告系列中的关键词发现、拓展和优化提供系统化方法。从种子关键词出发,通过多种拓展途径构建全面的关键词集合,包括语义变体、竞品关键词挖掘、搜索字词报告分析、长尾关键词发现和基于意图的分组。最终形成结构化的关键词策略,在最大限度覆盖相关关键词的同时,尽量减少无效支出。
匹配类型的选择是关键环节。该技能会根据转化概率、搜索量、竞争强度和每次点击费用效益评估每个关键词,并推荐最优匹配类型。广泛匹配关键词与智能出价策略配合使用,词组匹配用于捕捉高意向变体,而完全匹配则锁定经过验证的转化关键词。该技能会根据搜索字词报告的反馈循环持续优化匹配类型分配。
否定关键词管理同样重要。该技能会挖掘搜索字词报告中的不相关查询,构建分层否定关键词列表(账户级、广告系列级、广告组级),并在各广告系列之间维护共享的否定关键词列表。主动发现否定关键词,可以通过识别各行业的常见不相关查询模式,在预算浪费发生之前加以预防。
适用场景
- 用户询问“关键词研究”或“关键词创意”
- 用户想要“拓展关键词”或“寻找新关键词”
- 用户提到“否定关键词”或“搜索字词挖掘”
- 用户询问“匹配类型”(广泛匹配、词组匹配、完全匹配)
- 用户想要减少无关查询造成的“无效支出”
- 用户要求“构建关键词列表”或制定“关键词策略”
- 用户提到“关键词分组”或“广告组结构”
- 用户想要“长尾关键词”或“低竞争关键词”
- 用户要求“分析搜索字词”或“挖掘查询词”
架构
flowchart TD
A[Seed Keywords] --> B[Expansion Engine]
B --> C[Semantic Expansion]
B --> D[Competitor Mining]
B --> E[Search Term Report]
B --> F[Long-Tail Discovery]
B --> G[Question Queries]
C --> H[Raw Keyword Universe]
D --> H
E --> H
F --> H
G --> H
H --> I[Deduplication & Normalization]
I --> J[Intent Classification]
J --> K[Informational]
J --> L[Commercial]
J --> M[Transactional]
J --> N[Navigational]
L --> O[Match Type Assignment]
M --> O
N --> O
K --> P[Negative Keyword Candidates]
O --> Q[Keyword Grouping Engine]
Q --> R[Themed Ad Groups]
P --> S[Negative Keyword Lists]
S --> T[Account-Level Negatives]
S --> U[Campaign-Level Negatives]
S --> V[Ad Group-Level Negatives]
R --> W[Final Keyword Strategy]
T --> W
U --> W
V --> W
实现
关键词拓展和匹配类型分配引擎:
const MATCH_TYPES = {
BROAD: 'BROAD',
PHRASE: 'PHRASE',
EXACT: 'EXACT'
};
const INTENT_CATEGORIES = ['informational', 'commercial', 'transactional', 'navigational'];
async function expandKeywords(seedKeywords, config) {
const { customerId, industry, maxKeywords = 500 } = config;
const expansionResults = await Promise.all([
semanticExpansion(seedKeywords),
competitorKeywordMining(seedKeywords, industry),
searchTermReportMining(customerId),
longTailDiscovery(seedKeywords),
questionQueryExpansion(seedKeywords)
]);
const rawKeywords = deduplicateAndNormalize(expansionResults.flat());
const classifiedKeywords = rawKeywords.map(kw => ({
...kw,
intent: classifyIntent(kw.text),
suggestedMatchType: assignMatchType(kw)
}));
return classifiedKeywords.slice(0, maxKeywords);
}
function assignMatchType(keyword) {
if (keyword.conversionRate > 0.05 && keyword.volume < 1000) {
return MATCH_TYPES.EXACT;
}
if (keyword.intent === 'transactional' && keyword.wordCount >= 3) {
return MATCH_TYPES.PHRASE;
}
if (keyword.volume > 5000 && keyword.competitorPresence) {
return MATCH_TYPES.BROAD;
}
return MATCH_TYPES.PHRASE;
}
function classifyIntent(keywordText) {
const transactionalSignals = ['buy', 'order', 'purchase', 'price', 'cost', 'cheap', 'deal', 'discount', 'coupon', 'hire', 'book'];
const commercialSignals = ['best', 'top', 'review', 'compare', 'vs', 'alternative', 'recommended'];
const informationalSignals = ['how', 'what', 'why', 'when', 'guide', 'tutorial', 'tips'];
const text = keywordText.toLowerCase();
if (transactionalSignals.some(s => text.includes(s))) return 'transactional';
if (commercialSignals.some(s => text.includes(s))) return 'commercial';
if (informationalSignals.some(s => text.includes(s))) return 'informational';
return 'commercial';
}
否定关键词挖掘和列表管理:
async function mineNegativeKeywords(customerId, lookbackDays = 30) {
const searchTerms = await getSearchTermReport(customerId, lookbackDays);
const negatives = searchTerms.filter(term => {
const hasClicks = term.clicks > 0;
const noConversions = term.conversions === 0;
const highSpend = term.costMicros > 5000000;
const lowCTR = term.ctr < 0.01;
const irrelevantIntent = term.classifiedIntent === 'informational';
return hasClicks && noConversions && (highSpend || lowCTR || irrelevantIntent);
});
return categorizeNegatives(negatives);
}
function buildNegativeKeywordLists(negatives) {
return {
accountLevel: negatives.filter(n => n.universallyIrrelevant),
campaignLevel: groupBy(negatives.filter(n => n.campaignSpecific), 'campaignId'),
adGroupLevel: groupBy(negatives.filter(n => n.adGroupSpecific), 'adGroupId'),
sharedLists: buildSharedLists(negatives)
};
}
function groupKeywordsIntoAdGroups(keywords, maxPerGroup = 20) {
const groups = [];
const themes = extractThemes(keywords);
for (const theme of themes) {
const themeKeywords = keywords.filter(kw => kw.theme === theme.id);
if (themeKeywords.length <= maxPerGroup) {
groups.push({ theme: theme.name, keywords: themeKeywords });
} else {
const subGroups = splitBySubTheme(themeKeywords, maxPerGroup);
groups.push(...subGroups);
}
}
return groups;
}
与 Buddy™ Agent 的集成
关键词研究技能是 Buddy™ Agent 中的战略基础。用户连接账户后,Buddy™ 会立即分析现有关键词覆盖情况并识别拓展机会。该技能在后台持续运行,监控搜索字词报告,发现新兴查询模式和新的否定关键词候选项。
Buddy™ 通过交互式界面展示关键词建议,用户可以在应用建议之前批准、修改或拒绝。获批的关键词会流入相应的广告系列,并根据预测效果预先配置匹配类型和出价。否定关键词会自动分类并应用到正确的层级。
该技能会与竞品分析技能交叉比对,找出竞品正在获取而账户尚未覆盖的关键词空缺,并将结果提供给广告文案生成技能,确保新关键词都有相应的广告文案。
最佳实践
- 从 5-10 个核心种子关键词开始,这些关键词应代表您价值最高的产品或服务
- 按意图和主题对关键词分组,建立主题明确且紧密的广告组,每组包含 10-20 个关键词
- 对已证明转化率较高的词使用完全匹配,以保持出价精准
- 将广泛匹配专门与智能出价策略(目标 CPA、目标 ROAS)搭配使用
- 每周查看搜索字词报告,并及时添加否定关键词,避免浪费的支出不断累积
- 为普遍不相关的词(工作、免费、DIY)创建共享否定关键词列表
- 纳入长尾关键词(3 个或更多词),以覆盖具体且意图明确的搜索
- 监控关键词质量得分,并暂停得分持续低于 4 的关键词
- 使用广告系列级否定关键词,避免不同广告系列之间的关键词蚕食
- 每季度重新进行关键词拓展,以覆盖季节性和热门搜索
平台兼容性
| 平台 | 支持 |
|---|---|
| Claude Code | ✅ |
| Cursor | ✅ |
| Codex | ✅ |
| Gemini | ✅ |
相关技能
- 广告文案生成 - 新关键词需要相应的广告文案,并确保关键词与广告相匹配
- 竞争对手分析 - 竞争对手的关键词差距可揭示拓展机会
- 质量得分优化 - 关键词质量得分有助于指导匹配类型和广告组重组决策
- 知识库注入 - 领域知识模式可支持自动化关键词意图分类
关键词
关键词研究、关键词拓展、否定关键词、匹配类型优化、广泛匹配、词组匹配、完全匹配、搜索字词挖掘、关键词分组、广告组结构、长尾关键词、关键词意图、关键词策略、Google Ads 关键词、PPC 关键词
© 2026 googleadsagent.ai™ | Agent Skills™ | MIT License