Skip to main content

Command Palette

Search for a command to run...

⚙️ 02_Vercel 部署的項目如何才具備 SEO,如何配置

Published
•5 min read•View as Markdown

⏱️ 閱讀時間:5 分鐘
🎯 目標:完整的 SEO 配置清單,讓你的網站能被 Google 搜到


❌ 常見誤解

很多人以為...

❌ 錯誤觀念:
「我用 Vercel 部署了網站,就自動有 SEO 了」

✅ 事實:
Vercel 只提供「房子」(主機空間)
但 Google 還不知道你的「地址」

你需要:
  1. 告訴 Google 你在哪(提交網站)
  2. 掛上清楚的招牌(Meta Tags)
  3. 提供地圖(Sitemap)
  4. 寫好內容(關鍵字優化)

💡 【 SEO 配置 】快速重點:

必做(Priority 1):

  1. Meta Tags(每頁都要)

  2. Sitemap.xml

  3. Robots.txt

  4. Google Search Console

重要(Priority 2): 5. Open Graph 6. 圖片優化 7. 內部連結 8. 語意化 HTML

進階(Priority 3): 9. Schema.org 10. Canonical URL 11. 多語系

預估時間:

  • 第一次設定:2-3 小時

  • [AI 五分鐘即可]

如果你已透過步驟 4️⃣ 獲得 HTML,可使用以下這套提示詞:

請幫我完成 Google Search Console 的 SEO 配置:

1. 將 @{Google驗證檔案路徑} 放到 public/ 目錄
2. 檢查並建立/更新以下檔案:
   - app/sitemap.ts(網站地圖)
   - app/robots.ts(爬蟲規則)
   - app/layout.tsx 的 metadata(如果需要優化)
3. 完成後提供 git 提交命令

我的網站域名:{你的網址}

📋 完整配置清單

🎯 核心概念

讓網站被 Google 搜到需要 3 個步驟:

步驟 1: 讓 Google「找到」你
  → 提交網站給 Google Search Console
  → 生成 Sitemap.xml

步驟 2: 讓 Google「理解」你
  → 設定 Meta Tags(標題、描述)
  → 設定 Robots.txt
  → 優化圖片和連結

步驟 3: 讓 Google「推薦」你
  → 提供優質內容
  → 獲得反向連結
  → 持續更新

🔴 Priority 1:必做配置(沒有就完全沒 SEO)

1️⃣ Meta Tags(每個頁面都要有)

是什麼?
  → 網頁的「標題」和「簡介」
  → 出現在 Google 搜尋結果上
  → 影響點擊率

必須設定的 3 個:
  ├─ <title>      # 標題(最重要!)
  ├─ <meta name="description">  # 描述
  └─ <meta name="keywords">     # 關鍵字(可選)

📄 Next.js 14 設定方式(App Router)

位置:app/page.tsx(每個頁面都要設定)

// ✅ 正確範例
export const metadata = {
  title: '專案管理工具 | 免費線上協作平台',
  description: '提供免費的專案管理工具,支援團隊協作、任務追蹤、甘特圖,適合新創團隊使用。',
  keywords: ['專案管理', '協作工具', '免費工具', '團隊管理'],
}

// ❌ 錯誤範例
export const metadata = {
  title: '我的網站',  // 太籠統
  description: '',    // 空白
}

📐 撰寫規則

標題 (title):
  長度: 50-60 個字元
  格式: 主標題 | 副標題 | 品牌名
  範例: 
    ✅ 專案管理工具 | 免費線上協作平台 | MyApp
    ❌ 首頁

描述 (description):
  長度: 150-160 個字元
  內容: 說明這頁面是什麼、能解決什麼問題
  範例:
    ✅ 提供免費的專案管理工具,支援團隊協作、
       任務追蹤、甘特圖,適合新創團隊使用。
    ❌ 這是我的網站

關鍵字 (keywords):
  數量: 5-10 個
  選擇: 和頁面內容相關的詞
  範例: 專案管理、協作工具、免費工具

2️⃣ Sitemap.xml(網站地圖)

是什麼?
  → 告訴 Google 你有哪些頁面
  → 像一份「目錄清單」
  → 加速 Google 收錄

格式:
  網址/sitemap.xml
  範例: https://yoursite.com/sitemap.xml

📄 Next.js 14 生成方式

位置:app/sitemap.ts(新增此檔案)

// 動態生成 Sitemap
export default async function sitemap() {
  // 1. 靜態頁面
  const routes = ['', '/about', '/contact'].map((route) => ({
    url: `https://yoursite.com${route}`,
    lastModified: new Date().toISOString(),
    changeFrequency: 'monthly',
    priority: 1,
  }))

  // 2. 動態頁面(從資料庫抓)
  const projects = await getProjects() // 從 Supabase 抓專案列表
  const projectRoutes = projects.map((project) => ({
    url: `https://yoursite.com/projects/${project.id}`,
    lastModified: project.updated_at,
    changeFrequency: 'weekly',
    priority: 0.8,
  }))

  return [...routes, ...projectRoutes]
}

✅ 檢查方式

訪問 https://你的網址/sitemap.xml,應該看到 XML 格式的頁面列表


3️⃣ Robots.txt(爬蟲規則)

是什麼?
  → 告訴 Google 哪些頁面可以爬、哪些不行
  → 避免敏感頁面被收錄(如管理後台)

格式:
  網址/robots.txt
  範例: https://yoursite.com/robots.txt

📄 Next.js 14 生成方式

位置:app/robots.ts(新增此檔案)

export default function robots() {
  return {
    rules: [
      {
        userAgent: '*',  // 所有爬蟲
        allow: '/',      // 允許爬首頁
        disallow: [
          '/admin/',     // 禁止爬管理後台
          '/api/',       // 禁止爬 API
        ],
      },
    ],
    sitemap: 'https://yoursite.com/sitemap.xml',  // Sitemap 位置
  }
}

4️⃣ Google Search Console 註冊

是什麼?
  → Google 提供的官方工具
  → 手動「告訴」Google 你的網站存在
  → 追蹤搜尋表現

位置:
  https://search.google.com/search-console

📝 註冊步驟(詳細版在下一篇)

步驟 1: 前往 Google Search Console
步驟 2: 新增資源(輸入你的網址)
步驟 3: 驗證網站所有權
  → Vercel 用戶:選擇「HTML 檔案驗證」最簡單
  → 或使用「HTML 標籤驗證」
步驟 4: 提交 Sitemap
  → 輸入 sitemap.xml
步驟 5: 等待 Google 索引(3-7 天)

🟡 Priority 2:重要配置(大幅提升 SEO)

5️⃣ Open Graph Tags(社群分享優化)

用途:
  → 分享到 Facebook/Twitter 時的預覽圖和文字
  → 增加分享的點擊率

效果:
  ❌ 沒設定:只顯示網址
  ✅ 有設定:有標題、圖片、描述

📄 設定方式

// app/page.tsx
export const metadata = {
  title: '專案管理工具',
  description: '免費的專案管理平台',

  // Open Graph
  openGraph: {
    title: '專案管理工具 | 免費線上協作',
    description: '提供團隊協作、任務追蹤功能',
    url: 'https://yoursite.com',
    siteName: 'MyApp',
    images: [
      {
        url: 'https://yoursite.com/og-image.jpg',  // 預覽圖
        width: 1200,
        height: 630,
      },
    ],
    type: 'website',
  },

  // Twitter Card
  twitter: {
    card: 'summary_large_image',
    title: '專案管理工具',
    description: '免費的專案管理平台',
    images: ['https://yoursite.com/og-image.jpg'],
  },
}

6️⃣ 圖片優化

為什麼重要?
  → 圖片也能被 Google 搜到
  → 加快網站載入速度
  → Google 很重視速度

必做 3 件事:
  ├─ 加 alt 屬性(替代文字)
  ├─ 壓縮圖片
  └─ 使用 Next.js Image 元件

📄 Next.js Image 使用

// ❌ 錯誤(直接用 <img>)
<img src="/screenshot.png" />

// ✅ 正確(用 Next.js Image)
import Image from 'next/image'

<Image 
  src="/screenshot.png"
  alt="專案管理平台介面截圖 - 顯示任務列表和甘特圖"
  width={800}
  height={600}
  priority  // 首頁主圖設為優先載入
/>

📐 Alt 屬性撰寫規則

alt 文字要具體描述圖片內容:

❌ 不好:
  alt="圖片"
  alt="screenshot"
  alt=""

✅ 好:
  alt="專案管理平台介面 - 任務看板視圖"
  alt="團隊成員在使用協作工具進行會議"
  alt="甘特圖顯示專案時程和里程碑"

7️⃣ 內部連結

是什麼?
  → 你的網頁之間互相連結
  → 幫助 Google 爬蟲找到所有頁面

做法:
  ├─ 首頁連到各個功能頁
  ├─ 文章之間互相引用
  └─ 每個頁面都能從首頁到達

範例結構

首頁 (/)
  ├─ 連到「功能介紹」(/features)
  ├─ 連到「使用教學」(/guide)
  ├─ 連到「案例分享」(/cases)
  └─ 連到「關於我們」(/about)

每個頁面:
  └─ Footer 有完整導航連結

8️⃣ 語意化 HTML

用途:
  → 讓 Google 更容易理解你的內容結構

做法:
  ✅ 用正確的 HTML 標籤
  ❌ 不要全部都用 <div>

範例

<!-- ❌ 不好 -->
<div class="title">文章標題</div>
<div class="content">內容...</div>

<!-- ✅ 好 -->
<article>
  <h1>文章標題</h1>
  <p>第一段內容...</p>
  <p>第二段內容...</p>
  <section>
    <h2>小標題</h2>
    <p>段落內容...</p>
  </section>
</article>

🟢 Priority 3:進階配置(錦上添花)

9️⃣ Schema.org 結構化資料

告訴 Google 更詳細的資訊,可能出現「複合式搜尋結果」(有星星、評分)。 範例:文章(發布日期、作者)、產品(價格、評分)、活動(時間、地點)

🔟 Canonical URL

避免重複內容懲罰,告訴 Google 哪個是「正版」網址。 當同一內容有多個網址時使用。

1️⃣1️⃣ 多語系支持

如果有多語言版本,設定 hreflang 標籤告訴 Google 不同語言的對應頁面。


🔧 實際操作範例(專案管理平台)

首頁 Meta Tags 設定

// app/page.tsx
export const metadata = {
  title: '個人專案管理平台 | 追蹤你的所有專案',
  description: '管理個人專案、追蹤進度、記錄開發歷程。支援專案分類、狀態管理、圖片預覽等功能。',
  keywords: ['專案管理', '個人工具', '開發追蹤'],

  openGraph: {
    title: '個人專案管理平台',
    description: '追蹤你的所有專案,記錄開發歷程',
    url: 'https://9-25-personal-project-manager.vercel.app',
    images: ['/og-image.png'],
  },
}

Sitemap 設定

// app/sitemap.ts
export default async function sitemap() {
  const baseUrl = 'https://9-25-personal-project-manager.vercel.app'

  return [
    {
      url: baseUrl,
      lastModified: new Date(),
      changeFrequency: 'daily',
      priority: 1,
    },
    {
      url: `${baseUrl}/admin`,
      lastModified: new Date(),
      changeFrequency: 'weekly',
      priority: 0.5,
    },
  ]
}

Robots.txt 設定

// app/robots.ts
export default function robots() {
  return {
    rules: [
      {
        userAgent: '*',
        allow: '/',
        disallow: ['/admin/', '/api/'],
      },
    ],
    sitemap: 'https://9-25-personal-project-manager.vercel.app/sitemap.xml',
  }
}

🧪 驗證工具

檢查配置是否正確

Google 官方工具:

手動檢查: 訪問這些網址應該都能正常顯示:


⚠️ 常見錯誤

❌ 錯誤 1:只設定首頁的 Meta Tags

  • 每個頁面都要有獨立的 title 和 description

❌ 錯誤 2:Sitemap 沒有動態更新

  • 不要寫死網址,要從資料庫動態生成

❌ 錯誤 3:忘記提交給 Google

  • 配置完成後,一定要註冊 Search Console 並提交 Sitemap

❌ 錯誤 4:圖片沒有 alt 屬性

  • 所有圖片都要有具體描述的 alt 文字

❌ 錯誤 5:robots.txt 阻擋全部

  • 不要設定 Disallow: /,要正確設定允許和禁止的路徑

🚀 下一步

配置完成後,接下來要:

👉 下一篇:03_Google-Search-Console設定.md

  • 手把手教你註冊和設定

  • 驗證網站所有權

  • 提交 Sitemap 給 Google

  • 追蹤搜尋表現


更新日期:2024-11-07
適用對象:Vercel + Next.js 使用者

More from this blog

🎨Figma MCP 雙向編輯 [ TalkToFigma ]

用自然語言描述,AI 立即在 Figma 中創建設計 - 突破只讀限制的革命性工具 📋 目錄 這個工具能做什麼? 核心價值與效益 快速開始 完整安裝指南 實際應用範例 故障排除 重要提醒 延伸資源 這個工具能做什麼? 🎯 一句話總結 讓 Cursor AI 不只能讀取 Figma 設計,更能直接修改、創建和批量操作 Figma 元件。 ✨ 核心突破 Cursor 官方的 Figma MCP(Model Context Protocol)整合只提供單向讀取,這個開源工...

Nov 7, 20259 min read

🚀 Cursor 設置 RunPod MCP - 完整指南

透過 Model Context Protocol (MCP),讓 Cursor AI 直接管理你的 RunPod GPU 資源! 📋 目錄 什麼是 RunPod MCP? 安裝步驟 配置說明 功能清單 / 實際範例 / 使用技巧 ⚠️ 注意事項 / 🔧 故障排除 📚 延伸資源 什麼是 RunPod MCP? RunPod MCP 是一個讓 Cursor AI 能直接與 RunPod 平台互動的工具。透過它,你可以在 Cursor 聊天室中: 🖥️ 創建和管理 G...

Nov 7, 202510 min read

Whisper 語音轉文字-多方案對比結果

前言 本文檔對比三種使用 Whisper 進行語音轉文字的方式,包含速度、成本與實際使用建議。測試音訊為 56 分 27 秒(約 52 MB)的訪談錄音。 【 總結 】 追求速度與性價比平衡:RunPod RTX 4090 速度最快(75 秒) 成本合理($0.023/次) 無文件限制 適合:中高頻使用(>50 次/天) 零部署需求:Fireworks V3 Turbo API 呼叫即可使用 成本中等($0.051/次) 速度中等(100 秒) 適合:低頻使用(<50 次/...

Nov 7, 20254 min read

🔍 01_SEO 是甚麼,與 Google Ads 差異對比

💡 SEO 一句話解釋 SEO = 讓陌生人在 Google 搜尋關鍵字時,能找到你的網站,而且排在前面。 📱 實際案例:弱電通的例子 搜尋「弱電通」會出現什麼? ┌────────────────────────────────────────┐ │ 🔍 Google 搜尋:「弱電通」 │ ├────────────────────────────────────────┤ │ ...

Nov 7, 20254 min read

比利先生

12 posts

在此分享個人實際在開發中遇到的採坑事件,每件事情都是個人撞牆後耗費大量精力,才發現問題其實簡單;我把問題與結論彙總成對應的筆記提供大家參考。