| 7 | 可以做購物車嗎? | 可以串接第三方金流(綠界、Shopify),但建議有穩定訂單量再做 |
| 8 | 網站會被攻擊嗎? | 純靜態網站無資料庫,沒有 SQL injection 的入侵入口。CDN 自帶 DDoS 防護 |
| 9 | 跟你做跟找設計公司差在哪? | 快(5 天 vs 1 個月)、便宜(約 1/3 價格)、零月費、你自己能更新內容 |
| 10 | 以後換人做,網站可以拿走嗎? | 原始碼在 GitHub Private Repo,你可以隨時交接給下一位工程師 |
| 11 | FB 上 500 元就有人做,為什麼價差這麼大? | 500 元套版:無法自己改內容、手機版排版會暴走、Google 搜不到、沒有後台。你拿到的是:自己改內容的後台 + 手機完美 + Google 能搜 + 無月費 + 保固 |
| 12 | 做好了,怎麼讓更多人來看? | 三步驟:① 送 Search Console(我教你)② 網址放到 IG/LINE/FB 簡介 ③ 每週發一篇文。持續 3 個月就有穩定流量 |
| 13 | 我的聯絡表單真的會寄到嗎? | mailto 在手機上如果沒裝郵件軟體會失敗。建議加裝 Cloudflare Email Routing(免費),讓 info@你的網域 自動轉到你的 Gmail |
| 14 | 後台會被駭客攻擊嗎? | Git OAuth 登入 = 最高安全等級。可以在 Cloudflare WAF 加規則:後台路徑 /admin/* 限定台灣 IP,阻擋海外暴力嘗試 |
| 15 | 有人抄我的網站怎麼辦? | GitHub Private Repo → 原始碼不外洩。前端 HTML/CSS 瀏覽器一定看得到,但後台邏輯、內容管理系統是隱藏的 |
| 16 | 信箱要錢嗎?要不要另外買? | 不用。Cloudflare Email Routing 免費提供 info@你的網域,自動轉到你的 Gmail。專業信箱零月費 |
| 17 | 為什麼你的方案不用月費,其他公司都要收? | 傳統架站靠主機費/信箱費/維護費賺月費。我們用 Cloudflare 免費方案 + 靜態網站技術,全自動化。客戶只付一次建置費 + 每年網域費 NT$300-800 |
D.6 接案策略與收入評估
| 客戶類型 | 客源 | 單價 | 月接件數 | 月營收範圍 |
|---|---|---|---|---|
| 個人品牌 / 創作者 | FB 社團、IG、熟人轉介 | 2.5-5 萬 | 2-3 件 | 5-15 萬 |
| 微型科技企業 | 創業社群、Meet Taipei、朋友介紹 | 4-8 萬 | 1-2 件 | 4-16 萬 |
| 地方服務業 | Google 地圖、地方社群 | 1.5-3 萬 | 3-4 件 | 4.5-12 萬 |
| 專業服務者 | LinkedIn、產業聚會 | 3-6 萬 | 1-2 件 | 3-12 萬 |
關鍵是兩個累積型數字,不是月營收:
| 累積資產 | 說明 |
|---|---|
| 月維護費 | 每個案子 1,500-3,000/月,累積 10 個客戶 = 每月 1.5-3 萬被動收入 |
| 轉介率 | 客戶滿意 → 推薦朋友 → 零廣告費取得新客戶 |
可延伸服務金字塔
你現有能力可立刻包裝的加值服務:
| 層級 | 服務 | 定價 | 工時 | 說明 |
|---|---|---|---|---|
| 1 | Content 代寫 | NT$500-1,500/篇 | 30 分 | AI 生成 + 你潤稿 |
| 2 | 每季 SEO 報告 | NT$1,500-3,000/次 | 30 分 | Search Console + GA4 截圖,AI 產報告 |
| 3 | Google 商家代辦 | NT$1,500-3,000 | 20 分 | 申請 + 驗證 + 照片上傳 |
| 4 | LINE 官方帳號串接 | NT$1,000-2,000 | 15 分 | 網站加 LINE 按鈕,後台設 LINE ID 欄位 |
| 5 | 網站速度健檢 | NT$1,000/次 | 15 分 | Lighthouse 報告 + 建議 |
策略:基礎建置不賺大錢,靠這些輕量加值服務疊高每客戶營收。全部做完 5 項,每客戶額外營收 NT$5,000-11,500。
[[#table-of-contents|← 回目錄]]
附錄 E:自動化驗證腳本
交付給客戶前,跑完這四個腳本。一個指令 = 一份驗收報告。
E.1 dead link 檢查
# 安裝 lychee(一次性)
brew install lychee
# build 後掃描
npm run build
lychee dist/ --base https://你的網域 --no-progress --exclude "mailto:*"
綠色 = 正常,紅色 = 斷裂連結,要修。
E.2 Sitemap 驗證
DOMAIN="https://你的網域"
# 確認 sitemap-index 使用正確網域(非 localhost 或舊域名)
curl -s "$DOMAIN/sitemap-index.xml" | grep "$DOMAIN"
# 逐一檢查內頁 sitemap 可否訪問
curl -s "$DOMAIN/sitemap-index.xml" | grep -oP '(?<=<loc>)[^<]+' | while read url; do
code=$(curl -s -o /dev/null -w "%{http_code}" "$url")
if [ "$code" != "200" ]; then
echo "❌ $code $url"
else
echo "✅ $code $url"
fi
done
E.3 全頁面 curl 檢查
DOMAIN="https://你的網域"
# 從 src/pages/ 掃出所有頁面路徑,逐一 curl
for f in $(find src/pages -name "*.astro" -not -path "*/admin/*" | sort); do
path=$(echo "$f" | sed -E \
-e 's|src/pages||' \
-e 's|/index\.astro$|/|' \
-e 's|\.astro$|/|' \
-e 's|\[\.\.\.slug\]||' \
-e 's|\[slug\]|test-slug|')
[ "$path" = "/" ] && path="/"
code=$(curl -s -o /dev/null -w "%{http_code}" "${DOMAIN}${path}")
if [ "$code" != "200" ]; then
echo "❌ $code ${DOMAIN}${path}"
else
echo "✅ $code ${DOMAIN}${path}"
fi
done
E.4 一鍵審計(交付前最終檢查)
#!/bin/bash
# audit.sh — 交付客戶前最後檢查,一個指令跑完
DOMAIN="${1:-https://你的網域}"
PASS=0
FAIL=0
echo "=== 1/5 dead link 檢查 ==="
lychee dist/ --base "$DOMAIN" --no-progress --exclude "mailto:*" 2>/dev/null
[ $? -eq 0 ] && ((PASS++)) || ((FAIL++))
echo ""
echo "=== 2/5 Sitemap 網域檢查 ==="
curl -s "$DOMAIN/sitemap-index.xml" | grep -q "$DOMAIN"
[ $? -eq 0 ] && echo "✅ 網域正確" && ((PASS++)) || { echo "❌ Sitemap 網域錯誤"; ((FAIL++)); }
echo ""
echo "=== 3/5 dist/ 無 localhost 殘留 ==="
grep -rn "localhost" dist/ 2>/dev/null
[ $? -ne 0 ] && echo "✅ 無 localhost 殘留" && ((PASS++)) || { echo "❌ 發現 localhost 殘留"; ((FAIL++)); }
echo ""
echo "=== 4/5 dist/ 無舊 GitHub Pages 殘留 ==="
grep -rn "github\.io\|githubpages" dist/ 2>/dev/null
[ $? -ne 0 ] && echo "✅ 無舊 GitHub Pages 殘留" && ((PASS++)) || { echo "❌ 發現舊 GitHub Pages 殘留"; ((FAIL++)); }
echo ""
echo "=== 5/5 全頁面 200 檢查 ==="
for f in $(find src/pages -name "*.astro" -not -path "*/admin/*" | sort); do
path=$(echo "$f" | sed -E -e 's|src/pages||' -e 's|/index\.astro$|/|' -e 's|\.astro$|/|' -e 's|\[\.\.\.slug\]||' -e 's|\[slug\]|test-slug|')
[ "$path" = "/" ] && path="/"
code=$(curl -s -o /dev/null -w "%{http_code}" "${DOMAIN}${path}")
[ "$code" = "200" ] && echo "✅ $code ${DOMAIN}${path}" || { echo "❌ $code ${DOMAIN}${path}"; ((FAIL++)); }
done
echo ""
echo "=== 結果 ==="
echo "通過: $PASS / 5"
echo "失敗: $FAIL"
[ $FAIL -eq 0 ] && echo "🎉 全部通過,可以交付客戶!"
交付客戶時,執行 ./audit.sh https://客戶網域,把輸出截圖附在驗收單裡。
audit.sh已存在於兩個參考專案的根目錄(ming-travel-blog/audit.sh、ming-website/audit.sh)。新專案可直接複製,只改 DOMAIN 變數即可。
E.5 WAF 安全防護(選配)
如果客戶擔心後台被攻擊,可以加一條 WAF 規則:
① Cloudflare 面板 → 你的網域 → Security → WAF
② Create Rule → Field: URI Path → Operator: contains → Value: /admin/
③ AND Field: Country → Operator: does not equal → Value: Taiwan
④ Action: Block
⑤ 完成。海外 IP 無法存取後台路徑
Security Headers(選配,貼到 astro.config.mjs):
// astro.config.mjs 加入 custom headers
import { defineConfig } from 'astro/config';
export default defineConfig({
// ...其他設定
server: {
headers: {
'X-Content-Type-Options': 'nosniff',
'X-Frame-Options': 'DENY',
'Referrer-Policy': 'strict-origin-when-cross-origin',
}
}
});
[[#table-of-contents|← 回目錄]]
SOP 手冊 v3.0 — 基於 ming-travel-blog + ming-website 專案真實開發經驗 最後更新:2026-05-01