@danhachuel/thunderbolt 0.7.67 → 0.7.69
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/app/main.py +45 -11
- package/package.json +1 -1
- package/seed/blueprints/thumbnails/ORACAO_Thumbnail_Blueprint.md +181 -231
package/app/main.py
CHANGED
|
@@ -44,6 +44,20 @@ if str(ROOT) not in sys.path:
|
|
|
44
44
|
sys.path.insert(0, str(ROOT))
|
|
45
45
|
|
|
46
46
|
|
|
47
|
+
@st.cache_data(show_spinner=False, max_entries=256)
|
|
48
|
+
def _cached_file_bytes(path_string: str, modified_ns: int, size: int) -> bytes:
|
|
49
|
+
"""Cache card/download payloads while invalidating automatically after file changes."""
|
|
50
|
+
del modified_ns, size
|
|
51
|
+
return Path(path_string).read_bytes()
|
|
52
|
+
|
|
53
|
+
|
|
54
|
+
def _file_bytes(path: Path | None) -> bytes:
|
|
55
|
+
if not path or not path.is_file():
|
|
56
|
+
return b""
|
|
57
|
+
stat = path.stat()
|
|
58
|
+
return _cached_file_bytes(str(path.resolve()), int(stat.st_mtime_ns), int(stat.st_size))
|
|
59
|
+
|
|
60
|
+
|
|
47
61
|
def _load_local_env() -> None:
|
|
48
62
|
for env_path in (ROOT / ".env", Path.cwd() / ".env"):
|
|
49
63
|
try:
|
|
@@ -5957,7 +5971,7 @@ def render_thumbnails():
|
|
|
5957
5971
|
# deprecation warning can be emitted after the bootstrap
|
|
5958
5972
|
# stream has been closed, which masks the real page with
|
|
5959
5973
|
# ``ValueError: I/O operation on closed file``.
|
|
5960
|
-
image_bytes = image_path
|
|
5974
|
+
image_bytes = _file_bytes(image_path)
|
|
5961
5975
|
st.image(image_bytes)
|
|
5962
5976
|
st.download_button(
|
|
5963
5977
|
"Descarregar thumbnail",
|
|
@@ -6163,7 +6177,7 @@ def _render_tiktok_automation_cards():
|
|
|
6163
6177
|
thumbnail_prompt = str(task.get("thumbnail_prompt") or "").strip()
|
|
6164
6178
|
with task_cols[0]:
|
|
6165
6179
|
if thumbnail_path:
|
|
6166
|
-
st.image(
|
|
6180
|
+
st.image(_file_bytes(thumbnail_path), width=180, caption="Thumbnail")
|
|
6167
6181
|
else:
|
|
6168
6182
|
st.caption("Thumbnail ainda não pronta")
|
|
6169
6183
|
st.write(f"**{task.get('title') or task.get('topic') or 'Vídeo TikTok'}**")
|
|
@@ -6181,7 +6195,7 @@ def _render_tiktok_automation_cards():
|
|
|
6181
6195
|
with thumbnail_download_col:
|
|
6182
6196
|
st.download_button(
|
|
6183
6197
|
"Baixar Thumbnail 9:16",
|
|
6184
|
-
data=thumbnail_path
|
|
6198
|
+
data=_file_bytes(thumbnail_path),
|
|
6185
6199
|
file_name=_automation_download_name("Thumbnail9:16", task, thumbnail_path, ".png"),
|
|
6186
6200
|
mime="image/png",
|
|
6187
6201
|
key=f"tiktok_automation_download_thumbnail_{task_id}",
|
|
@@ -6220,7 +6234,7 @@ def _render_tiktok_automation_cards():
|
|
|
6220
6234
|
with script_download_col:
|
|
6221
6235
|
st.download_button(
|
|
6222
6236
|
"Baixar Roteiro",
|
|
6223
|
-
data=script_path
|
|
6237
|
+
data=_file_bytes(script_path),
|
|
6224
6238
|
file_name=_automation_download_name("Script", task, script_path, ".md"),
|
|
6225
6239
|
mime="text/markdown",
|
|
6226
6240
|
key=f"tiktok_automation_download_script_{task_id}",
|
|
@@ -6230,7 +6244,7 @@ def _render_tiktok_automation_cards():
|
|
|
6230
6244
|
with video_download_col:
|
|
6231
6245
|
st.download_button(
|
|
6232
6246
|
"Baixar Vídeo9:16",
|
|
6233
|
-
data=video_path
|
|
6247
|
+
data=_file_bytes(video_path),
|
|
6234
6248
|
file_name=_automation_download_name("Vídeo9:16", task, video_path, ".mp4"),
|
|
6235
6249
|
mime="video/mp4",
|
|
6236
6250
|
key=f"tiktok_automation_download_video_{task_id}",
|
|
@@ -6345,7 +6359,27 @@ def _render_youtube_automation_cards():
|
|
|
6345
6359
|
tasks = load_automation_tasks_for_platform("youtube")
|
|
6346
6360
|
if not tasks:
|
|
6347
6361
|
st.info("Ainda não existem vídeos cadastrados.")
|
|
6348
|
-
|
|
6362
|
+
page_size = 12
|
|
6363
|
+
page_count = max(1, (len(tasks) + page_size - 1) // page_size)
|
|
6364
|
+
current_page = st.session_state.get("youtube_automation_page", 1)
|
|
6365
|
+
try:
|
|
6366
|
+
current_page = min(max(int(current_page), 1), page_count)
|
|
6367
|
+
except (TypeError, ValueError):
|
|
6368
|
+
current_page = 1
|
|
6369
|
+
if page_count > 1:
|
|
6370
|
+
current_page = st.selectbox(
|
|
6371
|
+
"Página de vídeos cadastrados",
|
|
6372
|
+
options=list(range(1, page_count + 1)),
|
|
6373
|
+
index=current_page - 1,
|
|
6374
|
+
format_func=lambda value: f"Página {value} de {page_count}",
|
|
6375
|
+
key="youtube_automation_page",
|
|
6376
|
+
)
|
|
6377
|
+
start = (current_page - 1) * page_size
|
|
6378
|
+
visible_tasks = tasks[start : start + page_size]
|
|
6379
|
+
st.caption(f"A mostrar {start + 1}–{min(start + page_size, len(tasks))} de {len(tasks)} vídeos.")
|
|
6380
|
+
else:
|
|
6381
|
+
visible_tasks = tasks
|
|
6382
|
+
for task in visible_tasks:
|
|
6349
6383
|
with st.container(border=True):
|
|
6350
6384
|
task_cols = st.columns([2.25, 1.55, 1.05, 2.15], gap="small")
|
|
6351
6385
|
script_path = _task_artifact_path(task, "script")
|
|
@@ -6355,7 +6389,7 @@ def _render_youtube_automation_cards():
|
|
|
6355
6389
|
thumbnail_prompt = str(task.get("thumbnail_prompt") or "").strip()
|
|
6356
6390
|
with task_cols[0]:
|
|
6357
6391
|
if thumbnail_path:
|
|
6358
|
-
st.image(
|
|
6392
|
+
st.image(_file_bytes(thumbnail_path), width=180, caption="Thumbnail")
|
|
6359
6393
|
else:
|
|
6360
6394
|
st.caption("Thumbnail ainda não pronta")
|
|
6361
6395
|
st.write(f"**{task.get('topic', 'Sem tópico')}**")
|
|
@@ -6364,7 +6398,7 @@ def _render_youtube_automation_cards():
|
|
|
6364
6398
|
with thumbnail_download_col:
|
|
6365
6399
|
st.download_button(
|
|
6366
6400
|
"Baixar Thumbnail",
|
|
6367
|
-
data=thumbnail_path
|
|
6401
|
+
data=_file_bytes(thumbnail_path),
|
|
6368
6402
|
file_name=_automation_download_name("Thumbnail", task, thumbnail_path, ".png"),
|
|
6369
6403
|
mime="image/png",
|
|
6370
6404
|
key=f"automation_download_thumbnail_{task['id']}",
|
|
@@ -6402,7 +6436,7 @@ def _render_youtube_automation_cards():
|
|
|
6402
6436
|
with script_download_col:
|
|
6403
6437
|
st.download_button(
|
|
6404
6438
|
"Baixar Roteiro",
|
|
6405
|
-
data=script_path
|
|
6439
|
+
data=_file_bytes(script_path),
|
|
6406
6440
|
file_name=_automation_download_name("Script", task, script_path, ".md"),
|
|
6407
6441
|
mime="text/markdown",
|
|
6408
6442
|
key=f"automation_download_script_{task['id']}",
|
|
@@ -6412,7 +6446,7 @@ def _render_youtube_automation_cards():
|
|
|
6412
6446
|
with video_download_col:
|
|
6413
6447
|
st.download_button(
|
|
6414
6448
|
"Baixar Vídeo",
|
|
6415
|
-
data=video_path
|
|
6449
|
+
data=_file_bytes(video_path),
|
|
6416
6450
|
file_name=_automation_download_name("Vídeo", task, video_path, ".mp4"),
|
|
6417
6451
|
mime="video/mp4",
|
|
6418
6452
|
key=f"automation_download_video_{task['id']}",
|
|
@@ -6482,7 +6516,7 @@ def _render_facebook_automation_cards() -> None:
|
|
|
6482
6516
|
image_path = Path(str(image.get("captioned_path") or image.get("path") or ""))
|
|
6483
6517
|
with image_col:
|
|
6484
6518
|
if image_path.is_file():
|
|
6485
|
-
st.image(
|
|
6519
|
+
st.image(_file_bytes(image_path), use_container_width=True)
|
|
6486
6520
|
st.caption(str(image.get("status") or "pendente"))
|
|
6487
6521
|
with cols[1]:
|
|
6488
6522
|
st.caption("Estado")
|
package/package.json
CHANGED
|
@@ -1,231 +1,181 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
Aspect ratio:
|
|
184
|
-
16:9
|
|
185
|
-
|
|
186
|
-
Resolution:
|
|
187
|
-
1280 × 720 minimum
|
|
188
|
-
|
|
189
|
-
Image style: Cinematic, ethereal, and high-quality — blending realistic photography with a slightly dreamy, heavenly aesthetic. The imagery should feel professional, polished, and emotionally resonant — like a high-end Christian film or worship album cover. Soft focus, warm tones, and radiant light effects are characteristic.
|
|
190
|
-
|
|
191
|
-
Sharpness: Crisp where it matters (subject, text) with soft, dreamy backgrounds (bokeh, haze, light diffusion). Not overly sharp or clinical.
|
|
192
|
-
|
|
193
|
-
Technical restrictions: No cartoonish illustrations. No low-quality stock photos. Imagery should feel premium, current, and spiritually evocative. Color grading should be warm (golden/amber) with soft highlights and gentle contrasts.
|
|
194
|
-
|
|
195
|
-
🧠 FINAL OBJECTIVE
|
|
196
|
-
|
|
197
|
-
Primary goal:
|
|
198
|
-
Maximize YouTube CTR for Christian prayer / faith-based motivational content
|
|
199
|
-
|
|
200
|
-
Target emotional triggers:
|
|
201
|
-
|
|
202
|
-
Hope and faith in God's intervention
|
|
203
|
-
|
|
204
|
-
Desire for peace, protection, and blessing
|
|
205
|
-
|
|
206
|
-
Longing for spiritual breakthrough and transformation
|
|
207
|
-
|
|
208
|
-
Trust in a higher power and divine guidance
|
|
209
|
-
|
|
210
|
-
Comfort in times of struggle or uncertainty
|
|
211
|
-
|
|
212
|
-
Target audience: Christians seeking daily prayer, spiritual encouragement, and faith-based motivation — from new believers to mature Christians. Content is accessible, comforting, and designed for daily devotional use.
|
|
213
|
-
|
|
214
|
-
🧾 FINAL INPUT FORMAT
|
|
215
|
-
|
|
216
|
-
VIDEO TITLE:
|
|
217
|
-
"[placeholder — will be filled in the next step with the actual video title/script]"
|
|
218
|
-
|
|
219
|
-
⚙️ FINAL SYSTEM INSTRUCTION
|
|
220
|
-
|
|
221
|
-
You are a thumbnail designer for the Grace For Purpose Prayers YouTube channel. Using the style guide above, generate 2–4 headline options (3–6 words each) derived from the provided VIDEO TITLE. Then create a thumbnail image that follows all style rules above:
|
|
222
|
-
|
|
223
|
-
Cinematic, ethereal Christian imagery (sunrise, cross, light rays, open hands, or silhouette in prayer)
|
|
224
|
-
|
|
225
|
-
Warm, golden-hour lighting with soft, diffused highlights
|
|
226
|
-
|
|
227
|
-
Bold, encouraging text at the bottom or lower third (max 2 lines, serif or clean sans-serif with outline)
|
|
228
|
-
|
|
229
|
-
1–2 supporting faith symbols (optional — cross, Bible, dove)
|
|
230
|
-
|
|
231
|
-
No aggressive clickbait styling — keep it peaceful, reverent, and hopeful
|
|
1
|
+
# ORAÇÃO_Thumbnail_Blueprint.md
|
|
2
|
+
# SYSTEM PROMPT PARA GERAÇÃO DE THUMBNAILS
|
|
3
|
+
# CANAL: Grace For Purpose Prayers
|
|
4
|
+
|
|
5
|
+
🔒 STYLE LOCK — NON-NEGOTIABLE
|
|
6
|
+
|
|
7
|
+
Serene, faith-centered, and visually calming thumbnails for a Christian prayer and motivation channel. The visual language is peaceful, hopeful, and spiritually uplifting — conveying comfort, divine presence, and the power of prayer. Thumbnails feature warm, inviting imagery (sunrises, open hands, crosses, Bibles, light beaming through clouds) combined with bold, encouraging text that promises spiritual breakthrough, protection, and blessing. The overall vibe is gentle yet authoritative, trustworthy, and deeply reverent — not flashy, not aggressive, and never chaotic or cluttered.
|
|
8
|
+
|
|
9
|
+
❌ **FORBIDDEN ELEMENTS (ATUALIZADO - CRÍTICO):**
|
|
10
|
+
|
|
11
|
+
- **Cenários proibidos:** NÃO gere quartos de casa, camas, pessoas deitadas, ambientes residenciais fechados ou íntimos. O canal modelo usa ambientes abertos (céu, montanhas, mar, campos) ou igrejas.
|
|
12
|
+
- **Palavras proibidas no texto:** NÃO use "Calm", "Silence", "Relax", "Mind", "Anxiety", "Stress", "Sleep" (a menos que seja "Sleep Prayer" no título principal). NÃO use frases de meditação secular.
|
|
13
|
+
- **Texto:** NÃO use frases com mais de 6 palavras no total.
|
|
14
|
+
- **Estilo:** NÃO use gráficos de clickbait agressivo (sem setas neon, sem expressões faciais de choque). NÃO use imagens escuras ou ameaçadoras.
|
|
15
|
+
- **Elementos:** NÃO ultrapasse 3–4 elementos visuais distintos.
|
|
16
|
+
|
|
17
|
+
🧍♂️ FRAMING & POSE (ATUALIZADO)
|
|
18
|
+
|
|
19
|
+
**Primary subject:** A cena DEVE transmitir ORAÇÃO e ADORAÇÃO, não meditação ou descanso mental. Escolha UMA das seguintes opções:
|
|
20
|
+
1. **Silhueta de mãos levantadas** em adoração, voltadas para o céu (prioridade máxima).
|
|
21
|
+
2. **Pessoa de costas ou de perfil**, olhando para o horizonte ou para a luz (não para baixo, não dormindo).
|
|
22
|
+
3. **Bíblia aberta** com luz emanando das páginas.
|
|
23
|
+
4. **Cruz** silhuetada contra um céu brilhante ou em destaque.
|
|
24
|
+
5. **Nascer do sol** radiante com raios de luz rompendo as nuvens.
|
|
25
|
+
6. **Pessoa ajoelhada** em oração, mas em um ambiente aberto (não num quarto).
|
|
26
|
+
|
|
27
|
+
**Framing:** Wide, cinematic compositions that emphasize peace and divine scale. O sujeito principal ocupa 30–50% do quadro, com o restante espaço para o texto e elementos atmosféricos.
|
|
28
|
+
|
|
29
|
+
**Angle:** Low-angle ou straight-on. Ângulos baixos transmitem reverência ("olhando para Deus").
|
|
30
|
+
|
|
31
|
+
**Energy:** Calm, reflective, and expectant — "peace is coming," "God is working," and "breakthrough is near."
|
|
32
|
+
|
|
33
|
+
**Cropping:** Sujeitos emoldurados com espaço generoso para o texto, geralmente centralizado, na parte inferior ou no terço inferior.
|
|
34
|
+
|
|
35
|
+
🎨 BACKGROUND & LIGHTING (ATUALIZADO)
|
|
36
|
+
|
|
37
|
+
**Environment:** Cenários celestiais e abertos — OBRIGATORIAMENTE um dos seguintes:
|
|
38
|
+
- Céus ao amanhecer ou entardecer com tons dourados, laranja, rosa ou azul suave.
|
|
39
|
+
- Nuvens com raios de luz rompendo (simbolizando a presença divina).
|
|
40
|
+
- Fundos naturais desfocados (campos, montanhas, oceano ao nascer do sol).
|
|
41
|
+
- Gradientes limpos e mínimos de dourado quente para branco suave ou azul.
|
|
42
|
+
|
|
43
|
+
**Lighting:** Warm, golden-hour lighting — soft, diffused, and radiant. A luz DEVE vir de cima ou de trás do sujeito, criando um efeito de halo ou backlight. High-key lighting com contrastes suaves.
|
|
44
|
+
|
|
45
|
+
**Depth:** Moderate depth — foreground (sujeito/silhueta), midground (raios de luz, nuvens), background (céu). Cria uma sensação de espaço infinito e vastidão divina.
|
|
46
|
+
|
|
47
|
+
**Visual noise:** Very low — fundos limpos e descomplicados.
|
|
48
|
+
|
|
49
|
+
🧭 IDENTIFICADORES / SÍMBOLOS DO CANAL
|
|
50
|
+
|
|
51
|
+
**Recurring visual symbols:**
|
|
52
|
+
- A Cruz — símbolo central cristão, frequentemente silhuetado ou brilhando.
|
|
53
|
+
- Raios de luz / feixes — representando a presença de Deus, bênção e milagre.
|
|
54
|
+
- Mãos abertas — oração, entrega, recebimento de bênção.
|
|
55
|
+
- Bíblia / Escritura — A Palavra de Deus como fundamento.
|
|
56
|
+
- Pomba — Espírito Santo (ocasional).
|
|
57
|
+
- Coroa — Soberania de Deus, recompensa (ocasional).
|
|
58
|
+
|
|
59
|
+
**Placement:** Símbolos integrados naturalmente na cena — não sobrepostos como adesivos.
|
|
60
|
+
|
|
61
|
+
**Color symbolism:**
|
|
62
|
+
- Dourado/Amarelo — presença divina, glória, bênção.
|
|
63
|
+
- Branco — pureza, santidade, paz.
|
|
64
|
+
- Azul — céu, confiança, fé.
|
|
65
|
+
- Roxo — realeza, soberania de Deus (ocasional).
|
|
66
|
+
|
|
67
|
+
🚨 VISUAL ATTENTION ELEMENT
|
|
68
|
+
|
|
69
|
+
**Usage:** Minimal e de bom gosto. O canal depende do impacto emocional da imagem e do texto.
|
|
70
|
+
|
|
71
|
+
**If used:**
|
|
72
|
+
- Um brilho sutil ou destaque ao redor de um elemento-chave (ex: a cruz, o texto).
|
|
73
|
+
- Um feixe de luz suave apontando para o sujeito ou texto.
|
|
74
|
+
- **NUNCA use setas, círculos, emojis ou efeitos neon.**
|
|
75
|
+
|
|
76
|
+
📝 TEXT STYLE (ATUALIZADO - CRÍTICO)
|
|
77
|
+
|
|
78
|
+
**Structure:**
|
|
79
|
+
- Máximo de 2 linhas de texto.
|
|
80
|
+
- Posicionado de forma proeminente — frequentemente centralizado na parte inferior, terço inferior ou ao longo do horizonte.
|
|
81
|
+
- O texto ocupa aproximadamente 25–35% da área da thumbnail (deve ser GRANDE e imponente).
|
|
82
|
+
|
|
83
|
+
**Typography:**
|
|
84
|
+
- Fonte em negrito, limpa, serifada ou semi-serifada (ex: Playfair Display, Georgia) — ou uma fonte sans-serif limpa para legibilidade moderna.
|
|
85
|
+
- Texto principal: Branco ou dourado, com um contorno escuro forte ou sombra para contraste contra céus brilhantes.
|
|
86
|
+
- Texto secundário (se usado): Menor, em uma cor complementar (dourado, azul suave ou branco).
|
|
87
|
+
|
|
88
|
+
**Hierarchy:**
|
|
89
|
+
- Linha 1: Gancho principal (maior, mais ousado) — 3–5 palavras no máximo.
|
|
90
|
+
- Linha 2: Contexto de apoio (menor) — 2–4 palavras no máximo (ex: "MORNING PRAYER").
|
|
91
|
+
|
|
92
|
+
**Background for text:** Muitas vezes uma sobreposição escura semitransparente ou gradiente na parte inferior da imagem para garantir a legibilidade do texto contra céus brilhantes.
|
|
93
|
+
|
|
94
|
+
🧠 TEXT PSYCHOLOGY (ATUALIZADO - CRÍTICO)
|
|
95
|
+
|
|
96
|
+
**Tone:** Encorajador, cheio de fé e com uma urgência espiritual. O texto promete intervenção divina, milagre, paz e bênção — energia de "Deus está prestes a agir".
|
|
97
|
+
|
|
98
|
+
**REGRA DE OURO DO TEXTO:** O texto DEVE conter pelo menos uma das seguintes palavras: **God, Jesus, Holy Spirit, Prayer, Faith, Praise, Word, Blood, Blessing, Grace, Mercy, Anointing.** Se não contiver, está ERRADO.
|
|
99
|
+
|
|
100
|
+
**Common psychological triggers observed/inferred:**
|
|
101
|
+
- **Hope/Promise:** "God Will Make a Way" / "Breakthrough Is Coming"
|
|
102
|
+
- **Urgency/Now:** "Start Your Day With This Prayer"
|
|
103
|
+
- **Protection:** "No Weapon Formed Will Prosper"
|
|
104
|
+
- **Transformation:** "Everything Begins to Change When..."
|
|
105
|
+
- **Direct Address:** "You Need to Always Thank God Before..."
|
|
106
|
+
- **Rest/Peace:** "Play This Every Night | Sleep With God's Word"
|
|
107
|
+
|
|
108
|
+
**Exemplos de padrões de manchete (USE ESTES COMO BASE):**
|
|
109
|
+
- "HOLY SPIRIT OPEN MY EYES"
|
|
110
|
+
- "LET PRAISE RULE YOUR DAY"
|
|
111
|
+
- "PUT GOD FIRST"
|
|
112
|
+
- "DECLARE GOD'S WORD"
|
|
113
|
+
- "START EACH DAY WITH ME LORD"
|
|
114
|
+
- "THE BLESSING OF LETTING GO"
|
|
115
|
+
- "PRAY THIS BEFORE YOU SLEEP"
|
|
116
|
+
- "GOD KNOWS YOUR NAME"
|
|
117
|
+
|
|
118
|
+
**🚫 FRASES PROIBIDAS (NUNCA USE):**
|
|
119
|
+
- "Calm Your Mind"
|
|
120
|
+
- "Silence Your Mind"
|
|
121
|
+
- "Relax Your Body"
|
|
122
|
+
- "Find Your Peace"
|
|
123
|
+
- "Let Go of Anxiety"
|
|
124
|
+
- "Overthinking"
|
|
125
|
+
- "Sleep Well"
|
|
126
|
+
- "Stress Relief"
|
|
127
|
+
|
|
128
|
+
🎯 COMPOSITION RULES
|
|
129
|
+
|
|
130
|
+
**Rule of thirds:** Sujeito principal (nascer do sol, cruz, mãos) colocado ao longo do terço inferior ou central. O texto ocupa o terço inferior ou a porção inferior do quadro. O céu/luz ocupa os dois terços superiores.
|
|
131
|
+
|
|
132
|
+
**Focal hierarchy:**
|
|
133
|
+
1. **Primário:** A imagem espiritual (luz, cruz, nascer do sol) — o fator "esperança".
|
|
134
|
+
2. **Secundário:** Texto (a promessa/gancho).
|
|
135
|
+
3. **Terciário:** Detalhes visuais de apoio (nuvens, raios de luz, símbolos sutis).
|
|
136
|
+
|
|
137
|
+
**Negative space:** O céu fornece espaço negativo natural. Texto e sujeitos são colocados para evitar sobreposição.
|
|
138
|
+
|
|
139
|
+
**Distraction control:** Máximo de 3–4 elementos visuais distintos no total.
|
|
140
|
+
|
|
141
|
+
**Mobile-first:** O texto deve ser grande o suficiente para ser lido em um smartphone. O sujeito principal deve ser claramente identificável mesmo em tamanhos pequenos.
|
|
142
|
+
|
|
143
|
+
📐 FORMAT & QUALITY
|
|
144
|
+
|
|
145
|
+
**Aspect ratio:** 16:9
|
|
146
|
+
**Resolution:** 1280 × 720 mínimo
|
|
147
|
+
**Image style:** Cinematic, ethereal, and high-quality — misturando fotografia realista com uma estética levemente sonhadora e celestial. A imagem deve parecer profissional, polida e emocionalmente ressonante — como um filme cristão de alto padrão ou capa de álbum de louvor. Foco suave, tons quentes e efeitos de luz radiante são característicos.
|
|
148
|
+
**Sharpness:** Nítido onde importa (sujeito, texto) com fundos suaves e sonhadores (bokeh, névoa, difusão de luz).
|
|
149
|
+
**Technical restrictions:** Sem ilustrações cartunescas. Sem fotos de banco de imagens de baixa qualidade. A imagem deve parecer premium, atual e espiritualmente evocativa. A gradação de cores deve ser quente (dourado/âmbar) com destaques suaves e contrastes gentis.
|
|
150
|
+
|
|
151
|
+
🧠 FINAL OBJECTIVE
|
|
152
|
+
|
|
153
|
+
**Primary goal:** Maximizar o CTR do YouTube para conteúdo cristão de oração / motivacional baseado na fé.
|
|
154
|
+
|
|
155
|
+
**Target emotional triggers:**
|
|
156
|
+
- Esperança e fé na intervenção de Deus.
|
|
157
|
+
- Desejo de paz, proteção e bênção.
|
|
158
|
+
- Anseio por milagre espiritual e transformação.
|
|
159
|
+
- Confiança em um poder superior e orientação divina.
|
|
160
|
+
- Conforto em tempos de luta ou incerteza.
|
|
161
|
+
|
|
162
|
+
**Target audience:** Cristãos em busca de oração diária, encorajamento espiritual e motivação baseada na fé — de novos crentes a cristãos maduros.
|
|
163
|
+
|
|
164
|
+
🧾 FINAL INPUT FORMAT
|
|
165
|
+
|
|
166
|
+
VIDEO TITLE:
|
|
167
|
+
"[placeholder — will be filled in the next step with the actual video title/script]"
|
|
168
|
+
|
|
169
|
+
⚙️ FINAL SYSTEM INSTRUCTION (ATUALIZADO - CRÍTICO)
|
|
170
|
+
|
|
171
|
+
You are a thumbnail designer for the Grace For Purpose Prayers YouTube channel. Using the style guide above, generate 2–4 headline options (3–6 words each) derived from the provided VIDEO TITLE. Then create a thumbnail image that follows all style rules above:
|
|
172
|
+
|
|
173
|
+
1. **O texto DEVE ser uma declaração de oração, uma promessa de Deus ou um chamado à fé.** (Ex: "HOLY SPIRIT OPEN MY EYES", "PUT GOD FIRST", "LET PRAISE RULE YOUR DAY").
|
|
174
|
+
2. **O texto DEVE conter pelo menos uma palavra cristã** (God, Jesus, Holy Spirit, Prayer, Faith, Praise, Word, Blood, Blessing, Grace, Mercy, Anointing).
|
|
175
|
+
3. **PROIBIDO usar frases de meditação secular** (Calm Your Mind, Silence Your Mind, Relax, etc.).
|
|
176
|
+
4. **O cenário DEVE ser aberto e celestial** (céu, nascer do sol, montanhas, mar). PROIBIDO usar quartos de casa, camas ou ambientes fechados.
|
|
177
|
+
5. **Cinematic, ethereal Christian imagery** (sunrise, cross, light rays, open hands, or silhouette in prayer).
|
|
178
|
+
6. **Warm, golden-hour lighting** with soft, diffused highlights.
|
|
179
|
+
7. **Bold, encouraging text** at the bottom or lower third (max 2 lines, serif or clean sans-serif with outline).
|
|
180
|
+
8. **1–2 supporting faith symbols** (optional — cross, Bible, dove).
|
|
181
|
+
9. **No aggressive clickbait styling** — keep it peaceful, reverent, and hopeful.
|