2. 📊 系統狀態總覽(v10.3 · 2026-10-07)
📰 主站(ahpal-static)
📚 小說站(ahpal-novels)
🏛️ UCHome 紀念館 A(ahpal-memories)
🎯 網址: memories.ahpal.com|部署:Cloudflare Workers|最新 HEAD:be7c4e59
🆕 BBS2 紀念館 B(ahpal-memories-bbs2)
🎯 網址: memories.ahpal.com/bbs2/|部署:Cloudflare Workers|最新 HEAD:7ced881
🌐 網域與 DNS
| 項目 | 值 |
| 主網域 | ahpal.com |
| 註冊商 | ✅ Cloudflare, Inc. |
| 到期日 | 2029-04-07 |
| DNS 代管 | clayton.ns.cloudflare.com / princess.ns.cloudflare.com |
| DNSSEC | ✅ 已啟用 |
| SSL/TLS | ✅ Full (Strict) |
| HSTS | ✅ 1 年 + preload |
| 主站 | ahpal.com / www.ahpal.com → Cloudflare Pages |
| 小說站 | novels.ahpal.com → Cloudflare Workers |
| 紀念館 A | memories.ahpal.com → Cloudflare Workers |
| 紀念館 B(BBS2) | memories.ahpal.com/bbs2/ → Cloudflare Workers |
3. 🆕 三大標準化套件(v10.3 新增)
📦 bbs-pipeline(BBS 標準化)
🎯 位置: C:\Users\User\ahpal-AI-archive\system-tools\bbs-pipeline\
GitHub: praystone/AHPAL-SystemTools(commit abe2f60)
🏗️ 三層架構
Layer 3:站點配置(stations.json)
- 儲存所有站點的路徑、Remote URL、Loader Base、FID 與清洗欄位
Layer 2:流程編排(run-pipeline.ps1)
- 主控腳本:讀取 Config 並依序調用 Layer 1 工具
- 實作「失敗即停(Fail-Fast)」與各階段驗證機制
Layer 1:原子工具(tools/)
- Python: clean-fields.py, split-json.py, verify-integrity.py
- PowerShell: backup-repo.ps1, deploy-repo.ps1
- 每個工具均可單獨離線執行與測試
🚀 五階段流程
| 階段 | 工具 | 驗證點 |
| Phase 1 Backup | tools/backup-repo.ps1 | 產出帶時戳備份 |
| Phase 2 Clean | tools/clean-fields.py | 敏感欄位 = 0、PID 總數不變 |
| Phase 3 Split | tools/split-json.py | 單檔 ≤ 5 MiB、索引產生 |
| Phase 4 Build | hugo --gc --minify | 編譯無 Error |
| Phase 5 Deploy | tools/deploy-repo.ps1 | 本地 HEAD = 遠端 HEAD |
📁 目錄架構
bbs-pipeline/
├── stations.json 站點配置
├── run-pipeline.ps1 主控腳本
├── SOP.md 交接文件(4.9 KB)
└── tools/
├── backup-repo.ps1
├── clean-fields.py
├── split-json.py
├── verify-integrity.py
└── deploy-repo.ps1
⚡ 快速指令
| 用途 | 指令 |
| 一鍵維運(A 站) | .\run-pipeline.ps1 -Station memories-a |
| 一鍵維運(BBS2) | .\run-pipeline.ps1 -Station memories-bbs2 |
| 單階段執行 | .\run-pipeline.ps1 -Station memories-a -Phase Clean |
| 單獨驗證 | python .\tools\verify-integrity.py --site-path "..." |
📊 youtube-analytics(YouTube 數據分析)
🎯 位置: C:\Users\User\ahpal-AI-archive\system-tools\youtube-analytics\
用途: 分析 YouTube Studio 匯出 CSV,產出 HTML 報告
版本: v1.5
📁 目錄架構
youtube-analytics/
├── config.json 配置檔
├── run-youtube-report.ps1 主控腳本
├── SOP.md 完整 SOP
├── README.md 快速上手
├── data/ 放 CSV/ZIP
├── templates/
│ └── report.html HTML 模板(含主站導覽列)
└── tools/
├── analyze.py 核心分析
└── check-env.ps1 環境檢查
⚡ 快速指令
| 用途 | 指令 |
| 一鍵產報告 | .\run-youtube-report.ps1 |
| 指定資料夾 | .\run-youtube-report.ps1 -CustomDataDir "C:\path\to\csv" |
| 環境檢查 | .\tools\check-env.ps1 |
📊 首跑驗收基準(2026-10-07)
| 指標 | 值 |
| 總觀看 | 14,404 |
| 互動觀看 | 4,336 |
| 淨訂閱 | +17(+18 / -1) |
| 7 日觀看 | 1,470 |
| 前 7 日觀看 | 1,078 |
🚨 emergency-deploy(緊急部署)
🎯 位置: C:\Users\User\ahpal-AI-archive\system-tools\emergency-deploy.ps1
用途: Cloudflare Pages Git 自動部署失效時的戰備方案
版本: v2.0(含 DryRun)
專案名: ahpal-pages(已對齊)
⚠️ 使用原則
- 本腳本違反死命令 12(Production 部署唯一正門)
- 僅限緊急使用,正常請用
git push
- 用完記得修 Git 自動部署,恢復正常流程
⚡ 快速指令
# 試跑(只檢查,不執行)
.\emergency-deploy.ps1 -DeployPath "C:\Users\User\ahpal-static" -DryRun
# 實際執行(會要求輸入 yes 確認)
.\emergency-deploy.ps1 -DeployPath "C:\Users\User\ahpal-static"
📋 前置檢查項目
- 部署目錄存在
- Git remote 狀態
- npx / wrangler 可用
- 專案名正確(
ahpal-pages)
index.html 存在
.env 是 SymbolicLink(非空殼)
4. 🏗️ 六大 Repository 與部署架構
| Repository | 路徑 | 內容 |
| praystone/ahpal-website | C:\Users\User\ahpal-static | 主站 |
| praystone/AHPAL-SystemTools | C:\Users\User\ahpal-AI-archive\system-tools | 系統工具 + 標準化套件 |
| praystone/AHPAL-Sync | C:\Users\User\Desktop\AHPAL-Sync | 企劃專案 |
| praystone/ahpal-novels | C:\Projects\ahpal_backup\...\mysql\hugo_site | 小說站 |
| praystone/ahpal-memories | ...\mysql\uchome_site | 紀念館 A |
| praystone/ahpal-memories-bbs2 | ...\mysql\uchome_bbs2_site | 紀念館 B(BBS2) |
🚨 部署架構(唯一正門)
# 主站
Git push → GitHub main → Cloudflare Pages 自動部署 → www.ahpal.com
# 小說站
Git push → GitHub main → Cloudflare Workers 自動部署 → novels.ahpal.com
# 紀念館 A
Git push → GitHub main → Cloudflare Workers 自動部署 → memories.ahpal.com
# 紀念館 B(BBS2)
Git push → GitHub main → Cloudflare Workers 自動部署 → memories.ahpal.com/bbs2/
絕對禁止: npx wrangler pages deploy .(緊急時除外,見第 3 章)