我的网站如何在 ChatGPT 搜索中排名第一(你的也可以)
Source: Dev.to
我并没有刻意去在 ChatGPT 上排名。我只是做了一个作品集,推送到 GitHub,然后继续别的事。
后来有人给我发消息:
“兄弟,你的模板在我向 ChatGPT 询问 Next.js 作品集模板时,总是第一个出现。”
我以为他们在开玩笑——直到我自己尝试了一下。
我的作品集模板在 ChatGPT 搜索中,针对 “best Next.js portfolio template GitHub”(最佳 Next.js 作品集模板 GitHub)是 #1 结果。没有广告,没有外链推广,也没有 SEO 机构的介入。
于是我做了每个好奇的开发者都会做的事:我 逆向工程 了原因。
结果发现,我不小心踩中了所谓的 AEO(Answer Engine Optimization,答案引擎优化)和 GEO(Generative Engine Optimization,生成式引擎优化)。
下面是我学到的全部内容。
TL;DR(如果你想要操作手册)
- 添加 JSON‑LD schema,让 AI 能理解你站点的“谁/什么”。
- 设置元数据,使爬虫能够 读取 + 复用 你的内容(在合理范围内)。
- 编写 具体、可验证 的内容(实体 + 数字 + 链接)。
- 保持站点 可爬取(站点地图 + robots + 清晰结构)。
游戏已改变(大多数开发者错过了)
Google 不再是唯一的搜索引擎。
ChatGPT、Perplexity、Claude……它们不仅是聊天机器人;它们是 搜索引擎。
重要的转变不是数字,而是 行为转变:人们 向 AI 提问,而不是 输入 关键词。
AI 搜索的工作原理
| 传统 SEO | AEO / GEO |
|---|---|
| 根据反向链接、域名权威、关键词对链接进行排名。 | 检索 并引用 信息。需要 理解 你的内容,而不仅仅是索引它。 |
| 问题:“我该如何获得更高排名?” | 问题:“我该如何成为答案?” |
巨大的差异。
Source: …
秘密武器:JSON‑LD 架构
让我的作品集对 AI “可见”的首要因素是 结构化数据,尤其是 JSON‑LD 标记。
示例 Schema(添加到 app/(root)/page.tsx)
// app/(root)/page.tsx
const personSchema = {
"@context": "https://schema.org",
"@type": "Person",
name: "Naman Barkiya",
url: "https://nbarkiya.xyz",
image: "https://res.cloudinary.com/.../og-image.png",
jobTitle: "Applied AI Engineer",
sameAs: [
"https://github.com/namanbarkiya",
"https://x.com/namanbarkiya",
],
};
const softwareSchema = {
"@context": "https://schema.org",
"@type": "SoftwareApplication",
name: "Next.js Portfolio Template",
applicationCategory: "DeveloperApplication",
operatingSystem: "Web",
offers: {
"@type": "Offer",
price: "0",
priceCurrency: "USD",
},
author: {
"@type": "Person",
name: "Naman Barkiya",
url: "https://nbarkiya.xyz",
},
};
为什么有效
当爬虫访问页面时,它会看到明确的 结构化数据,其中说明:
- “这是一个名为 Naman Barkiya 的 Person(人物)”
- “他的职业是 Applied AI Engineer(应用人工智能工程师)”
- “他与这些 GitHub 和 X 个人资料相同”
- “他 创作 了这个软件应用”
AI 正是通过这些信息构建知识图谱,从而能够被引用。
您应该了解的模式类型
| 模式类型 | 使用场景 |
|---|---|
Person | 个人作品集、关于页面 |
Organization | 公司网站 |
SoftwareApplication | 开发工具、应用、模板 |
Article | 博客文章、教程 |
FAQPage | 问答栏目 |
HowTo | 步骤指南 |
改变一切的那行代码
大多数网站对 AI 搜索不可见——不是因为内容不好,而是爬虫通常只抓取 摘要。
解决办法就在你的 app/layout.tsx 元数据中:
// app/layout.tsx
export const metadata = {
// ... other metadata
robots: {
index: true,
follow: true,
googleBot: {
index: true,
follow: true,
"max-image-preview": "large",
"max-snippet": -1, // ← This is the magic line
},
},
};
max-snippet: -1
“你可以随意使用我的全部内容。”
该指令在 Google(googleBot)中被广泛认可,并受到其他多个爬虫的尊重。使用 -1,AI 可以引用你的 整页内容。小小的改动,巨大的影响。
实际重要的元数据
Below is my full metadata setup (Next.js 13+ style):
export const metadata = {
metadataBase: new URL("https://nbarkiya.xyz"),
title: {
default: "Naman Barkiya - Applied AI Engineer",
template: "%s | Naman Barkiya - Applied AI Engineer",
},
description:
"Naman Barkiya - Applied AI Engineer working at the intersection of AI, data, and scalable software systems.",
keywords: [
"Naman Barkiya",
"Applied AI Engineer",
"Next.js Developer",
"XYZ Inc",
"Databricks",
// …more keywords
],
authors: [
{
name: "Naman Barkiya",
url: "https://nbarkiya.xyz",
},
],
alternates: {
canonical: "https://nbarkiya.xyz",
},
openGraph: {
type: "website",
locale: "en_US",
url: "https://nbarkiya.xyz",
title: "Naman Barkiya - Applied AI Engineer",
description: "Applied AI Engineer working at...",
siteName: "Naman Barkiya - Applied AI Engineer",
images: [
{
url: "https://res.cloudinary.com/.../og-image.png",
width: 1200,
height: 630,
alt: "Naman Barkiya - Applied AI Engineer",
},
],
},
robots: {
index: true,
follow: true,
googleBot: {
"max-snippet": -1,
"max-image-preview": "large",
},
},
};
要点
- 添加 JSON‑LD,让 AI 能识别你希望它识别的实体。
- 使用
max-snippet: -1向爬虫公开完整内容。 - 提供丰富的元数据(Open Graph、关键词、作者等),让 AI 能自信地复用你的数据。
- 保持站点可被爬取(站点地图、简洁 URL、正确的 robots.txt)。
实施这些步骤后,你的页面将更有可能成为 答案本身,而不仅仅是另一个链接。祝优化顺利!
进入全屏模式
退出全屏模式
注意到模式了吗?
我在各处重复 “Naman Barkiya” + “Applied AI Engineer”:
title.defaultdescriptionkeywordsauthorsopenGraph.titleopenGraph.siteName
这不是关键词堆砌,而是 实体强化。
AI 需要在多个信号中看到对同一实体的一致描述,以建立对它“了解”你的信心。
编写 AI 真正能使用的内容
大多数人忽视的一点:
AI 不相信模糊的说法。
这不会让你被引用
❌ “参与过各种网页开发项目”
❌ “经验丰富的软件工程师”
❌ “构建了许多应用”
这会
✅ “在 XYZ 为全球交易员打造了客户仪表盘”
✅ “将 API 响应时间降低了 30 %”
✅ “将平台规模扩展至每日 3,000+ 用户”
AI 模型被训练用于识别:
- 命名实体(XYZ、Databricks、Next.js)
- 量化结果(30 %、3,000 用户、首月)
- 可验证链接(公司网址、GitHub 仓库)
我如何组织我的经验数据
// config/experience.ts
{
id: "xyz",
position: "Software Development Engineer",
company: "XYZ",
location: "Mumbai, India",
startDate: new Date("2024-08-01"),
endDate: "Present",
achievements: [
"Shipped production features within the first month for a trader‑facing P&L dashboard",
"Won XYZ AI Venture Challenge by building data transformation pipelines",
"Led a 12‑member team in an internal hackathon",
],
companyUrl: "https://www.xyz.com",
skills: ["Typescript", "React", "Databricks", "Python"],
}
每一项声明都是:
- 具体的(而非模糊)
- 量化的(尽可能)
- 可验证的(包含公司网址)
技术基础
网站地图
// app/sitemap.ts
import { MetadataRoute } from "next";
export default function sitemap(): MetadataRoute.Sitemap {
return [
{
url: "https://nbarkiya.xyz",
lastModified: new Date(),
changeFrequency: "monthly",
priority: 1.0,
},
{
url: "https://nbarkiya.xyz/projects",
lastModified: new Date(),
changeFrequency: "monthly",
priority: 0.8,
},
// ... more routes
];
}
Robots.txt
User-agent: *
Allow: /
Sitemap: https://nbarkiya.xyz/sitemap.xml
简单。开放。可爬取。
完整检查清单
架构与结构化数据
- 首页使用 JSON‑LD
Person架构 - 为你的内容类型添加额外架构(
SoftwareApplication、Article等)
元数据
- 在 robots 配置中使用
max-snippet: -1 - 每个页面都有规范化 URL(canonical URL)
-
authors字段包含姓名和 URL - 实体丰富的描述
内容
- 具体且量化的成就
- 命名实体(公司、工具、技术)
- 外部验证链接
- 语义化 HTML(正确的标题层级、列表)
技术
- 动态站点地图
- 开放的
robots.txt - 快速的页面加载(AI 爬虫也有超时限制)
最后思考
搜索的未来是 AI‑优先。
Google 仍然在,但它不再是唯一的竞争者。如果你的内容无法被大型语言模型(LLM)理解,你就会对日益增长的互联网用户群体变得隐形。
好消息是? 这并不难解决。
- 添加 schema 标记。
- 开放你的摘要(snippets)。
- 编写具体且可验证的内容。
就这样。这就是全部攻略。
我已将我的完整作品集模板开源。你可以看到所有实现:
github.com/namanbarkiya/minimal-next-portfolio
Fork 它。使用它。让它成为你的。
也许有一天,我会让 ChatGPT 为我生成作品集模板,并看到你的网站位列 #1。那会很酷。