igiveup 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +587 -0
- package/bin/cli.js +275 -0
- package/dist/404.html +1 -0
- package/dist/__next.__PAGE__.txt +9 -0
- package/dist/__next._full.txt +20 -0
- package/dist/__next._head.txt +8 -0
- package/dist/__next._index.txt +7 -0
- package/dist/__next._tree.txt +3 -0
- package/dist/_next/static/Btx0p5I4qNygUnI8kASLN/_buildManifest.js +11 -0
- package/dist/_next/static/Btx0p5I4qNygUnI8kASLN/_clientMiddlewareManifest.json +1 -0
- package/dist/_next/static/Btx0p5I4qNygUnI8kASLN/_ssgManifest.js +1 -0
- package/dist/_next/static/chunks/41307292ab86fe39.js +1 -0
- package/dist/_next/static/chunks/7521cd4ba12a4d17.css +1 -0
- package/dist/_next/static/chunks/7f3a50588edd3e98.js +1 -0
- package/dist/_next/static/chunks/a43937f87dbafba4.js +1 -0
- package/dist/_next/static/chunks/a6dad97d9634a72d.js +1 -0
- package/dist/_next/static/chunks/b18da497cd71639c.js +1 -0
- package/dist/_next/static/chunks/b4a799ac963d5996.js +323 -0
- package/dist/_next/static/chunks/c218146104a27e59.js +1 -0
- package/dist/_next/static/chunks/c24f9dcbcebdbbbc.js +13 -0
- package/dist/_next/static/chunks/d8c9b2a63125f582.js +2 -0
- package/dist/_next/static/chunks/d9468907c0fe03d2.js +4 -0
- package/dist/_next/static/chunks/turbopack-42182df38b37704b.js +3 -0
- package/dist/_not-found/__next._full.txt +16 -0
- package/dist/_not-found/__next._head.txt +8 -0
- package/dist/_not-found/__next._index.txt +7 -0
- package/dist/_not-found/__next._not-found.__PAGE__.txt +5 -0
- package/dist/_not-found/__next._not-found.txt +4 -0
- package/dist/_not-found/__next._tree.txt +3 -0
- package/dist/_not-found.html +1 -0
- package/dist/_not-found.txt +16 -0
- package/dist/apple-icon +0 -0
- package/dist/icon +0 -0
- package/dist/images/logo.svg +10 -0
- package/dist/index.html +1 -0
- package/dist/index.txt +20 -0
- package/package.json +54 -0
package/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2025 mag477
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
package/README.md
ADDED
|
@@ -0,0 +1,587 @@
|
|
|
1
|
+
# I Give Up On Life
|
|
2
|
+
|
|
3
|
+
> Build a complete brand visual asset? Nope. I quit.
|
|
4
|
+
|
|
5
|
+
An AI-powered marketing content design tool. Let your **AI minion** handle the grind—product identity, brand story, competitor strategy—while you just breathe.
|
|
6
|
+
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
## Try it now
|
|
10
|
+
|
|
11
|
+
### Online Demo
|
|
12
|
+
|
|
13
|
+
No setup needed. Just open and use.
|
|
14
|
+
|
|
15
|
+
**[igiveup.simoko.com](https://igiveup.simoko.com)**
|
|
16
|
+
|
|
17
|
+
### Local Setup
|
|
18
|
+
|
|
19
|
+
```bash
|
|
20
|
+
npx igiveup
|
|
21
|
+
```
|
|
22
|
+
|
|
23
|
+
> One command to launch
|
|
24
|
+
>
|
|
25
|
+
> Options: `--port 8080` `--lang en`
|
|
26
|
+
|
|
27
|
+
---
|
|
28
|
+
|
|
29
|
+
## Features
|
|
30
|
+
|
|
31
|
+
### Phase 1: Strategy Selection
|
|
32
|
+
|
|
33
|
+
*The Grind Begins*
|
|
34
|
+
|
|
35
|
+
- **Smart Product Analysis**: Upload product image, AI decodes visual features & brand semantics
|
|
36
|
+
- **3 Strategy Routes**: Instantly generate 3 distinct marketing directions
|
|
37
|
+
- **Detailed Strategy Info**: Each route includes headline, visual style, target audience
|
|
38
|
+
- **Fast Response**: Strategy analysis in ~3 seconds, no image generation wait
|
|
39
|
+
|
|
40
|
+
### Phase 2: Content Planning
|
|
41
|
+
|
|
42
|
+
*Still Grinding*
|
|
43
|
+
|
|
44
|
+
#### Multi-Platform Sizes
|
|
45
|
+
|
|
46
|
+
| Size | Best For |
|
|
47
|
+
|------|----------|
|
|
48
|
+
| **1:1 Square** | FB posts, IG carousel, e-commerce |
|
|
49
|
+
| **9:16 Vertical** | Stories, Reels, full-screen mobile |
|
|
50
|
+
| **4:5 Portrait** | IG Feed, mobile-optimized |
|
|
51
|
+
| **16:9 Landscape** | Covers, ad banners |
|
|
52
|
+
| **1:1 Commercial** | Professional product photography |
|
|
53
|
+
|
|
54
|
+
#### Content Planning
|
|
55
|
+
|
|
56
|
+
- **3 Sets Per Size**
|
|
57
|
+
- Set 1: Feature-focused (emphasize product features)
|
|
58
|
+
- Set 2: Emotion-focused (emphasize lifestyle & feelings)
|
|
59
|
+
- Set 3: Data/Social proof (emphasize results & reviews)
|
|
60
|
+
|
|
61
|
+
- **Dual Mode**
|
|
62
|
+
- **Roast This Content** (Script review mode)
|
|
63
|
+
- **Crunch Time** (Image generation mode)
|
|
64
|
+
|
|
65
|
+
### Image Generation
|
|
66
|
+
|
|
67
|
+
#### Prompt Mode & Reference Mode
|
|
68
|
+
|
|
69
|
+
| Mode | Description |
|
|
70
|
+
|------|-------------|
|
|
71
|
+
| **Prompt** | Generate from AI visual prompts |
|
|
72
|
+
| **Reference** | Upload reference, control similarity |
|
|
73
|
+
|
|
74
|
+
**Similarity Levels:**
|
|
75
|
+
- Low: Creative freedom (only color tone & mood)
|
|
76
|
+
- Medium: Moderate reference (lighting & colors, flexible composition)
|
|
77
|
+
- High: Close match (composition, layout, style)
|
|
78
|
+
|
|
79
|
+
#### Text & Visual Control
|
|
80
|
+
|
|
81
|
+
- Overlay title & copy on images
|
|
82
|
+
- 4 font weights (Noto Sans TC)
|
|
83
|
+
- Brand logo placement
|
|
84
|
+
- Live editing
|
|
85
|
+
- Per-image settings
|
|
86
|
+
|
|
87
|
+
---
|
|
88
|
+
|
|
89
|
+
## Tech Stack
|
|
90
|
+
|
|
91
|
+
| Category | Technology |
|
|
92
|
+
|----------|------------|
|
|
93
|
+
| Framework | Next.js 16 + React 19 + TypeScript |
|
|
94
|
+
| AI Models | Google Gemini |
|
|
95
|
+
| | `gemini-2.5-flash` (text analysis & content planning) |
|
|
96
|
+
| | `gemini-3-pro-image-preview` (image generation) |
|
|
97
|
+
| Styling | Tailwind CSS |
|
|
98
|
+
| Fonts | Inter + Playfair Display (UI), Noto Sans TC (generated images) |
|
|
99
|
+
| Auth | Cloudflare Zero Trust (optional) |
|
|
100
|
+
|
|
101
|
+
---
|
|
102
|
+
|
|
103
|
+
## Installation
|
|
104
|
+
|
|
105
|
+
### Requirements
|
|
106
|
+
|
|
107
|
+
- Node.js 18+
|
|
108
|
+
- pnpm (recommended) or npm
|
|
109
|
+
|
|
110
|
+
### Quick Start
|
|
111
|
+
|
|
112
|
+
```bash
|
|
113
|
+
# Clone the repo
|
|
114
|
+
git clone https://github.com/your-username/IGiveUpOnLife.git
|
|
115
|
+
cd IGiveUpOnLife
|
|
116
|
+
|
|
117
|
+
# Install dependencies
|
|
118
|
+
pnpm install
|
|
119
|
+
|
|
120
|
+
# Copy environment variables
|
|
121
|
+
cp .env.example .env.local
|
|
122
|
+
|
|
123
|
+
# Start dev server
|
|
124
|
+
pnpm dev
|
|
125
|
+
```
|
|
126
|
+
|
|
127
|
+
### Build & Deploy
|
|
128
|
+
|
|
129
|
+
```bash
|
|
130
|
+
# Server version (requires Node.js server)
|
|
131
|
+
pnpm build
|
|
132
|
+
pnpm start
|
|
133
|
+
|
|
134
|
+
# Static version (GitHub Pages, Cloudflare Pages, etc.)
|
|
135
|
+
pnpm build:static
|
|
136
|
+
pnpm start:static # Local test
|
|
137
|
+
# Output: ./out
|
|
138
|
+
```
|
|
139
|
+
|
|
140
|
+
### Environment Variables
|
|
141
|
+
|
|
142
|
+
Copy `.env.example` to `.env.local`:
|
|
143
|
+
|
|
144
|
+
```bash
|
|
145
|
+
# Gemini API Key (optional - if set, users get free access)
|
|
146
|
+
GEMINI_API_KEY=your-api-key
|
|
147
|
+
|
|
148
|
+
# Gemini Model Settings (optional)
|
|
149
|
+
GEMINI_TEXT_MODEL=gemini-2.5-flash
|
|
150
|
+
GEMINI_IMAGE_MODEL=gemini-3-pro-image-preview
|
|
151
|
+
GEMINI_THINKING_BUDGET=2048
|
|
152
|
+
|
|
153
|
+
# Rate Limiting (only when using server API key)
|
|
154
|
+
RATE_LIMIT_WINDOW_MS=60000
|
|
155
|
+
RATE_LIMIT_MAX_REQUESTS=10
|
|
156
|
+
RATE_LIMIT_ENABLED=true
|
|
157
|
+
|
|
158
|
+
# Cloudflare Zero Trust (optional - verified users bypass rate limit)
|
|
159
|
+
CF_ACCESS_TEAM_NAME=your-team-name
|
|
160
|
+
CF_ACCESS_AUD=your-application-aud
|
|
161
|
+
```
|
|
162
|
+
|
|
163
|
+
> **Get Gemini API Key**: [Google AI Studio](https://aistudio.google.com/app/apikey)
|
|
164
|
+
|
|
165
|
+
### Server vs Static Build
|
|
166
|
+
|
|
167
|
+
| Feature | Server | Static |
|
|
168
|
+
|---------|--------|--------|
|
|
169
|
+
| API Key | Server-side supported | User must provide |
|
|
170
|
+
| Rate Limiting | Server-controlled | None |
|
|
171
|
+
| Zero Trust | Supported | Not supported |
|
|
172
|
+
| Deployment | Node.js server | Any static hosting |
|
|
173
|
+
| Output | `.next/` | `out/` |
|
|
174
|
+
|
|
175
|
+
---
|
|
176
|
+
|
|
177
|
+
## Cloudflare Zero Trust Integration
|
|
178
|
+
|
|
179
|
+
If your site is protected by Cloudflare Zero Trust, verified users can bypass rate limiting.
|
|
180
|
+
|
|
181
|
+
### Setup
|
|
182
|
+
|
|
183
|
+
1. Create Access Application in Cloudflare Zero Trust Dashboard
|
|
184
|
+
2. Get Team Name and Application AUD
|
|
185
|
+
3. Set in `.env.local`:
|
|
186
|
+
|
|
187
|
+
```bash
|
|
188
|
+
CF_ACCESS_TEAM_NAME=your-team-name
|
|
189
|
+
CF_ACCESS_AUD=your-application-aud
|
|
190
|
+
```
|
|
191
|
+
|
|
192
|
+
---
|
|
193
|
+
|
|
194
|
+
## User Flow
|
|
195
|
+
|
|
196
|
+
1. **Fill in Info**: Upload product image, product name, info, URL, reference copy
|
|
197
|
+
2. **AI Analysis**: Click "Let's Hustle", wait ~3-5 seconds
|
|
198
|
+
3. **Choose Strategy**: View 3 different strategy routes
|
|
199
|
+
4. **Select Sizes**: Check the sizes you need
|
|
200
|
+
5. **Auto-generate Scripts**: AI generates 3 content sets per size
|
|
201
|
+
6. **Upload Assets**: Product image (required), brand logo (optional)
|
|
202
|
+
7. **Review & Edit**: Switch to "Roast This Content" mode, edit content
|
|
203
|
+
8. **Generate Images**: Switch to "Crunch Time" mode, generate & download
|
|
204
|
+
9. **Export Report**: Click "Download Strategy Report"
|
|
205
|
+
|
|
206
|
+
---
|
|
207
|
+
|
|
208
|
+
## Project Structure
|
|
209
|
+
|
|
210
|
+
```
|
|
211
|
+
IGiveUpOnLife/
|
|
212
|
+
├── app/ # Next.js App Router
|
|
213
|
+
│ ├── actions/ # Server Actions
|
|
214
|
+
│ │ └── gemini.ts # Gemini API calls
|
|
215
|
+
│ ├── globals.css # Global styles
|
|
216
|
+
│ ├── page.tsx # Main page
|
|
217
|
+
│ └── layout.tsx # Root layout
|
|
218
|
+
├── components/ # React Components
|
|
219
|
+
│ ├── ApiKeyModal.tsx # API Key settings
|
|
220
|
+
│ ├── ContentSuite.tsx # Phase 2 content suite
|
|
221
|
+
│ ├── GuideModal.tsx # User guide
|
|
222
|
+
│ ├── ProductCard.tsx # Product card
|
|
223
|
+
│ ├── PromptCard.tsx # Prompt card
|
|
224
|
+
│ └── Spinner.tsx # Loading spinner
|
|
225
|
+
├── services/ # Service Layer
|
|
226
|
+
│ ├── geminiService.ts # Unified entry (auto-detect build mode)
|
|
227
|
+
│ └── geminiClient.ts # Static build client-side API
|
|
228
|
+
├── lib/ # Utilities
|
|
229
|
+
│ ├── rate-limit.ts # Rate limiting
|
|
230
|
+
│ ├── cloudflareAccess.ts # Cloudflare Zero Trust
|
|
231
|
+
│ └── api-key-storage.ts # API Key storage
|
|
232
|
+
├── locales/ # i18n translations
|
|
233
|
+
│ ├── en.json # English
|
|
234
|
+
│ └── zh.json # Traditional Chinese
|
|
235
|
+
├── contexts/ # React Contexts
|
|
236
|
+
│ └── LocaleContext.tsx # Locale provider
|
|
237
|
+
├── prompts.ts # AI prompt templates
|
|
238
|
+
├── types.ts # TypeScript types
|
|
239
|
+
└── next.config.ts # Next.js config
|
|
240
|
+
```
|
|
241
|
+
|
|
242
|
+
---
|
|
243
|
+
|
|
244
|
+
## Why This Exists
|
|
245
|
+
|
|
246
|
+
### User Experience
|
|
247
|
+
- Zero design skills needed
|
|
248
|
+
- Fast response (~3 sec strategy)
|
|
249
|
+
- Smooth UX with polished animations
|
|
250
|
+
- Full control over AI-generated content
|
|
251
|
+
|
|
252
|
+
### Marketing Expertise
|
|
253
|
+
- Brand consistency based on story & features
|
|
254
|
+
- Competitor insights from reference copy
|
|
255
|
+
- Multi-angle strategies (feature, emotion, data)
|
|
256
|
+
- Multi-platform support in one go
|
|
257
|
+
|
|
258
|
+
### Technical Advantages
|
|
259
|
+
- Cost-optimized - only generate what's needed
|
|
260
|
+
- Flexible deployment - server or static
|
|
261
|
+
- Enterprise-ready - Cloudflare Zero Trust integration
|
|
262
|
+
|
|
263
|
+
---
|
|
264
|
+
|
|
265
|
+
## Contributing
|
|
266
|
+
|
|
267
|
+
Don't want to work alone? Neither do we.
|
|
268
|
+
|
|
269
|
+
- **Found a bug?** [Open an issue](https://github.com/supra126/IGiveUpOnLife/issues)
|
|
270
|
+
- **Feature idea?** Let's discuss
|
|
271
|
+
- **Want to code?** PRs welcome
|
|
272
|
+
|
|
273
|
+
> *"I don't want to work hard, but I'll review your PR."* — The Maintainers
|
|
274
|
+
|
|
275
|
+
---
|
|
276
|
+
|
|
277
|
+
## Authors
|
|
278
|
+
|
|
279
|
+
| <a href="https://github.com/mag477"><img src="https://github.com/mag477.png" width="80" alt="mag477"/><br/><sub>@mag477</sub></a> | <a href="https://github.com/supra126"><img src="https://github.com/supra126.png" width="80" alt="supra126"/><br/><sub>@supra126</sub></a> |
|
|
280
|
+
|:---:|:---:|
|
|
281
|
+
|
|
282
|
+
---
|
|
283
|
+
|
|
284
|
+
## License
|
|
285
|
+
|
|
286
|
+
MIT License
|
|
287
|
+
|
|
288
|
+
---
|
|
289
|
+
|
|
290
|
+
<p align="center">
|
|
291
|
+
<i>Built with coffee and the desire to never work hard again.</i>
|
|
292
|
+
</p>
|
|
293
|
+
|
|
294
|
+
---
|
|
295
|
+
|
|
296
|
+
# 不想努力了
|
|
297
|
+
|
|
298
|
+
> 打造完整品牌視覺資產?不用,我不想努力了。
|
|
299
|
+
|
|
300
|
+
一個由 AI 驅動的產品行銷內容設計工具,讓 **小GG(AI 總監)** 幫你結合產品識別、品牌故事與競品策略,生成專業的廣告海報概念與視覺素材。你只需要負責呼吸就好。
|
|
301
|
+
|
|
302
|
+
---
|
|
303
|
+
|
|
304
|
+
## 立即試用
|
|
305
|
+
|
|
306
|
+
### 線上試用
|
|
307
|
+
|
|
308
|
+
免安裝,打開即用。
|
|
309
|
+
|
|
310
|
+
**[igiveup.simoko.com](https://igiveup.simoko.com)**
|
|
311
|
+
|
|
312
|
+
### 本地試用
|
|
313
|
+
|
|
314
|
+
```bash
|
|
315
|
+
npx igiveup
|
|
316
|
+
```
|
|
317
|
+
|
|
318
|
+
> 一行指令啟動
|
|
319
|
+
>
|
|
320
|
+
> 選項: `--port 8080` `--lang en`
|
|
321
|
+
|
|
322
|
+
---
|
|
323
|
+
|
|
324
|
+
## 功能特色
|
|
325
|
+
|
|
326
|
+
### 第一階段:視覺策略選擇
|
|
327
|
+
|
|
328
|
+
*讓我努力步驟一*
|
|
329
|
+
|
|
330
|
+
- **智能產品分析**:上傳產品圖片,AI 自動解讀視覺特徵與品牌語意
|
|
331
|
+
- **三條策略路線**:即時生成 3 種截然不同的行銷策略方向
|
|
332
|
+
- **詳細策略資訊**:每條路線包含主打標語、視覺風格、目標受眾
|
|
333
|
+
- **快速響應**:無需等待圖片生成,3 秒內完成策略分析
|
|
334
|
+
|
|
335
|
+
### 第二階段:完整內容企劃
|
|
336
|
+
|
|
337
|
+
*不努力步驟二*
|
|
338
|
+
|
|
339
|
+
#### 多平台尺寸支援
|
|
340
|
+
|
|
341
|
+
| 尺寸 | 適用場景 |
|
|
342
|
+
|------|----------|
|
|
343
|
+
| **1:1 方形圖** | FB 貼文、IG 輪播、電商主圖 |
|
|
344
|
+
| **9:16 直式長圖** | 限時動態、Reels、手機全螢幕 |
|
|
345
|
+
| **4:5 直式圖** | IG Feed 主頁、優化手機瀏覽 |
|
|
346
|
+
| **16:9 橫式長圖** | 封面、廣告圖片 |
|
|
347
|
+
| **1:1 商業攝影** | 專業商品攝影風格 |
|
|
348
|
+
|
|
349
|
+
#### 內容企劃功能
|
|
350
|
+
|
|
351
|
+
- **每個尺寸 3 組方案**
|
|
352
|
+
- 功能導向(強調產品功能、特點)
|
|
353
|
+
- 情感導向(強調生活情境、感受)
|
|
354
|
+
- 數據/背書導向(強調成效、評價)
|
|
355
|
+
|
|
356
|
+
- **雙模式切換**
|
|
357
|
+
- **內容來嘴看看**(腳本審閱模式)
|
|
358
|
+
- **爆肝產圖**(圖片製作模式)
|
|
359
|
+
|
|
360
|
+
### 專業圖片生成
|
|
361
|
+
|
|
362
|
+
#### 提詞版 & 參考版
|
|
363
|
+
|
|
364
|
+
| 模式 | 說明 |
|
|
365
|
+
|------|------|
|
|
366
|
+
| **提詞版** | 使用 AI 生成的視覺 Prompt 創作 |
|
|
367
|
+
| **參考版** | 上傳參考圖片,控制相似度生成 |
|
|
368
|
+
|
|
369
|
+
**相似度控制:**
|
|
370
|
+
- 低:創意自由(僅參考色調與氛圍)
|
|
371
|
+
- 中:適度參考(光線與色彩,構圖彈性)
|
|
372
|
+
- 高:高度相似(構圖、佈局、風格)
|
|
373
|
+
|
|
374
|
+
#### 文字與視覺控制
|
|
375
|
+
|
|
376
|
+
- 可選擇在圖片上疊加標題和文案
|
|
377
|
+
- 4 種字重(思源黑體)
|
|
378
|
+
- 品牌 Logo 自動放置
|
|
379
|
+
- 即時編輯
|
|
380
|
+
- 每張圖片獨立設定
|
|
381
|
+
|
|
382
|
+
---
|
|
383
|
+
|
|
384
|
+
## 技術棧
|
|
385
|
+
|
|
386
|
+
| 類別 | 技術 |
|
|
387
|
+
|------|------|
|
|
388
|
+
| 框架 | Next.js 16 + React 19 + TypeScript |
|
|
389
|
+
| AI 模型 | Google Gemini |
|
|
390
|
+
| | `gemini-2.5-flash`(文字分析與內容規劃)|
|
|
391
|
+
| | `gemini-3-pro-image-preview`(專業圖片生成)|
|
|
392
|
+
| 樣式 | Tailwind CSS |
|
|
393
|
+
| 字體 | Inter + Playfair Display(介面)、Noto Sans TC(生成圖片)|
|
|
394
|
+
| 認證 | Cloudflare Zero Trust(選填)|
|
|
395
|
+
|
|
396
|
+
---
|
|
397
|
+
|
|
398
|
+
## 安裝
|
|
399
|
+
|
|
400
|
+
### 環境要求
|
|
401
|
+
|
|
402
|
+
- Node.js 18+
|
|
403
|
+
- pnpm(推薦)或 npm
|
|
404
|
+
|
|
405
|
+
### 快速開始
|
|
406
|
+
|
|
407
|
+
```bash
|
|
408
|
+
# 克隆專案
|
|
409
|
+
git clone https://github.com/your-username/IGiveUpOnLife.git
|
|
410
|
+
cd IGiveUpOnLife
|
|
411
|
+
|
|
412
|
+
# 安裝依賴(泡杯咖啡,讓 pnpm 努力)
|
|
413
|
+
pnpm install
|
|
414
|
+
|
|
415
|
+
# 複製環境變數
|
|
416
|
+
cp .env.example .env.local
|
|
417
|
+
|
|
418
|
+
# 啟動開發伺服器
|
|
419
|
+
pnpm dev
|
|
420
|
+
```
|
|
421
|
+
|
|
422
|
+
### 建置與部署
|
|
423
|
+
|
|
424
|
+
```bash
|
|
425
|
+
# 伺服器版(需要 Node.js 伺服器)
|
|
426
|
+
pnpm build
|
|
427
|
+
pnpm start
|
|
428
|
+
|
|
429
|
+
# 靜態版(可部署到 GitHub Pages、Cloudflare Pages 等)
|
|
430
|
+
pnpm build:static
|
|
431
|
+
pnpm start:static # 本地測試
|
|
432
|
+
# 輸出目錄: ./out
|
|
433
|
+
```
|
|
434
|
+
|
|
435
|
+
### 環境變數設定
|
|
436
|
+
|
|
437
|
+
複製 `.env.example` 為 `.env.local`:
|
|
438
|
+
|
|
439
|
+
```bash
|
|
440
|
+
# Gemini API 金鑰(選填 - 若設定,用戶可免費使用)
|
|
441
|
+
GEMINI_API_KEY=your-api-key
|
|
442
|
+
|
|
443
|
+
# Gemini 模型設定(選填)
|
|
444
|
+
GEMINI_TEXT_MODEL=gemini-2.5-flash
|
|
445
|
+
GEMINI_IMAGE_MODEL=gemini-3-pro-image-preview
|
|
446
|
+
GEMINI_THINKING_BUDGET=2048
|
|
447
|
+
|
|
448
|
+
# 速率限制(僅在使用伺服器 API 金鑰時生效)
|
|
449
|
+
RATE_LIMIT_WINDOW_MS=60000
|
|
450
|
+
RATE_LIMIT_MAX_REQUESTS=10
|
|
451
|
+
RATE_LIMIT_ENABLED=true
|
|
452
|
+
|
|
453
|
+
# Cloudflare Zero Trust(選填 - 經過驗證的用戶不受速率限制)
|
|
454
|
+
CF_ACCESS_TEAM_NAME=your-team-name
|
|
455
|
+
CF_ACCESS_AUD=your-application-aud
|
|
456
|
+
```
|
|
457
|
+
|
|
458
|
+
> **取得 API Key**: [Google AI Studio](https://aistudio.google.com/app/apikey)
|
|
459
|
+
|
|
460
|
+
### 伺服器版 vs 靜態版
|
|
461
|
+
|
|
462
|
+
| 功能 | 伺服器版 | 靜態版 |
|
|
463
|
+
|------|----------|--------|
|
|
464
|
+
| API 金鑰 | 支援伺服器端 | 用戶必須提供 |
|
|
465
|
+
| 速率限制 | 伺服器控制 | 無 |
|
|
466
|
+
| Zero Trust | 支援 | 不支援 |
|
|
467
|
+
| 部署方式 | Node.js 伺服器 | 任何靜態託管 |
|
|
468
|
+
| 輸出目錄 | `.next/` | `out/` |
|
|
469
|
+
|
|
470
|
+
---
|
|
471
|
+
|
|
472
|
+
## Cloudflare Zero Trust 整合
|
|
473
|
+
|
|
474
|
+
如果你的網站經過 Cloudflare Zero Trust 保護,經過驗證的用戶不受速率限制。
|
|
475
|
+
|
|
476
|
+
### 設定步驟
|
|
477
|
+
|
|
478
|
+
1. 在 Cloudflare Zero Trust Dashboard 建立 Access Application
|
|
479
|
+
2. 取得 Team Name 和 Application AUD
|
|
480
|
+
3. 設定在 `.env.local`:
|
|
481
|
+
|
|
482
|
+
```bash
|
|
483
|
+
CF_ACCESS_TEAM_NAME=your-team-name
|
|
484
|
+
CF_ACCESS_AUD=your-application-aud
|
|
485
|
+
```
|
|
486
|
+
|
|
487
|
+
---
|
|
488
|
+
|
|
489
|
+
## 使用流程
|
|
490
|
+
|
|
491
|
+
1. **一次填完所有資訊**:上傳產品圖片、產品名稱、資訊、網址、參考文案
|
|
492
|
+
2. **AI 策略分析**:點擊「啟動努力」,等待約 3-5 秒
|
|
493
|
+
3. **選擇視覺策略路線**:查看 3 條不同的策略路線
|
|
494
|
+
4. **選擇圖片尺寸**:勾選你需要的尺寸
|
|
495
|
+
5. **自動生成內容腳本**:AI 為每個尺寸生成 3 組方案
|
|
496
|
+
6. **上傳產品圖與 Logo**:產品圖片(必要)、品牌 Logo(選填)
|
|
497
|
+
7. **腳本審閱與編輯**:切換至「內容來嘴看看」模式,編輯內容
|
|
498
|
+
8. **圖片製作**:切換至「爆肝產圖」模式,生成與下載
|
|
499
|
+
9. **匯出報告**:點擊「下載策略報告」
|
|
500
|
+
|
|
501
|
+
---
|
|
502
|
+
|
|
503
|
+
## 專案結構
|
|
504
|
+
|
|
505
|
+
```
|
|
506
|
+
IGiveUpOnLife/
|
|
507
|
+
├── app/ # Next.js App Router
|
|
508
|
+
│ ├── actions/ # Server Actions
|
|
509
|
+
│ │ └── gemini.ts # Gemini API 呼叫
|
|
510
|
+
│ ├── globals.css # 全域樣式
|
|
511
|
+
│ ├── page.tsx # 主頁面
|
|
512
|
+
│ └── layout.tsx # 根佈局
|
|
513
|
+
├── components/ # React 元件
|
|
514
|
+
│ ├── ApiKeyModal.tsx # API Key 設定
|
|
515
|
+
│ ├── ContentSuite.tsx # 第二階段內容套件
|
|
516
|
+
│ ├── GuideModal.tsx # 使用指南
|
|
517
|
+
│ ├── ProductCard.tsx # 產品卡片
|
|
518
|
+
│ ├── PromptCard.tsx # 提示卡片
|
|
519
|
+
│ └── Spinner.tsx # 載入動畫
|
|
520
|
+
├── services/ # 服務層
|
|
521
|
+
│ ├── geminiService.ts # 統一入口(自動偵測建置模式)
|
|
522
|
+
│ └── geminiClient.ts # 靜態版客戶端 API
|
|
523
|
+
├── lib/ # 工具函式
|
|
524
|
+
│ ├── rate-limit.ts # 速率限制
|
|
525
|
+
│ ├── cloudflareAccess.ts # Cloudflare Zero Trust
|
|
526
|
+
│ └── api-key-storage.ts # API Key 儲存
|
|
527
|
+
├── locales/ # 多語系翻譯
|
|
528
|
+
│ ├── en.json # 英文
|
|
529
|
+
│ └── zh.json # 繁體中文
|
|
530
|
+
├── contexts/ # React Contexts
|
|
531
|
+
│ └── LocaleContext.tsx # 語系提供者
|
|
532
|
+
├── prompts.ts # AI 提示模板
|
|
533
|
+
├── types.ts # TypeScript 類型
|
|
534
|
+
└── next.config.ts # Next.js 設定
|
|
535
|
+
```
|
|
536
|
+
|
|
537
|
+
---
|
|
538
|
+
|
|
539
|
+
## 為什麼做這個
|
|
540
|
+
|
|
541
|
+
### 使用者體驗
|
|
542
|
+
- 零設計門檻
|
|
543
|
+
- 極速響應(約 3 秒完成策略分析)
|
|
544
|
+
- 流暢體驗,精緻動畫
|
|
545
|
+
- AI 生成內容完全可控
|
|
546
|
+
|
|
547
|
+
### 行銷專業
|
|
548
|
+
- 基於品牌故事與特色的品牌一致性
|
|
549
|
+
- 從參考文案獲得競品洞察
|
|
550
|
+
- 多角度策略(功能、情感、數據)
|
|
551
|
+
- 一次支援多平台
|
|
552
|
+
|
|
553
|
+
### 技術優勢
|
|
554
|
+
- 成本優化 - 只生成需要的內容
|
|
555
|
+
- 彈性部署 - 伺服器或靜態皆可
|
|
556
|
+
- 企業整合 - Cloudflare Zero Trust 支援
|
|
557
|
+
|
|
558
|
+
---
|
|
559
|
+
|
|
560
|
+
## 一起來努力(?)
|
|
561
|
+
|
|
562
|
+
不想一個人努力?我們也是。
|
|
563
|
+
|
|
564
|
+
- **發現 Bug?** [開一個 Issue](https://github.com/supra126/IGiveUpOnLife/issues)
|
|
565
|
+
- **功能建議?** 來討論看看
|
|
566
|
+
- **想寫程式?** 歡迎 PR
|
|
567
|
+
|
|
568
|
+
> *「我不想努力了,但我會 review 你的 PR。」* — 維護者們
|
|
569
|
+
|
|
570
|
+
---
|
|
571
|
+
|
|
572
|
+
## 作者
|
|
573
|
+
|
|
574
|
+
| <a href="https://github.com/mag477"><img src="https://github.com/mag477.png" width="80" alt="mag477"/><br/><sub>@mag477</sub></a> | <a href="https://github.com/supra126"><img src="https://github.com/supra126.png" width="80" alt="supra126"/><br/><sub>@supra126</sub></a> |
|
|
575
|
+
|:---:|:---:|
|
|
576
|
+
|
|
577
|
+
---
|
|
578
|
+
|
|
579
|
+
## 授權
|
|
580
|
+
|
|
581
|
+
MIT License
|
|
582
|
+
|
|
583
|
+
---
|
|
584
|
+
|
|
585
|
+
<p align="center">
|
|
586
|
+
<i>用咖啡和「不想努力」的心情打造。</i>
|
|
587
|
+
</p>
|