你花了一个月用 Cursor 做了个产品,部署到 Vercel,域名配好了,朋友们说"真不错"。然后呢?你在 Google 搜自己的域名,一片空白。这是每个独立开发者的噩梦:产品上线了,但搜索引擎不知道你存在。不被收录 = 没有自然流量 = 没有客户 = 没有收入。
这篇教程记录我如何在 2026 年 4 月 20-23 日这 72 小时内,把 onepersoncompany.one 从"完全搜不到"推到"Google 已收录、Bing 已验证、百度已推送"的完整实战流程。全程代码可抄,命令可粘贴。
为什么 SEO 对一人公司特别重要?
买广告需要预算。社交媒体需要持续产出。SEO 是唯一的"一次投入、长期被动收益"的获客渠道。Pieter Levels 的 Nomad List 每月 30 万自然搜索访客,90% 来自 Google;ShipFast 的 Marc Lou 做了 SEO 之后收入从 $5K MRR 翻到 $50K MRR。这不是魔法,是基础建设。
🚨 第 0 步:先诊断,不要盲目优化
大多数独立开发者做 SEO 的第一个错是:听说"加 meta tag"就加,听说"提交 sitemap"就提交。实际上你得先知道为什么搜不到。用 3 个命令一次性扫清:
诊断命令
# 1. 检查 robots.txt
curl -s https://你的域名.com/robots.txt
# 2. 检查 sitemap
curl -s https://你的域名.com/sitemap.xml
# 3. 看首页 HTML 是否有 noindex 陷阱
curl -s https://你的域名.com | grep -oE "(noindex|robots)"
我第一次跑这三条命令,结果震惊:
- ❌
robots.txt返回的是 404 HTML 页面 - ❌
sitemap.xml也是 404 - ❌ 首页 HTML 里居然有
<meta name="robots" content="noindex">—— 主动告诉搜索引擎不要收录我
这就是为什么 一个月都没被收录。Next.js 默认在某些 fallback 路径会注入 noindex,必须显式覆盖。很多独立开发者的网站都有这个隐藏陷阱。
🏗 第 1 步:SEO 基础设施的 3 个文件
Next.js 13+ 的 App Router 下,搜索引擎识别一个站点需要三个关键文件,缺一不可:
| 文件 | 作用 | 放哪 |
|---|---|---|
| layout.tsx metadata | 声明 title/description/robots/canonical/OG | src/app/layout.tsx |
| robots.ts | 告诉爬虫哪些能爬哪些不能 | src/app/robots.ts(Next.js 自动生成 /robots.txt) |
| sitemap.ts | 给爬虫一份 URL 清单 | src/app/sitemap.ts(自动生成 /sitemap.xml) |
关键修复:显式声明 robots
在 src/app/layout.tsx 的 metadata 里,必须手动写 robots,否则 Next.js 可能给你默认 noindex:
export const metadata: Metadata = {
metadataBase: new URL('https://onepersoncompany.one'),
title: { default: '一人公司 AI工具导航', template: '%s | One Person Company' },
description: '...',
robots: {
index: true,
follow: true,
googleBot: { index: true, follow: true, 'max-image-preview': 'large' },
},
}
robots.ts — 允许 AI 爬虫很关键
2026 年的 SEO 不能只考虑 Google/Bing/百度。被 ChatGPT / Claude / Perplexity 引用 = 新的流量来源。显式允许这些 AI 爬虫:
// src/app/robots.ts
import type { MetadataRoute } from 'next'
export default function robots(): MetadataRoute.Robots {
return {
rules: [
{ userAgent: '*', allow: '/', disallow: ['/admin', '/api/'] },
{ userAgent: 'GPTBot', allow: '/' }, // OpenAI/ChatGPT
{ userAgent: 'ClaudeBot', allow: '/' }, // Anthropic/Claude
{ userAgent: 'PerplexityBot', allow: '/' }, // Perplexity
{ userAgent: 'Google-Extended', allow: '/' }, // Gemini
],
sitemap: 'https://onepersoncompany.one/sitemap.xml',
}
}
sitemap.ts — 带权重的页面清单
// src/app/sitemap.ts
export default function sitemap(): MetadataRoute.Sitemap {
const now = new Date()
return [
{ url: 'https://site.com/', lastModified: now, changeFrequency: 'weekly', priority: 1.0 },
{ url: 'https://site.com/nav', lastModified: now, changeFrequency: 'weekly', priority: 0.9 },
{ url: 'https://site.com/tutorials', lastModified: now, changeFrequency: 'weekly', priority: 0.8 },
]
}
🌐 第 2 步:Google Search Console(免费最强武器)
基础设施就绪后,去 search.google.com/search-console 添加站点。如果你用 Vercel 部署 + 登录 GSC 用的是同一个 Google 账号,GSC 会自动验证所有权,跳过 meta tag 这一步。这是 Vercel 和 Google 的深度集成,绝大多数独立开发者不知道。
验证通过后必做 3 件事:
- Sitemaps → 提交
sitemap.xml(不是完整 URL,就填这 12 个字符) - URL 检查 → 粘贴首页 URL → 点 请求编入索引(当天就会被爬虫来爬)
- 重复上一步对 2-3 个关键页面(/nav, /tutorials 等)。每天有 10 次配额
我的真实时间线:4月23日上午在 GSC 提交 sitemap + 请求索引,当天下午 Google 就显示"网址已收录到 Google"。从"完全搜不到"到"已索引"总计 6 小时。
🅿️ 第 3 步:百度收录(中文流量必做)
百度完全独立于 Google。如果你的用户有 30% 以上是中文用户,必须单独搞百度。流程比 Google 繁琐:
百度三步走
- 1️⃣ 去 ziyuan.baidu.com 注册,站点管理 → 添加网站
- 2️⃣ 选 HTML 标签验证,拿到
<meta name="baidu-site-verification" content="codeva-xxx"> - 3️⃣ 把 content 值加到 Next.js metadata.verification.other,部署后回百度点"完成验证"
- 4️⃣ 验证通过后进 搜索服务 → 普通收录,拿到推送 token
重要坑:www vs 裸域
百度把 https://你的域名.com 和 https://www.你的域名.com 当作两个不同的站。如果你两个都能访问(没做 301 跳转),两边都要添加,否则只收录一边。
Next.js metadata 支持同一个 name 的多个 meta tag,用数组:
verification: {
other: {
'baidu-site-verification': ['codeva-code1', 'codeva-code2'], // www + apex
'msvalidate.01': 'your-bing-code',
},
}
百度推送 API 的致命坑
百度的 URL 推送接口长这样:
http://data.zz.baidu.com/urls?site=YOUR_SITE&token=YOUR_TOKEN
几乎所有教程都会告诉你 encodeURIComponent 一下 URL 参数。对百度这是错的。百度 API 不接受 URL 编码过的 site 参数,会返回 site init fail。正确写法:
// ❌ 错:百度 API 会返回 site init fail
fetch(`http://data.zz.baidu.com/urls?site=${encodeURIComponent(SITE)}&token=${TOKEN}`)
// ✅ 对:原样传
fetch(`http://data.zz.baidu.com/urls?site=${SITE}&token=${TOKEN}`, {
method: 'POST',
headers: { 'Content-Type': 'text/plain' },
body: urls.join('\n'), // 每行一个 URL
})
我在这个 bug 上浪费了 20 分钟。成功后返回:{ success: 8, remain: 0 } — 8 个 URL 全部接收,今日配额用完。
🚀 第 4 步:IndexNow(一次搞定 Bing/Yandex/Seznam)
IndexNow 是 Microsoft + Yandex 主推的协议:一次 POST 推送,同时通知 Bing、Yandex、Seznam、Naver 等所有参与搜索引擎。Google 没加入(Google 不会),但这对非 Google 流量来源是王牌。
4.1 生成密钥文件
# 生成 32 位 key(去掉连字符)
KEY=$(uuidgen | tr -d '-' | tr '[:upper:]' '[:lower:]')
echo $KEY
# 把 key 自己作为内容放到 public/
echo -n "$KEY" > public/$KEY.txt
部署后验证:curl https://你的域名.com/$KEY.txt 必须返回 200 并显示 key 本身。
4.2 推送 URL
await fetch('https://api.indexnow.org/IndexNow', {
method: 'POST',
headers: { 'Content-Type': 'application/json; charset=utf-8' },
body: JSON.stringify({
host: 'onepersoncompany.one',
key: KEY,
keyLocation: `https://onepersoncompany.one/${KEY}.txt`,
urlList: ['https://...', 'https://...']
})
}) // 预期 202 Accepted
📋 第 5 步:一键推送脚本(最爽的部分)
把上面所有 API 整合成一个 npm 脚本,以后每次更新内容跑 npm run push-seo,自动通知所有引擎。完整脚本放 scripts/push-search-engines.ts:
const SITE_URL = 'https://onepersoncompany.one'
const INDEXNOW_KEY = '你的32位key'
async function main() {
const urls = [
`${SITE_URL}/`,
`${SITE_URL}/nav`,
`${SITE_URL}/tutorials`,
// ... 其他页面
]
await Promise.all([
pushIndexNow(urls), // Bing + Yandex + Seznam
pushBaidu(urls), // 百度
])
}
在 package.json 加:"push-seo": "tsx scripts/push-search-engines.ts"
🏷 第 6 步:JSON-LD 结构化数据
结构化数据告诉 Google "这个页面是什么",让搜索结果变得更漂亮(品牌名、搜索框、评分等富片段)。2 个必做:
Organization Schema
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "Organization",
"name": "One Person Company",
"url": "https://onepersoncompany.one",
"logo": "https://onepersoncompany.one/favicon.svg"
}
</script>
WebSite Schema(含站内搜索框)
给 Google 加 SearchAction,让它在搜索结果里直接显示你的站内搜索框(暴涨点击率):
{
"@type": "WebSite",
"potentialAction": {
"@type": "SearchAction",
"target": "https://你.com/nav?q={search_term_string}",
"query-input": "required name=search_term_string"
}
}
📊 第 7 步:24 小时后的验证
部署并提交后,如何知道到底成不成?用这套自检命令:
# 1. 基础设施自检
curl -s https://你.com/robots.txt | head -5 # 应看到 User-Agent: *
curl -s https://你.com/sitemap.xml | head -5 # 应看到 <?xml
curl -s https://你.com/ | grep -oE 'noindex|content="index' # 只应有 "index"
# 2. Google 收录自检
# 浏览器搜: site:你.com # 应有结果
# 3. 结构化数据自检
# https://search.google.com/test/rich-results # 贴你的 URL
⏰ 预期时间线(亲测)
| 平台 | 搜 site: 收录时间 | 搜关键词可搜到 |
|---|---|---|
| 当天或次日(GSC 手动请求后) | 1-2 周 | |
| Bing | 3-5 天(IndexNow 加速) | 1-2 周 |
| 百度 | 3-7 天(推送过 token) | 2-4 周 |
| DuckDuckGo | 3-5 天(用 Bing 数据) | 1-2 周 |
| Yandex | 3-7 天(IndexNow 推过) | 2-3 周 |
| Perplexity AI | 1-2 周 | 2-3 周 |
| ChatGPT 联网 | 2-3 周(跟 Bing) | 3-4 周 |
| Claude 联网 | 2-4 周 | 1 个月+ |
💰 为什么这对一人公司直接等于钱
SEO 不是技术炫技,它是独立开发者唯一能规模化的免费流量渠道。算个账:
- 付费广告:Google Ads CPC 约 $1-5,要 1000 访客花 $2000+
- 社交媒体:需要每周持续产出,时间成本高
- SEO:一次做对基础设施,半年后每月 5000-30000 自然流量,成本趋近于零
Pieter Levels 的 Nomad List 每月 30 万自然访客,90% 来自 Google 搜索 "digital nomad cities"、"best cities to work remotely"。这些流量 $0 成本,年收入 $3M+。秘诀不是什么黑帽,就是这篇教程里的基础建设 + 持续内容更新。
独立开发者最大的 SEO 误区:以为 SEO 是内容营销的后期优化。真相是:SEO 是第一天部署就要做的基础建设。你搭建 robots / sitemap / schema 的那一天,决定了你 6 个月后有没有流量。
🎯 你现在应该做的 3 件事(按优先级)
- 1. 立刻跑诊断命令看看你的网站有没有 noindex / 缺 robots 的陷阱
- 2. 今天注册 Google Search Console + 百度资源平台,走一遍本教程流程
- 3. 把 push-seo 脚本加到你的项目,以后每次发新内容前跑一次
📚 延伸阅读
- 公开构建 + 内容营销完整指南 — SEO 的下一步是持续内容
- 独立 SaaS 从 0 到 100 用户 — SEO 带来的第一波用户怎么转化
- AI 工具导航 — 写内容的 AI 工具精选
💬 有问题找我
这套流程跑完如果还搜不到你,或者卡在某一步,加我微信 LIR--3point14 直接聊。我自己用这套流程做的这个站,从部署到被 Google 收录 72 小时,亲测有效。