科技教育創新專區 › 部落格

🌅 #91 PhotoPoet Pro 點亮詩意:跟 #14 同源雙部署第 5 案例 + Cloudflare Turnstile + SSRF 防護 + Gemini 2.0 Flash 繁中詩生成

黃凱揚(阿凱老師) · 桃園市龍潭區石門國民小學 · 2026-05-21

#91 PhotoPoet **Pro** 是 [#14 poet.smes Firebase Hosting 版](/blog/poet-14-elder-greeting-image) 的進階姊妹版!cagoooo/PhotoPoet repo + photopoet-ha364.web.app 線上版。Next.js 15 (static export) + Firebase Hosting + Cloud Functions gen2 + Genkit + **Cloudflare Turnstile** + **SSRF 防護**(私有 IP 黑名單 / redirect 重檢 / Content-Type 白名單 / 10MB / 8s 上限)+ Gemini 2.0 Flash 繁中詩生成。**阿凱同源雙部署策略第 5 案例**。

#91 跟 #14 是同源雙部署第 5 案例

阿凱「同源雙部署策略」累積 5 個案例:

工具家族Firebase Hosting 學校域名GitHub Pages / 個人作品集
PIRLS#4 pirlss.smes#87 cagoooo/pirls-questioncraft
Aura 5W1H#13 5w1h.smes#92 cagoooo/Aura
領域共備 GO#15 report.smes#84 cagoooo/domain-meeting-go
詩意長輩圖#14 poet.smes#91 PhotoPoet Pro(本篇)
領域共備 GO (上面 #15/84)--

完整 4 工具家族 = 8 個工具掛雙網域。

#91 真實怎麼做?

真實標題:「PhotoPoet Pro · 點亮詩意(早安長輩圖產生器)」

核心流程:

上傳照片 → Gemini 2.0 Flash 生成繁體中文詩 → 一鍵下載長輩圖。

線上版:photopoet-ha364.web.app(Firebase Hosting 預設域名,不是 GitHub Pages 也不是 poet.smes — 第三個部署位置!)

真實技術棧(極完整)

🔒 安全設計(三層防護,工程紮實度爆表)

1️⃣ Gemini API Key 嚴格限制

2️⃣ SSRF 防護(神細節!)

proxyImage Cloud Function 配完整 SSRF 防護:

SSRF(Server-Side Request Forgery)是後端打外部 URL 最大的資安風險 — 阿凱寫了完整的防護程式碼,這是企業級工程紀律。

3️⃣ Cloudflare Turnstile 人機驗證

CI/CD 完整流程

跟 #14 的差別(Pro 進化)

維度#14 poet.smes#91 PhotoPoet Pro(本篇)
部署poet.smes Firebase Hostingphotopoet-ha364.web.app + Firebase Hosting
LLM推測 Gemini 圖文Gemini 2.0 Flash 明確
後端推測Cloud Functions gen2 + Genkit
人機驗證無Cloudflare Turnstile
SSRF 防護無完整防護(私 IP / redirect / MIME / size / timeout)
docs簡單5 個 markdown 完整工程文件

#91 Pro 是「企業級工程紀律的 #14」 — 同款 use case 但安全防護升 5 個檔次。

為什麼這值得寫獨立文章?

「個人作品也要做企業級安全」 —— 阿凱在 #91 展示的工程紀律:

對工程師:

對教育圈:

教學情境(同 #14 但補充工程紀律)

#14 已寫教學情境 — #91 補充:

「為什麼用 Pro 版而不是 #14」:

配對工具推薦

適用對象

想試試?

→ 前往 #91 ✨點亮詩意 Pro✨ 早安長輩圖

下次傳長輩圖 — #91 Pro 版 → 配 Cloudflare Turnstile + SSRF 防護 → 比 #14 安全 5 倍。

開源原始碼:參考這個工具做出你的版本

阿凱老師大部分的教育工具都在 GitHub 公開原始碼,歡迎老師、學生與開發者參考改造成適合自己情境的版本。文章頁左下角的「複製 AI 開發提示詞」可把工具資料與原始碼連結一次交給 ChatGPT、Claude、Gemini 等 AI 助手。