igiveup 0.1.0 → 0.1.2
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/README.md +100 -134
- package/bin/cli.js +26 -28
- package/dist/404.html +1 -1
- package/dist/__next.__PAGE__.txt +4 -4
- package/dist/__next._full.txt +21 -19
- package/dist/__next._head.txt +4 -4
- package/dist/__next._index.txt +7 -6
- package/dist/__next._tree.txt +4 -3
- package/dist/_next/static/chunks/10cafdb3ff8cde3d.js +1 -0
- package/dist/_next/static/chunks/{b18da497cd71639c.js → 22fc8eaca9ee64bc.js} +1 -1
- package/dist/_next/static/chunks/2660aa5f54185347.js +342 -0
- package/dist/_next/static/chunks/3900c8b574893467.js +2 -0
- package/dist/_next/static/chunks/51fc93af44d91b77.js +1 -0
- package/dist/_next/static/chunks/63d05db48d1b3476.js +1 -0
- package/dist/_next/static/chunks/6c19b4bfc6ff265c.css +1 -0
- package/dist/_next/static/chunks/7eb5861ee097b323.js +1 -0
- package/dist/_next/static/chunks/89319efd744d13b7.js +1 -0
- package/dist/_next/static/chunks/{c218146104a27e59.js → cc2bed07383b16df.js} +1 -1
- package/dist/_next/static/chunks/d4fd43ed181c3c14.js +13 -0
- package/dist/_next/static/chunks/d7e230cf85778001.js +4 -0
- package/dist/_next/static/chunks/f9ec689097ebc987.css +1 -0
- package/dist/_next/static/chunks/{turbopack-42182df38b37704b.js → turbopack-f1a2f377cb54786e.js} +1 -1
- package/dist/_next/static/media/00014e848e9c95b7-s.d3603743.woff2 +0 -0
- package/dist/_next/static/media/004f258d0f697418-s.f344da23.woff2 +0 -0
- package/dist/_next/static/media/0262ded5424bad8d-s.3234df93.woff2 +0 -0
- package/dist/_next/static/media/0481755b59c0d400-s.5359174b.woff2 +0 -0
- package/dist/_next/static/media/06be43540ab2bc8e-s.afd4e7b5.woff2 +0 -0
- package/dist/_next/static/media/0924b4f9801903fa-s.e4ec60ec.woff2 +0 -0
- package/dist/_next/static/media/0a907ae9cb0738dc-s.2ade8a59.woff2 +0 -0
- package/dist/_next/static/media/0de0b9b70e0c5c75-s.9455e08f.woff2 +0 -0
- package/dist/_next/static/media/0ebbd9c63ec5d991-s.81c2963d.woff2 +0 -0
- package/dist/_next/static/media/10e5706cd96c5c09-s.8aca4ca4.woff2 +0 -0
- package/dist/_next/static/media/11e4380658480fc7-s.5ae240d7.woff2 +0 -0
- package/dist/_next/static/media/132c9044aec49244-s.0e791b05.woff2 +0 -0
- package/dist/_next/static/media/174346f0d0efda44-s.35ed1557.woff2 +0 -0
- package/dist/_next/static/media/1adbfbcd49a895b3-s.479c81e3.woff2 +0 -0
- package/dist/_next/static/media/1ba5f184a07c212d-s.ae1f3a4e.woff2 +0 -0
- package/dist/_next/static/media/1f2a0338c1b94ec5-s.24996119.woff2 +0 -0
- package/dist/_next/static/media/1f416efc35ef14e1-s.47c7917f.woff2 +0 -0
- package/dist/_next/static/media/1f5e72047766afb5-s.d7e6fac7.woff2 +0 -0
- package/dist/_next/static/media/25aca0f82a861946-s.9c51b364.woff2 +0 -0
- package/dist/_next/static/media/29c1bd25fe068aca-s.c00bd2bd.woff2 +0 -0
- package/dist/_next/static/media/2a95a63198c96fdb-s.9acda241.woff2 +0 -0
- package/dist/_next/static/media/32cc90dfa31e1e6d-s.a74664c0.woff2 +0 -0
- package/dist/_next/static/media/3b352ddd20b99253-s.5bff2508.woff2 +0 -0
- package/dist/_next/static/media/3b46bc029424e5c7-s.bd4d34bf.woff2 +0 -0
- package/dist/_next/static/media/3e89a536a849f456-s.9e1be6d2.woff2 +0 -0
- package/dist/_next/static/media/425302cee2d83426-s.d1d73ee4.woff2 +0 -0
- package/dist/_next/static/media/44713c84af92323f-s.145e6359.woff2 +0 -0
- package/dist/_next/static/media/487daf28e0ea8cee-s.27080888.woff2 +0 -0
- package/dist/_next/static/media/4a30c6d3c6b046b2-s.ead271e0.woff2 +0 -0
- package/dist/_next/static/media/4c4374b4f4fdec9e-s.218a137f.woff2 +0 -0
- package/dist/_next/static/media/4d40391e737054ed-s.9d94255a.woff2 +0 -0
- package/dist/_next/static/media/58a4dbc789192060-s.31c8ae1a.woff2 +0 -0
- package/dist/_next/static/media/597d03b254439578-s.1323d452.woff2 +0 -0
- package/dist/_next/static/media/5dabd6bccbaafa57-s.5aedae46.woff2 +0 -0
- package/dist/_next/static/media/5e2f6f0b802cfbdf-s.f4440eb7.woff2 +0 -0
- package/dist/_next/static/media/63825990b35916a6-s.c2325c77.woff2 +0 -0
- package/dist/_next/static/media/667c2a78cf80937f-s.7377bb29.woff2 +0 -0
- package/dist/_next/static/media/67da0c40a8bdba86-s.80df1f2f.woff2 +0 -0
- package/dist/_next/static/media/68c88a4880acb7f7-s.4a6bbe64.woff2 +0 -0
- package/dist/_next/static/media/6902b7f764f8d0a2-s.b78a77c2.woff2 +0 -0
- package/dist/_next/static/media/6b84c3d46053599f-s.fc503e19.woff2 +0 -0
- package/dist/_next/static/media/6b867f4692cc1c24-s.ec928ed3.woff2 +0 -0
- package/dist/_next/static/media/6bc37c1816c36115-s.54868a7c.woff2 +0 -0
- package/dist/_next/static/media/6c4747324ffb7ff6-s.a687e43f.woff2 +0 -0
- package/dist/_next/static/media/6d925f981f4b97d5-s.ad8174fa.woff2 +0 -0
- package/dist/_next/static/media/6e784326faefd94f-s.57b35f54.woff2 +0 -0
- package/dist/_next/static/media/6f063d2e3f5ed4b2-s.77058057.woff2 +0 -0
- package/dist/_next/static/media/737d13bbaa7a3560-s.b1f2cb20.woff2 +0 -0
- package/dist/_next/static/media/75e1c015194f1074-s.9a830731.woff2 +0 -0
- package/dist/_next/static/media/75e28cd10e93746b-s.b8c31981.woff2 +0 -0
- package/dist/_next/static/media/768d2384cfda099c-s.32e7e5e6.woff2 +0 -0
- package/dist/_next/static/media/77fbd8b27544ded4-s.ef83a7fe.woff2 +0 -0
- package/dist/_next/static/media/7aef9075d757d3c6-s.33f9c009.woff2 +0 -0
- package/dist/_next/static/media/7b6b92333187c5da-s.7c3d2a56.woff2 +0 -0
- package/dist/_next/static/media/7bbd1d6f5b5dbc91-s.4a8fe726.woff2 +0 -0
- package/dist/_next/static/media/7dc2d1927a47186e-s.85db3769.woff2 +0 -0
- package/dist/_next/static/media/801542a26b39d54e-s.6d23e25a.woff2 +0 -0
- package/dist/_next/static/media/835a033bc99a3004-s.530e1c0e.woff2 +0 -0
- package/dist/_next/static/media/87624f4b68a7ae18-s.8219b4bf.woff2 +0 -0
- package/dist/_next/static/media/89ec3f0752821d2a-s.5b472127.woff2 +0 -0
- package/dist/_next/static/media/8a8a45bc2be6e75f-s.ab5dd8b6.woff2 +0 -0
- package/dist/_next/static/media/8bb075a1b5cd2fb6-s.fae87df3.woff2 +0 -0
- package/dist/_next/static/media/8de34c732618a697-s.2c9fb109.woff2 +0 -0
- package/dist/_next/static/media/8dee343dfe44bd61-s.d7ab8266.woff2 +0 -0
- package/dist/_next/static/media/946daa5a3a89cfc5-s.93af40d3.woff2 +0 -0
- package/dist/_next/static/media/97f69eeaf40202c0-s.08e25883.woff2 +0 -0
- package/dist/_next/static/media/99c899fe62b2196e-s.aa168c88.woff2 +0 -0
- package/dist/_next/static/media/9c1659cbf1d78c40-s.3c005ee7.woff2 +0 -0
- package/dist/_next/static/media/a2d7248a844b869a-s.2fe99030.woff2 +0 -0
- package/dist/_next/static/media/a88ca424fba28a50-s.8f914b75.woff2 +0 -0
- package/dist/_next/static/media/a95445f9f9529239-s.0241ea71.woff2 +0 -0
- package/dist/_next/static/media/a99d8aa8d1d5d84a-s.c4f904fe.woff2 +0 -0
- package/dist/_next/static/media/adc4c24d849b7d22-s.6a6a4da8.woff2 +0 -0
- package/dist/_next/static/media/b2925ad35584ba70-s.518eab91.woff2 +0 -0
- package/dist/_next/static/media/b5c5a3aee3d68f14-s.e9880d5c.woff2 +0 -0
- package/dist/_next/static/media/b5dccbeb735a2e0f-s.14defd14.woff2 +0 -0
- package/dist/_next/static/media/b775ae14120f0c97-s.4abb72ee.woff2 +0 -0
- package/dist/_next/static/media/b95174f56d442c5d-s.4812a252.woff2 +0 -0
- package/dist/_next/static/media/c0aacfec2f1573c0-s.f492f708.woff2 +0 -0
- package/dist/_next/static/media/c4b0b4dcf0f22c7a-s.0cfafb9c.woff2 +0 -0
- package/dist/_next/static/media/c4e4a6761a279a26-s.cde1c1b1.woff2 +0 -0
- package/dist/_next/static/media/c8065fd4f164b3a5-s.bb74a635.woff2 +0 -0
- package/dist/_next/static/media/cd0ac912c441b9b4-s.959b6030.woff2 +0 -0
- package/dist/_next/static/media/d03debd6cf4b3362-s.5c0c5927.woff2 +0 -0
- package/dist/_next/static/media/d3f4c737e8dc0be9-s.12c160ef.woff2 +0 -0
- package/dist/_next/static/media/d95fa6e3c5a4cdd3-s.7ddf94b3.woff2 +0 -0
- package/dist/_next/static/media/e3a5d23087736f5c-s.9ad16c03.woff2 +0 -0
- package/dist/_next/static/media/e3ef056ddd3a2ac5-s.1552ef47.woff2 +0 -0
- package/dist/_next/static/media/e7faabac039536c0-s.8e35a3a3.woff2 +0 -0
- package/dist/_next/static/media/e87c8e66644fea0e-s.df5d4a03.woff2 +0 -0
- package/dist/_next/static/media/e9242943403695a8-s.1b7a452f.woff2 +0 -0
- package/dist/_next/static/media/f15b8acd20219e15-s.8c281e97.woff2 +0 -0
- package/dist/_next/static/media/f4214a50e6a13e82-s.a6a48d6d.woff2 +0 -0
- package/dist/_next/static/media/f4321b0b4a0dbceb-s.6e9655ce.woff2 +0 -0
- package/dist/_next/static/media/f65cb101f1fc3fec-s.5a396dcb.woff2 +0 -0
- package/dist/_next/static/media/f7ef87dd76e798bf-s.79cb5561.woff2 +0 -0
- package/dist/_next/static/media/f8536e6dafe9eb48-s.c050e0ac.woff2 +0 -0
- package/dist/_next/static/media/f8a93f6b396da90f-s.6a44a4b6.woff2 +0 -0
- package/dist/_next/static/media/fa1c512a13c0dddb-s.9f3531ba.woff2 +0 -0
- package/dist/_next/static/media/fab1392add46a006-s.7eb29fd5.woff2 +0 -0
- package/dist/_next/static/media/fb4edce8a3cbfef3-s.p.fe3c897b.woff2 +0 -0
- package/dist/_next/static/media/fc82e7e9b0e3e420-s.8c166144.woff2 +0 -0
- package/dist/_next/static/media/fd4c56e2e3df4865-s.05650364.woff2 +0 -0
- package/dist/_next/static/media/ff968943fd53ca5d-s.d4c93737.woff2 +0 -0
- package/dist/_next/static/media/ffec6e4bb7681106-s.a24cdcb3.woff2 +0 -0
- package/dist/_not-found/__next._full.txt +16 -15
- package/dist/_not-found/__next._head.txt +4 -4
- package/dist/_not-found/__next._index.txt +7 -6
- package/dist/_not-found/__next._not-found.__PAGE__.txt +2 -2
- package/dist/_not-found/__next._not-found.txt +3 -3
- package/dist/_not-found/__next._tree.txt +3 -3
- package/dist/_not-found.html +1 -1
- package/dist/_not-found.txt +16 -15
- package/dist/index.html +1 -1
- package/dist/index.txt +21 -19
- package/package.json +14 -5
- package/dist/_next/static/chunks/41307292ab86fe39.js +0 -1
- package/dist/_next/static/chunks/7521cd4ba12a4d17.css +0 -1
- package/dist/_next/static/chunks/7f3a50588edd3e98.js +0 -1
- package/dist/_next/static/chunks/a43937f87dbafba4.js +0 -1
- package/dist/_next/static/chunks/b4a799ac963d5996.js +0 -323
- package/dist/_next/static/chunks/c24f9dcbcebdbbbc.js +0 -13
- package/dist/_next/static/chunks/d8c9b2a63125f582.js +0 -2
- package/dist/_next/static/chunks/d9468907c0fe03d2.js +0 -4
- /package/dist/_next/static/{Btx0p5I4qNygUnI8kASLN → 49Oims7pQ1EZfR0IVDndf}/_buildManifest.js +0 -0
- /package/dist/_next/static/{Btx0p5I4qNygUnI8kASLN → 49Oims7pQ1EZfR0IVDndf}/_clientMiddlewareManifest.json +0 -0
- /package/dist/_next/static/{Btx0p5I4qNygUnI8kASLN → 49Oims7pQ1EZfR0IVDndf}/_ssgManifest.js +0 -0
package/README.md
CHANGED
|
@@ -24,13 +24,28 @@ npx igiveup
|
|
|
24
24
|
>
|
|
25
25
|
> Options: `--port 8080` `--lang en`
|
|
26
26
|
|
|
27
|
+
### Docker
|
|
28
|
+
|
|
29
|
+
```bash
|
|
30
|
+
docker run -p 8080:8080 supra126/igiveup
|
|
31
|
+
|
|
32
|
+
# With API Key (optional)
|
|
33
|
+
docker run -p 8080:8080 -e GEMINI_API_KEY=your-api-key supra126/igiveup
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
> Open http://localhost:8080
|
|
37
|
+
|
|
38
|
+
### Railway
|
|
39
|
+
|
|
40
|
+
[](https://railway.com/deploy/i-give-up?referralCode=EnYHPz&utm_medium=integration&utm_source=template&utm_campaign=generic)
|
|
41
|
+
|
|
27
42
|
---
|
|
28
43
|
|
|
29
44
|
## Features
|
|
30
45
|
|
|
31
46
|
### Phase 1: Strategy Selection
|
|
32
47
|
|
|
33
|
-
|
|
48
|
+
_The Grind Begins_
|
|
34
49
|
|
|
35
50
|
- **Smart Product Analysis**: Upload product image, AI decodes visual features & brand semantics
|
|
36
51
|
- **3 Strategy Routes**: Instantly generate 3 distinct marketing directions
|
|
@@ -39,17 +54,17 @@ npx igiveup
|
|
|
39
54
|
|
|
40
55
|
### Phase 2: Content Planning
|
|
41
56
|
|
|
42
|
-
|
|
57
|
+
_Still Grinding_
|
|
43
58
|
|
|
44
59
|
#### Multi-Platform Sizes
|
|
45
60
|
|
|
46
|
-
| Size
|
|
47
|
-
|
|
48
|
-
| **1:1 Square**
|
|
49
|
-
| **9:16 Vertical**
|
|
50
|
-
| **4:5 Portrait**
|
|
51
|
-
| **16:9 Landscape** | Covers, ad banners
|
|
52
|
-
| **1:1 Commercial** | Professional product photography
|
|
61
|
+
| Size | Best For |
|
|
62
|
+
| ------------------ | ---------------------------------- |
|
|
63
|
+
| **1:1 Square** | FB posts, IG carousel, e-commerce |
|
|
64
|
+
| **9:16 Vertical** | Stories, Reels, full-screen mobile |
|
|
65
|
+
| **4:5 Portrait** | IG Feed, mobile-optimized |
|
|
66
|
+
| **16:9 Landscape** | Covers, ad banners |
|
|
67
|
+
| **1:1 Commercial** | Professional product photography |
|
|
53
68
|
|
|
54
69
|
#### Content Planning
|
|
55
70
|
|
|
@@ -66,12 +81,13 @@ npx igiveup
|
|
|
66
81
|
|
|
67
82
|
#### Prompt Mode & Reference Mode
|
|
68
83
|
|
|
69
|
-
| Mode
|
|
70
|
-
|
|
71
|
-
| **Prompt**
|
|
84
|
+
| Mode | Description |
|
|
85
|
+
| ------------- | ------------------------------------ |
|
|
86
|
+
| **Prompt** | Generate from AI visual prompts |
|
|
72
87
|
| **Reference** | Upload reference, control similarity |
|
|
73
88
|
|
|
74
89
|
**Similarity Levels:**
|
|
90
|
+
|
|
75
91
|
- Low: Creative freedom (only color tone & mood)
|
|
76
92
|
- Medium: Moderate reference (lighting & colors, flexible composition)
|
|
77
93
|
- High: Close match (composition, layout, style)
|
|
@@ -88,15 +104,15 @@ npx igiveup
|
|
|
88
104
|
|
|
89
105
|
## Tech Stack
|
|
90
106
|
|
|
91
|
-
| Category
|
|
92
|
-
|
|
93
|
-
| Framework | Next.js 16 + React 19 + TypeScript
|
|
94
|
-
| AI Models | Google Gemini
|
|
95
|
-
|
|
|
96
|
-
|
|
|
97
|
-
| Styling
|
|
98
|
-
| Fonts
|
|
99
|
-
| Auth
|
|
107
|
+
| Category | Technology |
|
|
108
|
+
| --------- | -------------------------------------------------------------- |
|
|
109
|
+
| Framework | Next.js 16 + React 19 + TypeScript |
|
|
110
|
+
| AI Models | Google Gemini |
|
|
111
|
+
| | `gemini-2.5-flash` (text analysis & content planning) |
|
|
112
|
+
| | `gemini-3-pro-image-preview` (image generation) |
|
|
113
|
+
| Styling | Tailwind CSS |
|
|
114
|
+
| Fonts | Inter + Playfair Display (UI), Noto Sans TC (generated images) |
|
|
115
|
+
| Auth | Cloudflare Zero Trust (optional) |
|
|
100
116
|
|
|
101
117
|
---
|
|
102
118
|
|
|
@@ -134,7 +150,7 @@ pnpm start
|
|
|
134
150
|
# Static version (GitHub Pages, Cloudflare Pages, etc.)
|
|
135
151
|
pnpm build:static
|
|
136
152
|
pnpm start:static # Local test
|
|
137
|
-
# Output: ./
|
|
153
|
+
# Output: ./dist
|
|
138
154
|
```
|
|
139
155
|
|
|
140
156
|
### Environment Variables
|
|
@@ -164,13 +180,13 @@ CF_ACCESS_AUD=your-application-aud
|
|
|
164
180
|
|
|
165
181
|
### Server vs Static Build
|
|
166
182
|
|
|
167
|
-
| Feature
|
|
168
|
-
|
|
169
|
-
| API Key
|
|
170
|
-
| Rate Limiting | Server-controlled
|
|
171
|
-
| Zero Trust
|
|
172
|
-
| Deployment
|
|
173
|
-
| Output
|
|
183
|
+
| Feature | Server | Static |
|
|
184
|
+
| ------------- | --------------------- | ------------------ |
|
|
185
|
+
| API Key | Server-side supported | User must provide |
|
|
186
|
+
| Rate Limiting | Server-controlled | None |
|
|
187
|
+
| Zero Trust | Supported | Not supported |
|
|
188
|
+
| Deployment | Node.js server | Any static hosting |
|
|
189
|
+
| Output | `.next/` | `dist/` |
|
|
174
190
|
|
|
175
191
|
---
|
|
176
192
|
|
|
@@ -205,57 +221,24 @@ CF_ACCESS_AUD=your-application-aud
|
|
|
205
221
|
|
|
206
222
|
---
|
|
207
223
|
|
|
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
224
|
## Why This Exists
|
|
245
225
|
|
|
246
226
|
### User Experience
|
|
227
|
+
|
|
247
228
|
- Zero design skills needed
|
|
248
229
|
- Fast response (~3 sec strategy)
|
|
249
230
|
- Smooth UX with polished animations
|
|
250
231
|
- Full control over AI-generated content
|
|
251
232
|
|
|
252
233
|
### Marketing Expertise
|
|
234
|
+
|
|
253
235
|
- Brand consistency based on story & features
|
|
254
236
|
- Competitor insights from reference copy
|
|
255
237
|
- Multi-angle strategies (feature, emotion, data)
|
|
256
238
|
- Multi-platform support in one go
|
|
257
239
|
|
|
258
240
|
### Technical Advantages
|
|
241
|
+
|
|
259
242
|
- Cost-optimized - only generate what's needed
|
|
260
243
|
- Flexible deployment - server or static
|
|
261
244
|
- Enterprise-ready - Cloudflare Zero Trust integration
|
|
@@ -270,14 +253,14 @@ Don't want to work alone? Neither do we.
|
|
|
270
253
|
- **Feature idea?** Let's discuss
|
|
271
254
|
- **Want to code?** PRs welcome
|
|
272
255
|
|
|
273
|
-
>
|
|
256
|
+
> _"I don't want to work hard, but I'll review your PR."_ — The Maintainers
|
|
274
257
|
|
|
275
258
|
---
|
|
276
259
|
|
|
277
260
|
## Authors
|
|
278
261
|
|
|
279
262
|
| <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
|
-
|
|
263
|
+
| :-------------------------------------------------------------------------------------------------------------------------------: | :---------------------------------------------------------------------------------------------------------------------------------------: |
|
|
281
264
|
|
|
282
265
|
---
|
|
283
266
|
|
|
@@ -317,7 +300,22 @@ npx igiveup
|
|
|
317
300
|
|
|
318
301
|
> 一行指令啟動
|
|
319
302
|
>
|
|
320
|
-
> 選項: `--port 8080` `--lang
|
|
303
|
+
> 選項: `--port 8080` `--lang zh`
|
|
304
|
+
|
|
305
|
+
### Docker
|
|
306
|
+
|
|
307
|
+
```bash
|
|
308
|
+
docker run -p 8080:8080 supra126/igiveup
|
|
309
|
+
|
|
310
|
+
# 帶 API Key(可選)
|
|
311
|
+
docker run -p 8080:8080 -e GEMINI_API_KEY=your-api-key supra126/igiveup
|
|
312
|
+
```
|
|
313
|
+
|
|
314
|
+
> 開啟 http://localhost:8080
|
|
315
|
+
|
|
316
|
+
### Railway
|
|
317
|
+
|
|
318
|
+
[](https://railway.com/deploy/i-give-up?referralCode=EnYHPz&utm_medium=integration&utm_source=template&utm_campaign=generic)
|
|
321
319
|
|
|
322
320
|
---
|
|
323
321
|
|
|
@@ -325,7 +323,7 @@ npx igiveup
|
|
|
325
323
|
|
|
326
324
|
### 第一階段:視覺策略選擇
|
|
327
325
|
|
|
328
|
-
|
|
326
|
+
_讓我努力步驟一_
|
|
329
327
|
|
|
330
328
|
- **智能產品分析**:上傳產品圖片,AI 自動解讀視覺特徵與品牌語意
|
|
331
329
|
- **三條策略路線**:即時生成 3 種截然不同的行銷策略方向
|
|
@@ -334,17 +332,17 @@ npx igiveup
|
|
|
334
332
|
|
|
335
333
|
### 第二階段:完整內容企劃
|
|
336
334
|
|
|
337
|
-
|
|
335
|
+
_不努力步驟二_
|
|
338
336
|
|
|
339
337
|
#### 多平台尺寸支援
|
|
340
338
|
|
|
341
|
-
| 尺寸
|
|
342
|
-
|
|
343
|
-
| **1:1 方形圖**
|
|
339
|
+
| 尺寸 | 適用場景 |
|
|
340
|
+
| ----------------- | --------------------------- |
|
|
341
|
+
| **1:1 方形圖** | FB 貼文、IG 輪播、電商主圖 |
|
|
344
342
|
| **9:16 直式長圖** | 限時動態、Reels、手機全螢幕 |
|
|
345
|
-
| **4:5 直式圖**
|
|
346
|
-
| **16:9 橫式長圖** | 封面、廣告圖片
|
|
347
|
-
| **1:1 商業攝影**
|
|
343
|
+
| **4:5 直式圖** | IG Feed 主頁、優化手機瀏覽 |
|
|
344
|
+
| **16:9 橫式長圖** | 封面、廣告圖片 |
|
|
345
|
+
| **1:1 商業攝影** | 專業商品攝影風格 |
|
|
348
346
|
|
|
349
347
|
#### 內容企劃功能
|
|
350
348
|
|
|
@@ -361,12 +359,13 @@ npx igiveup
|
|
|
361
359
|
|
|
362
360
|
#### 提詞版 & 參考版
|
|
363
361
|
|
|
364
|
-
| 模式
|
|
365
|
-
|
|
362
|
+
| 模式 | 說明 |
|
|
363
|
+
| ---------- | ------------------------------ |
|
|
366
364
|
| **提詞版** | 使用 AI 生成的視覺 Prompt 創作 |
|
|
367
|
-
| **參考版** | 上傳參考圖片,控制相似度生成
|
|
365
|
+
| **參考版** | 上傳參考圖片,控制相似度生成 |
|
|
368
366
|
|
|
369
367
|
**相似度控制:**
|
|
368
|
+
|
|
370
369
|
- 低:創意自由(僅參考色調與氛圍)
|
|
371
370
|
- 中:適度參考(光線與色彩,構圖彈性)
|
|
372
371
|
- 高:高度相似(構圖、佈局、風格)
|
|
@@ -383,15 +382,15 @@ npx igiveup
|
|
|
383
382
|
|
|
384
383
|
## 技術棧
|
|
385
384
|
|
|
386
|
-
| 類別
|
|
387
|
-
|
|
388
|
-
| 框架
|
|
389
|
-
| AI 模型 | Google Gemini
|
|
390
|
-
|
|
|
391
|
-
|
|
|
392
|
-
| 樣式
|
|
393
|
-
| 字體
|
|
394
|
-
| 認證
|
|
385
|
+
| 類別 | 技術 |
|
|
386
|
+
| ------- | ---------------------------------------------------------- |
|
|
387
|
+
| 框架 | Next.js 16 + React 19 + TypeScript |
|
|
388
|
+
| AI 模型 | Google Gemini |
|
|
389
|
+
| | `gemini-2.5-flash`(文字分析與內容規劃) |
|
|
390
|
+
| | `gemini-3-pro-image-preview`(專業圖片生成) |
|
|
391
|
+
| 樣式 | Tailwind CSS |
|
|
392
|
+
| 字體 | Inter + Playfair Display(介面)、Noto Sans TC(生成圖片) |
|
|
393
|
+
| 認證 | Cloudflare Zero Trust(選填) |
|
|
395
394
|
|
|
396
395
|
---
|
|
397
396
|
|
|
@@ -429,7 +428,7 @@ pnpm start
|
|
|
429
428
|
# 靜態版(可部署到 GitHub Pages、Cloudflare Pages 等)
|
|
430
429
|
pnpm build:static
|
|
431
430
|
pnpm start:static # 本地測試
|
|
432
|
-
# 輸出目錄: ./
|
|
431
|
+
# 輸出目錄: ./dist
|
|
433
432
|
```
|
|
434
433
|
|
|
435
434
|
### 環境變數設定
|
|
@@ -459,13 +458,13 @@ CF_ACCESS_AUD=your-application-aud
|
|
|
459
458
|
|
|
460
459
|
### 伺服器版 vs 靜態版
|
|
461
460
|
|
|
462
|
-
| 功能
|
|
463
|
-
|
|
464
|
-
| API 金鑰
|
|
465
|
-
| 速率限制
|
|
466
|
-
| Zero Trust | 支援
|
|
467
|
-
| 部署方式
|
|
468
|
-
| 輸出目錄
|
|
461
|
+
| 功能 | 伺服器版 | 靜態版 |
|
|
462
|
+
| ---------- | -------------- | ------------ |
|
|
463
|
+
| API 金鑰 | 支援伺服器端 | 用戶必須提供 |
|
|
464
|
+
| 速率限制 | 伺服器控制 | 無 |
|
|
465
|
+
| Zero Trust | 支援 | 不支援 |
|
|
466
|
+
| 部署方式 | Node.js 伺服器 | 任何靜態託管 |
|
|
467
|
+
| 輸出目錄 | `.next/` | `dist/` |
|
|
469
468
|
|
|
470
469
|
---
|
|
471
470
|
|
|
@@ -500,57 +499,24 @@ CF_ACCESS_AUD=your-application-aud
|
|
|
500
499
|
|
|
501
500
|
---
|
|
502
501
|
|
|
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
502
|
## 為什麼做這個
|
|
540
503
|
|
|
541
504
|
### 使用者體驗
|
|
505
|
+
|
|
542
506
|
- 零設計門檻
|
|
543
507
|
- 極速響應(約 3 秒完成策略分析)
|
|
544
508
|
- 流暢體驗,精緻動畫
|
|
545
509
|
- AI 生成內容完全可控
|
|
546
510
|
|
|
547
511
|
### 行銷專業
|
|
512
|
+
|
|
548
513
|
- 基於品牌故事與特色的品牌一致性
|
|
549
514
|
- 從參考文案獲得競品洞察
|
|
550
515
|
- 多角度策略(功能、情感、數據)
|
|
551
516
|
- 一次支援多平台
|
|
552
517
|
|
|
553
518
|
### 技術優勢
|
|
519
|
+
|
|
554
520
|
- 成本優化 - 只生成需要的內容
|
|
555
521
|
- 彈性部署 - 伺服器或靜態皆可
|
|
556
522
|
- 企業整合 - Cloudflare Zero Trust 支援
|
|
@@ -565,14 +531,14 @@ IGiveUpOnLife/
|
|
|
565
531
|
- **功能建議?** 來討論看看
|
|
566
532
|
- **想寫程式?** 歡迎 PR
|
|
567
533
|
|
|
568
|
-
>
|
|
534
|
+
> _「我不想努力了,但我會 review 你的 PR。」_ — 維護者們
|
|
569
535
|
|
|
570
536
|
---
|
|
571
537
|
|
|
572
538
|
## 作者
|
|
573
539
|
|
|
574
540
|
| <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
|
-
|
|
541
|
+
| :-------------------------------------------------------------------------------------------------------------------------------: | :---------------------------------------------------------------------------------------------------------------------------------------: |
|
|
576
542
|
|
|
577
543
|
---
|
|
578
544
|
|
package/bin/cli.js
CHANGED
|
@@ -225,39 +225,37 @@ function openBrowser(url) {
|
|
|
225
225
|
}
|
|
226
226
|
}
|
|
227
227
|
|
|
228
|
+
// ANSI color codes
|
|
229
|
+
const colors = {
|
|
230
|
+
reset: "\x1b[0m",
|
|
231
|
+
cyan: "\x1b[36m",
|
|
232
|
+
green: "\x1b[32m",
|
|
233
|
+
yellow: "\x1b[33m",
|
|
234
|
+
dim: "\x1b[2m",
|
|
235
|
+
bold: "\x1b[1m",
|
|
236
|
+
};
|
|
237
|
+
|
|
228
238
|
// 啟動伺服器
|
|
229
239
|
server.listen(port, () => {
|
|
230
240
|
const url = `http://localhost:${port}`;
|
|
231
|
-
|
|
232
|
-
// Dynamic width based on content
|
|
233
|
-
const line1 = `🎨 ${t.title}`;
|
|
234
|
-
const line2 = `${t.serverStarted}: ${url}`;
|
|
235
|
-
const line3 = `📝 ${t.instructions}:`;
|
|
236
|
-
const line4 = `1. ${t.step1}`;
|
|
237
|
-
const line5 = `2. ${t.step2}`;
|
|
238
|
-
const line6 = `3. ${t.step3}`;
|
|
239
|
-
const line7 = `🔑 ${t.getApiKey}:`;
|
|
240
|
-
const line8 = `https://aistudio.google.com/app/apikey`;
|
|
241
|
-
const line9 = t.pressCtrlC;
|
|
241
|
+
const separator = "━".repeat(45);
|
|
242
242
|
|
|
243
243
|
console.log(`
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
║ ║
|
|
260
|
-
╚════════════════════════════════════════════════════════════╝
|
|
244
|
+
${colors.cyan}${colors.bold}🎨 ${t.title}${colors.reset}
|
|
245
|
+
${colors.dim}${separator}${colors.reset}
|
|
246
|
+
|
|
247
|
+
${colors.green}✓${colors.reset} ${t.serverStarted}: ${colors.cyan}${url}${colors.reset}
|
|
248
|
+
|
|
249
|
+
${colors.yellow}📝 ${t.instructions}:${colors.reset}
|
|
250
|
+
1. ${t.step1}
|
|
251
|
+
2. ${t.step2}
|
|
252
|
+
3. ${t.step3}
|
|
253
|
+
|
|
254
|
+
${colors.yellow}🔑 ${t.getApiKey}:${colors.reset}
|
|
255
|
+
${colors.dim}https://aistudio.google.com/app/apikey${colors.reset}
|
|
256
|
+
|
|
257
|
+
${colors.dim}${separator}${colors.reset}
|
|
258
|
+
${colors.dim}${t.pressCtrlC}${colors.reset}
|
|
261
259
|
`);
|
|
262
260
|
|
|
263
261
|
// 自動開啟瀏覽器
|
package/dist/404.html
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
<!DOCTYPE html><!--
|
|
1
|
+
<!DOCTYPE html><!--49Oims7pQ1EZfR0IVDndf--><html lang="zh-TW" class="noto_sans_tc_a7549988-module__7yaLFW__variable"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="stylesheet" href="/_next/static/chunks/f9ec689097ebc987.css" data-precedence="next"/><link rel="stylesheet" href="/_next/static/chunks/6c19b4bfc6ff265c.css" data-precedence="next"/><link rel="preload" as="script" fetchPriority="low" href="/_next/static/chunks/51fc93af44d91b77.js"/><script src="/_next/static/chunks/3900c8b574893467.js" async=""></script><script src="/_next/static/chunks/d7e230cf85778001.js" async=""></script><script src="/_next/static/chunks/turbopack-f1a2f377cb54786e.js" async=""></script><script src="/_next/static/chunks/cc2bed07383b16df.js" async=""></script><script src="/_next/static/chunks/22fc8eaca9ee64bc.js" async=""></script><script src="/_next/static/chunks/7eb5861ee097b323.js" async=""></script><script src="/_next/static/chunks/10cafdb3ff8cde3d.js" async=""></script><script src="/_next/static/chunks/63d05db48d1b3476.js" async=""></script><meta name="robots" content="noindex"/><meta name="next-size-adjust" content=""/><title>不想努力了 I Give Up</title><meta name="description" content="AI 驅動的產品行銷內容設計工具"/><link rel="icon" href="/icon?140e72a8a8e48b2f" type="image/png" sizes="32x32"/><link rel="apple-touch-icon" href="/apple-icon?e7fde030fe27eb68" type="image/png" sizes="180x180"/><script src="/_next/static/chunks/a6dad97d9634a72d.js" noModule=""></script></head><body class="noto_sans_tc_a7549988-module__7yaLFW__className"><div hidden=""><!--$--><!--/$--></div><div class="bg-dynamic"><div class="bg-grid"></div><div class="bg-glow"></div></div><script src="/_next/static/chunks/51fc93af44d91b77.js" id="_R_" async=""></script><script>(self.__next_f=self.__next_f||[]).push([0])</script><script>self.__next_f.push([1,"1:\"$Sreact.fragment\"\n2:I[29712,[\"/_next/static/chunks/cc2bed07383b16df.js\"],\"LocaleProvider\"]\n3:I[62447,[\"/_next/static/chunks/22fc8eaca9ee64bc.js\",\"/_next/static/chunks/7eb5861ee097b323.js\"],\"default\"]\n4:I[8821,[\"/_next/static/chunks/cc2bed07383b16df.js\",\"/_next/static/chunks/10cafdb3ff8cde3d.js\"],\"default\"]\n5:I[92699,[\"/_next/static/chunks/22fc8eaca9ee64bc.js\",\"/_next/static/chunks/7eb5861ee097b323.js\"],\"default\"]\n6:I[87625,[\"/_next/static/chunks/22fc8eaca9ee64bc.js\",\"/_next/static/chunks/7eb5861ee097b323.js\"],\"OutletBoundary\"]\n7:\"$Sreact.suspense\"\n9:I[87625,[\"/_next/static/chunks/22fc8eaca9ee64bc.js\",\"/_next/static/chunks/7eb5861ee097b323.js\"],\"ViewportBoundary\"]\nb:I[87625,[\"/_next/static/chunks/22fc8eaca9ee64bc.js\",\"/_next/static/chunks/7eb5861ee097b323.js\"],\"MetadataBoundary\"]\nd:I[53348,[\"/_next/static/chunks/63d05db48d1b3476.js\"],\"default\"]\n:HL[\"/_next/static/chunks/f9ec689097ebc987.css\",\"style\"]\n:HL[\"/_next/static/chunks/6c19b4bfc6ff265c.css\",\"style\"]\n"])</script><script>self.__next_f.push([1,"0:{\"P\":null,\"b\":\"49Oims7pQ1EZfR0IVDndf\",\"c\":[\"\",\"_not-found\"],\"q\":\"\",\"i\":false,\"f\":[[[\"\",{\"children\":[\"/_not-found\",{\"children\":[\"__PAGE__\",{}]}]},\"$undefined\",\"$undefined\",true],[[\"$\",\"$1\",\"c\",{\"children\":[[[\"$\",\"link\",\"0\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/chunks/f9ec689097ebc987.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\",\"nonce\":\"$undefined\"}],[\"$\",\"link\",\"1\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/chunks/6c19b4bfc6ff265c.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\",\"nonce\":\"$undefined\"}],[\"$\",\"script\",\"script-0\",{\"src\":\"/_next/static/chunks/cc2bed07383b16df.js\",\"async\":true,\"nonce\":\"$undefined\"}]],[\"$\",\"html\",null,{\"lang\":\"zh-TW\",\"suppressHydrationWarning\":true,\"className\":\"noto_sans_tc_a7549988-module__7yaLFW__variable\",\"children\":[\"$\",\"body\",null,{\"className\":\"noto_sans_tc_a7549988-module__7yaLFW__className\",\"children\":[[\"$\",\"div\",null,{\"className\":\"bg-dynamic\",\"children\":[[\"$\",\"div\",null,{\"className\":\"bg-grid\"}],[\"$\",\"div\",null,{\"className\":\"bg-glow\"}]]}],[\"$\",\"$L2\",null,{\"children\":[\"$\",\"$L3\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$4\",\"errorStyles\":[],\"errorScripts\":[[\"$\",\"script\",\"script-0\",{\"src\":\"/_next/static/chunks/10cafdb3ff8cde3d.js\",\"async\":true}]],\"template\":[\"$\",\"$L5\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":[[[\"$\",\"title\",null,{\"children\":\"404: This page could not be found.\"}],[\"$\",\"div\",null,{\"style\":{\"fontFamily\":\"system-ui,\\\"Segoe UI\\\",Roboto,Helvetica,Arial,sans-serif,\\\"Apple Color Emoji\\\",\\\"Segoe UI Emoji\\\"\",\"height\":\"100vh\",\"textAlign\":\"center\",\"display\":\"flex\",\"flexDirection\":\"column\",\"alignItems\":\"center\",\"justifyContent\":\"center\"},\"children\":[\"$\",\"div\",null,{\"children\":[[\"$\",\"style\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}\"}}],[\"$\",\"h1\",null,{\"className\":\"next-error-h1\",\"style\":{\"display\":\"inline-block\",\"margin\":\"0 20px 0 0\",\"padding\":\"0 23px 0 0\",\"fontSize\":24,\"fontWeight\":500,\"verticalAlign\":\"top\",\"lineHeight\":\"49px\"},\"children\":404}],[\"$\",\"div\",null,{\"style\":{\"display\":\"inline-block\"},\"children\":[\"$\",\"h2\",null,{\"style\":{\"fontSize\":14,\"fontWeight\":400,\"lineHeight\":\"49px\",\"margin\":0},\"children\":\"This page could not be found.\"}]}]]}]}]],[]],\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]}]]}]}]]}],{\"children\":[[\"$\",\"$1\",\"c\",{\"children\":[null,[\"$\",\"$L3\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L5\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]]}],{\"children\":[[\"$\",\"$1\",\"c\",{\"children\":[[[\"$\",\"title\",null,{\"children\":\"404: This page could not be found.\"}],[\"$\",\"div\",null,{\"style\":\"$0:f:0:1:0:props:children:1:props:children:props:children:1:props:children:props:notFound:0:1:props:style\",\"children\":[\"$\",\"div\",null,{\"children\":[[\"$\",\"style\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}\"}}],[\"$\",\"h1\",null,{\"className\":\"next-error-h1\",\"style\":\"$0:f:0:1:0:props:children:1:props:children:props:children:1:props:children:props:notFound:0:1:props:children:props:children:1:props:style\",\"children\":404}],[\"$\",\"div\",null,{\"style\":\"$0:f:0:1:0:props:children:1:props:children:props:children:1:props:children:props:notFound:0:1:props:children:props:children:2:props:style\",\"children\":[\"$\",\"h2\",null,{\"style\":\"$0:f:0:1:0:props:children:1:props:children:props:children:1:props:children:props:notFound:0:1:props:children:props:children:2:props:children:props:style\",\"children\":\"This page could not be found.\"}]}]]}]}]],null,[\"$\",\"$L6\",null,{\"children\":[\"$\",\"$7\",null,{\"name\":\"Next.MetadataOutlet\",\"children\":\"$@8\"}]}]]}],{},null,false,false]},null,false,false]},null,false,false],[\"$\",\"$1\",\"h\",{\"children\":[[\"$\",\"meta\",null,{\"name\":\"robots\",\"content\":\"noindex\"}],[\"$\",\"$L9\",null,{\"children\":\"$@a\"}],[\"$\",\"div\",null,{\"hidden\":true,\"children\":[\"$\",\"$Lb\",null,{\"children\":[\"$\",\"$7\",null,{\"name\":\"Next.Metadata\",\"children\":\"$@c\"}]}]}],[\"$\",\"meta\",null,{\"name\":\"next-size-adjust\",\"content\":\"\"}]]}],false]],\"m\":\"$undefined\",\"G\":[\"$d\",[]],\"S\":true}\n"])</script><script>self.__next_f.push([1,"a:[[\"$\",\"meta\",\"0\",{\"charSet\":\"utf-8\"}],[\"$\",\"meta\",\"1\",{\"name\":\"viewport\",\"content\":\"width=device-width, initial-scale=1\"}]]\n"])</script><script>self.__next_f.push([1,"e:I[65893,[\"/_next/static/chunks/22fc8eaca9ee64bc.js\",\"/_next/static/chunks/7eb5861ee097b323.js\"],\"IconMark\"]\nc:[[\"$\",\"title\",\"0\",{\"children\":\"不想努力了 I Give Up\"}],[\"$\",\"meta\",\"1\",{\"name\":\"description\",\"content\":\"AI 驅動的產品行銷內容設計工具\"}],[\"$\",\"link\",\"2\",{\"rel\":\"icon\",\"href\":\"/icon?140e72a8a8e48b2f\",\"alt\":\"$undefined\",\"type\":\"image/png\",\"sizes\":\"32x32\"}],[\"$\",\"link\",\"3\",{\"rel\":\"apple-touch-icon\",\"href\":\"/apple-icon?e7fde030fe27eb68\",\"alt\":\"$undefined\",\"type\":\"image/png\",\"sizes\":\"180x180\"}],[\"$\",\"$Le\",\"4\",{}]]\n8:null\n"])</script></body></html>
|
package/dist/__next.__PAGE__.txt
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
1:"$Sreact.fragment"
|
|
2
|
-
2:I[
|
|
3
|
-
3:I[31713,["/_next/static/chunks/
|
|
4
|
-
6:I[
|
|
2
|
+
2:I[72479,["/_next/static/chunks/22fc8eaca9ee64bc.js","/_next/static/chunks/7eb5861ee097b323.js"],"ClientPageRoot"]
|
|
3
|
+
3:I[31713,["/_next/static/chunks/cc2bed07383b16df.js","/_next/static/chunks/89319efd744d13b7.js","/_next/static/chunks/d4fd43ed181c3c14.js"],"default"]
|
|
4
|
+
6:I[87625,["/_next/static/chunks/22fc8eaca9ee64bc.js","/_next/static/chunks/7eb5861ee097b323.js"],"OutletBoundary"]
|
|
5
5
|
7:"$Sreact.suspense"
|
|
6
|
-
0:{"buildId":"
|
|
6
|
+
0:{"buildId":"49Oims7pQ1EZfR0IVDndf","rsc":["$","$1","c",{"children":[["$","$L2",null,{"Component":"$3","serverProvidedParams":{"searchParams":{},"params":{},"promises":["$@4","$@5"]}}],[["$","script","script-0",{"src":"/_next/static/chunks/89319efd744d13b7.js","async":true}],["$","script","script-1",{"src":"/_next/static/chunks/d4fd43ed181c3c14.js","async":true}]],["$","$L6",null,{"children":["$","$7",null,{"name":"Next.MetadataOutlet","children":"$@8"}]}]]}],"loading":null,"isPartial":false}
|
|
7
7
|
4:{}
|
|
8
8
|
5:"$0:rsc:props:children:0:props:serverProvidedParams:params"
|
|
9
9
|
8:null
|
package/dist/__next._full.txt
CHANGED
|
@@ -1,20 +1,22 @@
|
|
|
1
1
|
1:"$Sreact.fragment"
|
|
2
|
-
2:I[29712,["/_next/static/chunks/
|
|
3
|
-
3:I[
|
|
4
|
-
4:I[
|
|
5
|
-
5:I[
|
|
6
|
-
6:I[
|
|
7
|
-
|
|
8
|
-
a:"
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
:
|
|
13
|
-
:HL["
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
2
|
+
2:I[29712,["/_next/static/chunks/cc2bed07383b16df.js"],"LocaleProvider"]
|
|
3
|
+
3:I[62447,["/_next/static/chunks/22fc8eaca9ee64bc.js","/_next/static/chunks/7eb5861ee097b323.js"],"default"]
|
|
4
|
+
4:I[8821,["/_next/static/chunks/cc2bed07383b16df.js","/_next/static/chunks/10cafdb3ff8cde3d.js"],"default"]
|
|
5
|
+
5:I[92699,["/_next/static/chunks/22fc8eaca9ee64bc.js","/_next/static/chunks/7eb5861ee097b323.js"],"default"]
|
|
6
|
+
6:I[72479,["/_next/static/chunks/22fc8eaca9ee64bc.js","/_next/static/chunks/7eb5861ee097b323.js"],"ClientPageRoot"]
|
|
7
|
+
7:I[31713,["/_next/static/chunks/cc2bed07383b16df.js","/_next/static/chunks/89319efd744d13b7.js","/_next/static/chunks/d4fd43ed181c3c14.js"],"default"]
|
|
8
|
+
a:I[87625,["/_next/static/chunks/22fc8eaca9ee64bc.js","/_next/static/chunks/7eb5861ee097b323.js"],"OutletBoundary"]
|
|
9
|
+
b:"$Sreact.suspense"
|
|
10
|
+
d:I[87625,["/_next/static/chunks/22fc8eaca9ee64bc.js","/_next/static/chunks/7eb5861ee097b323.js"],"ViewportBoundary"]
|
|
11
|
+
f:I[87625,["/_next/static/chunks/22fc8eaca9ee64bc.js","/_next/static/chunks/7eb5861ee097b323.js"],"MetadataBoundary"]
|
|
12
|
+
11:I[53348,["/_next/static/chunks/63d05db48d1b3476.js"],"default"]
|
|
13
|
+
:HL["/_next/static/chunks/f9ec689097ebc987.css","style"]
|
|
14
|
+
:HL["/_next/static/chunks/6c19b4bfc6ff265c.css","style"]
|
|
15
|
+
:HL["/_next/static/media/fb4edce8a3cbfef3-s.p.fe3c897b.woff2","font",{"crossOrigin":"","type":"font/woff2"}]
|
|
16
|
+
0:{"P":null,"b":"49Oims7pQ1EZfR0IVDndf","c":["",""],"q":"","i":false,"f":[[["",{"children":["__PAGE__",{}]},"$undefined","$undefined",true],[["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/chunks/f9ec689097ebc987.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}],["$","link","1",{"rel":"stylesheet","href":"/_next/static/chunks/6c19b4bfc6ff265c.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}],["$","script","script-0",{"src":"/_next/static/chunks/cc2bed07383b16df.js","async":true,"nonce":"$undefined"}]],["$","html",null,{"lang":"zh-TW","suppressHydrationWarning":true,"className":"noto_sans_tc_a7549988-module__7yaLFW__variable","children":["$","body",null,{"className":"noto_sans_tc_a7549988-module__7yaLFW__className","children":[["$","div",null,{"className":"bg-dynamic","children":[["$","div",null,{"className":"bg-grid"}],["$","div",null,{"className":"bg-glow"}]]}],["$","$L2",null,{"children":["$","$L3",null,{"parallelRouterKey":"children","error":"$4","errorStyles":[],"errorScripts":[["$","script","script-0",{"src":"/_next/static/chunks/10cafdb3ff8cde3d.js","async":true}]],"template":["$","$L5",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":[[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":404}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],[]],"forbidden":"$undefined","unauthorized":"$undefined"}]}]]}]}]]}],{"children":[["$","$1","c",{"children":[["$","$L6",null,{"Component":"$7","serverProvidedParams":{"searchParams":{},"params":{},"promises":["$@8","$@9"]}}],[["$","script","script-0",{"src":"/_next/static/chunks/89319efd744d13b7.js","async":true,"nonce":"$undefined"}],["$","script","script-1",{"src":"/_next/static/chunks/d4fd43ed181c3c14.js","async":true,"nonce":"$undefined"}]],["$","$La",null,{"children":["$","$b",null,{"name":"Next.MetadataOutlet","children":"$@c"}]}]]}],{},null,false,false]},null,false,false],["$","$1","h",{"children":[null,["$","$Ld",null,{"children":"$@e"}],["$","div",null,{"hidden":true,"children":["$","$Lf",null,{"children":["$","$b",null,{"name":"Next.Metadata","children":"$@10"}]}]}],["$","meta",null,{"name":"next-size-adjust","content":""}]]}],false]],"m":"$undefined","G":["$11",[]],"S":true}
|
|
17
|
+
8:{}
|
|
18
|
+
9:"$0:f:0:1:1:children:0:props:children:0:props:serverProvidedParams:params"
|
|
19
|
+
e:[["$","meta","0",{"charSet":"utf-8"}],["$","meta","1",{"name":"viewport","content":"width=device-width, initial-scale=1"}]]
|
|
20
|
+
12:I[65893,["/_next/static/chunks/22fc8eaca9ee64bc.js","/_next/static/chunks/7eb5861ee097b323.js"],"IconMark"]
|
|
21
|
+
10:[["$","title","0",{"children":"不想努力了 I Give Up"}],["$","meta","1",{"name":"description","content":"AI 驅動的產品行銷內容設計工具"}],["$","link","2",{"rel":"icon","href":"/icon?140e72a8a8e48b2f","alt":"$undefined","type":"image/png","sizes":"32x32"}],["$","link","3",{"rel":"apple-touch-icon","href":"/apple-icon?e7fde030fe27eb68","alt":"$undefined","type":"image/png","sizes":"180x180"}],["$","$L12","4",{}]]
|
|
22
|
+
c:null
|