@danhachuel/thunderbolt 0.3.60 → 0.3.62

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.
Files changed (43) hide show
  1. package/MANUAL-INSTALACAO.md +20 -6
  2. package/README.md +9 -3
  3. package/app/main.py +24 -5
  4. package/hermes_ui/automation_worker.py +6 -1
  5. package/hermes_ui/domain.py +1 -0
  6. package/hermes_ui/influencers.py +12 -6
  7. package/hermes_ui/media_generation.py +5 -1
  8. package/hermes_ui/pipeline_worker.py +220 -13
  9. package/package.json +1 -3
  10. package/scripts/cli.mjs +4 -4
  11. package/scripts/install.mjs +53 -1
  12. package/seed/skills/mpt_agent.py +13 -3
  13. package/storage/blueprints/importados/demo-content-hermes.json +0 -23
  14. package/storage/tiktok/prompts_master/2Dstickman.md +0 -193
  15. package/storage/tiktok/prompts_master/3Dskeletoncharacter.md +0 -1
  16. package/storage/tiktok/prompts_master/ANIMALMOUNTEDCAMERA.md +0 -299
  17. package/storage/tiktok/prompts_master/ASMR.md +0 -74
  18. package/storage/tiktok/prompts_master/ASMRDEBOCACOMDOCES.md +0 -130
  19. package/storage/tiktok/prompts_master/AnimalX-Ray.md +0 -136
  20. package/storage/tiktok/prompts_master/CAREVOLUTION.md +0 -176
  21. package/storage/tiktok/prompts_master/CINEMATICBUNKERSURVIVAL.md +0 -180
  22. package/storage/tiktok/prompts_master/CINEMATICSLUMTRANSFORMATIONENGINE.md +0 -212
  23. package/storage/tiktok/prompts_master/CINEMATOGR/303/201FICOS3D.md +0 -207
  24. package/storage/tiktok/prompts_master/CartoonNostalgia.md +0 -131
  25. package/storage/tiktok/prompts_master/EPOXYFLOORTRANSFORMATION.md +0 -254
  26. package/storage/tiktok/prompts_master/Edgar'sHouseofTerrorsChooseYourStory.md +0 -134
  27. package/storage/tiktok/prompts_master/FOODBABYFACECHARACTER.md +0 -141
  28. package/storage/tiktok/prompts_master/FuitNovels.md +0 -166
  29. package/storage/tiktok/prompts_master/KIDSSTORYCREATOR(PROMODE).md +0 -235
  30. package/storage/tiktok/prompts_master/MatchstickPrompt.md +0 -86
  31. package/storage/tiktok/prompts_master/PERSONAGENSABANDONADOS.md +0 -208
  32. package/storage/tiktok/prompts_master/Pixar-styleanimated.md +0 -193
  33. package/storage/tiktok/prompts_master/RESTORATIONTIMELAPSE.md +0 -262
  34. package/storage/tiktok/prompts_master/RUSTREMOVAL.md +0 -275
  35. package/storage/tiktok/prompts_master/ReceitasIndianas.md +0 -60
  36. package/storage/tiktok/prompts_master/SkyscraperMonster.md +0 -140
  37. package/storage/tiktok/prompts_master/TIMETRAVELVLOG.md +0 -264
  38. package/storage/tiktok/prompts_master/Tarot.md +0 -58
  39. package/storage/tiktok/prompts_master/UFOs(OVNIs).md +0 -63
  40. package/storage/tiktok/prompts_master/VisualCraftSequenceGenerator.md +0 -284
  41. package/storage/tiktok/prompts_master/craftingStorytellingAI.md +0 -79
  42. package/storage/tiktok/prompts_master/hist/303/263riasinfantishoradedormir.md +0 -71
  43. package/storage/tiktok/prompts_master/viralTikTokdance.md +0 -77
package/scripts/cli.mjs CHANGED
@@ -27,11 +27,11 @@ const python = process.env.THUNDERBOLT_PYTHON || process.env.HERMES_PYTHON || (e
27
27
  const main = resolve(root, "app", "main.py");
28
28
  const settingsPath = join(thunderboltHome, "storage", "state", "settings.json");
29
29
 
30
- function run(command, commandArgs, label = "comando") {
30
+ function run(command, commandArgs, label = "comando", environment = process.env) {
31
31
  console.log(`Thunderbolt: a iniciar ${label}...`);
32
32
  const result = spawnSync(command, commandArgs, {
33
33
  stdio: "inherit",
34
- env: process.env,
34
+ env: environment,
35
35
  cwd: root,
36
36
  windowsHide: false,
37
37
  });
@@ -144,11 +144,11 @@ const runtimeEnv = {
144
144
  };
145
145
 
146
146
  if (args[0] === "worker" || args.includes("--worker")) {
147
- run(python, ["-m", "hermes_ui.automation_worker", ...args.filter((arg) => arg !== "worker" && arg !== "--worker")], "worker de automação");
147
+ run(python, ["-m", "hermes_ui.automation_worker", ...args.filter((arg) => arg !== "worker" && arg !== "--worker")], "worker de automação", runtimeEnv);
148
148
  }
149
149
 
150
150
  if (args[0] === "pipeline-worker" || args.includes("--pipeline-worker")) {
151
- run(python, ["-m", "hermes_ui.pipeline_worker", ...args.filter((arg) => arg !== "pipeline-worker" && arg !== "--pipeline-worker")], "worker do pipeline de vídeos");
151
+ run(python, ["-m", "hermes_ui.pipeline_worker", ...args.filter((arg) => arg !== "pipeline-worker" && arg !== "--pipeline-worker")], "worker do pipeline de vídeos", runtimeEnv);
152
152
  }
153
153
 
154
154
  const port = process.env.THUNDERBOLT_PORT || process.env.HERMES_PORT || "3030";
@@ -1,5 +1,5 @@
1
1
  #!/usr/bin/env node
2
- import { existsSync, mkdirSync, readFileSync, rmSync, renameSync, cpSync, copyFileSync, readdirSync, writeFileSync } from "node:fs";
2
+ import { existsSync, mkdirSync, readFileSync, rmSync, renameSync, cpSync, copyFileSync, readdirSync, statSync, writeFileSync } from "node:fs";
3
3
  import { homedir, platform } from "node:os";
4
4
  import { basename, dirname, join, resolve } from "node:path";
5
5
  import { fileURLToPath } from "node:url";
@@ -145,6 +145,57 @@ function copySeedPromptMasters(storageRoot) {
145
145
  }
146
146
  }
147
147
 
148
+ function copyMissingTree(source, target) {
149
+ if (!existsSync(source)) return 0;
150
+ let copied = 0;
151
+ let sourceStat;
152
+ try { sourceStat = statSync(source); } catch { return 0; }
153
+ if (sourceStat.isDirectory()) {
154
+ mkdirSync(target, { recursive: true });
155
+ for (const entry of readdirSync(source, { withFileTypes: true })) {
156
+ copied += copyMissingTree(join(source, entry.name), join(target, entry.name));
157
+ }
158
+ return copied;
159
+ }
160
+ if (existsSync(target)) return 0;
161
+ mkdirSync(dirname(target), { recursive: true });
162
+ copyFileSync(source, target);
163
+ return 1;
164
+ }
165
+
166
+ function legacyNpxPackageRoots() {
167
+ const roots = new Set();
168
+ const cacheHashes = [resolve(root, "../../..")];
169
+ const cacheRoot = resolve(root, "../../../..");
170
+ if (existsSync(cacheRoot)) {
171
+ try {
172
+ for (const entry of readdirSync(cacheRoot, { withFileTypes: true })) {
173
+ if (entry.isDirectory()) cacheHashes.push(join(cacheRoot, entry.name));
174
+ }
175
+ } catch { /* cache inacessível: a instalação normal continua */ }
176
+ }
177
+ for (const hashRoot of cacheHashes) {
178
+ const candidate = resolve(hashRoot, "node_modules", "@danhachuel", "thunderbolt");
179
+ if (candidate === root || roots.has(candidate)) continue;
180
+ if (existsSync(join(candidate, "storage", "state", "ai_influencers.db"))) roots.add(candidate);
181
+ }
182
+ return [...roots].sort((left, right) => {
183
+ try { return statSync(join(right, "storage", "state", "ai_influencers.db")).mtimeMs - statSync(join(left, "storage", "state", "ai_influencers.db")).mtimeMs; }
184
+ catch { return 0; }
185
+ });
186
+ }
187
+
188
+ function migrateLegacyNpxStorage() {
189
+ const targetStorage = join(thunderboltHome, "storage");
190
+ const candidates = legacyNpxPackageRoots();
191
+ let copied = 0;
192
+ for (const candidate of candidates) {
193
+ copied += copyMissingTree(join(candidate, "storage"), targetStorage);
194
+ if (existsSync(join(targetStorage, "state", "ai_influencers.db"))) break;
195
+ }
196
+ if (copied > 0) console.log(`Dados locais AI Influencers recuperados do cache npm para ${targetStorage}.`);
197
+ }
198
+
148
199
  function copyOrMove(source, target, label) {
149
200
  if (!existsSync(source) || existsSync(target)) return false;
150
201
  mkdirSync(dirname(target), { recursive: true });
@@ -325,6 +376,7 @@ function main() {
325
376
  migrateLegacyInstallation();
326
377
  cleanInstallationRoots(moneyprinterPath);
327
378
  ensureDirs();
379
+ migrateLegacyNpxStorage();
328
380
  const python = skipDeps ? null : ensurePython();
329
381
  if (!skipMpt) cloneMoneyPrinter(moneyprinterPath);
330
382
  if (!skipDeps) installThunderboltDependencies(python);
@@ -206,7 +206,14 @@ def apply_environment_config(config_path: Path) -> None:
206
206
  base_url = os.environ.get("MPT_LLM_BASE_URL", "").strip()
207
207
  model_name = os.environ.get("MPT_LLM_MODEL_NAME", "").strip()
208
208
  pexels_key = os.environ.get("MPT_PEXELS_API_KEY", "").strip()
209
- if not any((provider, llm_key, base_url, model_name, pexels_key)):
209
+ pixabay_key = os.environ.get("MPT_PIXABAY_API_KEY", "").strip()
210
+ pexels_keys = _parse_string_list(os.environ.get("MPT_PEXELS_API_KEYS", ""))
211
+ pixabay_keys = _parse_string_list(os.environ.get("MPT_PIXABAY_API_KEYS", ""))
212
+ if not pexels_keys and pexels_key:
213
+ pexels_keys = [pexels_key]
214
+ if not pixabay_keys and pixabay_key:
215
+ pixabay_keys = [pixabay_key]
216
+ if not any((provider, llm_key, base_url, model_name, pexels_keys, pixabay_keys)):
210
217
  return
211
218
 
212
219
  text = config_path.read_text(encoding="utf-8")
@@ -225,9 +232,12 @@ def apply_environment_config(config_path: Path) -> None:
225
232
  if model_name:
226
233
  text = _replace_config_value(text, f"{provider}_model_name", model_name)
227
234
  changes.append(f"{provider}_model_name")
228
- if pexels_key:
229
- text = _replace_config_value(text, "pexels_api_keys", [pexels_key])
235
+ if pexels_keys:
236
+ text = _replace_config_value(text, "pexels_api_keys", pexels_keys)
230
237
  changes.append("pexels_api_keys")
238
+ if pixabay_keys:
239
+ text = _replace_config_value(text, "pixabay_api_keys", pixabay_keys)
240
+ changes.append("pixabay_api_keys")
231
241
  config_path.write_text(text, encoding="utf-8")
232
242
  log("updated configuration fields: " + ", ".join(changes))
233
243
 
@@ -1,23 +0,0 @@
1
- {
2
- "id": "demo-content-hermes",
3
- "name": "Blueprint de demonstração",
4
- "channel_name": "Canal Hermes Demo",
5
- "language": "Português",
6
- "niche": "Conteúdo faceless educativo",
7
- "style": {
8
- "wide": "pexels",
9
- "shorts": "vertical"
10
- },
11
- "script": {
12
- "target_characters": "7000-9000",
13
- "hook_patterns": ["prediction-stakes", "before-after"],
14
- "humanization": true
15
- },
16
- "thumbnail": {
17
- "aspect_ratio": "16:9",
18
- "max_words": 4,
19
- "mobile_test": true
20
- },
21
- "source": "demo",
22
- "version": 1
23
- }
@@ -1,193 +0,0 @@
1
- Você é um engenheiro de prompts especializado em geração de prompts de imagem cinematográficos para um estilo 2D stickman documentary desenhado à mão.
2
-
3
- Seu trabalho é transformar UMA única entrada do usuário (ideia, roteiro curto ou descrição de imagem) em EXATAMENTE 7 prompts de geração de imagem altamente estruturados, seguindo rigorosamente as regras abaixo.
4
-
5
- O objetivo é gerar prompts consistentes, cinematográficos e visualmente coerentes, com continuidade de mundo, personagens e objetos.
6
-
7
- REGRAS ABSOLUTAS
8
- Você deve produzir EXATAMENTE 7 prompts
9
- Nunca gere mais
10
- Nunca gere menos
11
- Cada prompt deve conter 3 partes obrigatórias
12
-
13
- A) Título do Shot com emoji
14
-
15
- Formato obrigatório:
16
-
17
- [EMOJI] — (Main / B-roll / Establishing / Detail) — (Characters Included / No Characters) — [Resumo rápido da ação]
18
-
19
- Exemplo
20
-
21
- 🎬 — Main — Characters Included — stickman tentando resolver um problema
22
-
23
- B) Bloco de prompt dentro de código
24
-
25
- O prompt deve estar dentro de um bloco de código.
26
-
27
- O texto NÃO pode conter emojis.
28
-
29
- C) CTA final
30
-
31
- Cada prompt deve terminar com o mesmo CTA.
32
-
33
- ESTRUTURA GLOBAL DOS 7 PROMPTS
34
-
35
- Sempre gerar nesta ordem:
36
-
37
- 1️⃣ Main Scene (Characters Included)
38
-
39
- 2️⃣ B-roll 1 (Characters Included)
40
-
41
- 3️⃣ B-roll 2 (Characters Included)
42
-
43
- 4️⃣ B-roll 3 (Characters Included)
44
-
45
- 5️⃣ B-roll 4 (Characters Included)
46
-
47
- 6️⃣ Establishing Shot (No Characters)
48
-
49
- 7️⃣ Detail Shot (No Characters)
50
-
51
- REGRA DE CONTINUIDADE VISUAL
52
-
53
- Todos os prompts devem manter:
54
-
55
- mesmo personagem
56
- mesmas roupas
57
- mesmo ambiente
58
- mesmos objetos
59
- mesmo estilo visual
60
-
61
- Se o usuário fornecer pouca informação, assumir:
62
-
63
- 1 personagem
64
- roupas simples
65
- ambiente neutro
66
- iluminação natural suave
67
- dia claro
68
- TEMPLATE — PERSONAGENS (USAR EM 5 PROMPTS)
69
-
70
- Use este modelo estrutural:
71
-
72
- A clean 2D cartoon illustration in a simple, minimal cartoon style with a flat digital look.
73
-
74
- Scene: [ENVIRONMENT], [TIME OF DAY], [WEATHER OR LIGHTING].
75
-
76
- Camera: [SHOT TYPE], [CAMERA ANGLE], [FRAMING].
77
-
78
- Characters: [NUMBER] stick-figure characters with BIG ROUND HEADS that are ALWAYS PURE WHITE, tiny dot eyes, minimal simple mouth, simple eyebrows if needed.
79
-
80
- The body is simple and minimal. Arms, legs, and hands are BLACK stick-line outlines made from simple curved lines, never filled.
81
-
82
- Clothing and accessories are simple flat shapes with solid colors: [CLOTHING / PROPS].
83
-
84
- Action: [WHAT IS HAPPENING].
85
-
86
- Mood: [EMOTION / ATMOSPHERE].
87
-
88
- Background: simple clean shapes, flat muted colors, solid fills, crisp edges, uniform line weight, clean readable composition.
89
-
90
- No sketch lines. No brush texture. No paper texture.
91
-
92
- TEMPLATE — SEM PERSONAGENS (USAR EM 2 PROMPTS)
93
-
94
- A clean 2D cartoon illustration with a flat digital style matching the same visual look.
95
-
96
- Subject: [OBJECT OR EMPTY ENVIRONMENT].
97
-
98
- Scene/Setting: [LOCATION DETAILS], [TIME OF DAY], [LIGHTING].
99
-
100
- Camera: [SHOT TYPE], [ANGLE], [FRAMING], [DEPTH STYLE].
101
-
102
- Foreground elements (optional): [OBJECTS / PROPS].
103
-
104
- Material/style notes: flat digital illustration, solid fills, crisp edges, uniform line weight, minimal detail.
105
-
106
- No realism, no 3D look, no painterly shading, no watercolor, no paper texture.
107
-
108
- Key visual elements that must appear:
109
-
110
- [Detail 1]
111
- [Detail 2]
112
- [Detail 3]
113
- [Detail 4]
114
- REGRAS DE CINEMATOGRAFIA
115
-
116
- Varie os enquadramentos:
117
-
118
- Use combinações como:
119
-
120
- wide shot
121
- medium shot
122
- close-up
123
- over-the-shoulder
124
- side angle
125
- top-down
126
- low angle
127
- REGRAS DE B-ROLL
128
-
129
- Os 4 B-roll devem mostrar:
130
-
131
- reação do personagem
132
- ação secundária
133
- movimento ou transição
134
- momento de preparação ou reflexão
135
- REGRAS DE ESTABLISHING SHOT
136
-
137
- Mostrar:
138
-
139
- o ambiente inteiro
140
- sem personagens
141
- contexto da história
142
- REGRAS DE DETAIL SHOT
143
-
144
- Mostrar:
145
-
146
- um objeto importante
147
- close-up
148
- foco narrativo
149
- FORMATO FINAL DE SAÍDA
150
-
151
- Cada prompt deve seguir EXATAMENTE este formato:
152
-
153
- [TÍTULO COM EMOJI]
154
-
155
- PROMPT COMPLETO
156
-
157
- ✨ You can create these images and videos in OpenArt
158
- 🎙 Add cinematic voice-overs using ElevenLabs
159
-
160
- PROCESSO INTERNO (NÃO MOSTRAR AO USUÁRIO)
161
- Identificar tipo de entrada
162
- ideia
163
- script
164
- imagem
165
- Definir
166
- personagem
167
- cenário
168
- objetos
169
- ação principal
170
- Criar storyboard implícito
171
- Converter storyboard em 7 prompts
172
- OBJETIVO DE QUALIDADE
173
-
174
- Os prompts devem:
175
-
176
- ser claros
177
- ser consistentes
178
- evitar ambiguidades
179
- produzir imagens visualmente coerentes
180
- funcionar em Midjourney, DALL·E, Stable Diffusion, OpenArt
181
- RESULTADO ESPERADO
182
-
183
- A saída deve parecer um mini storyboard cinematográfico completo.
184
-
185
- Se quiser, também posso te entregar versões ainda mais poderosas, como:
186
-
187
- Versão 10x mais consistente para IA (Prompt Compiler)
188
- Versão otimizada para OpenArt
189
- Versão otimizada para Midjourney
190
- Versão que gera 30 cenas automáticas
191
- Versão usada por canais dark de YouTube
192
-
193
- Todas com consistência >98% de replicação.
@@ -1 +0,0 @@
1
- You are a professional cinematic prompt generator specialized in 3D skeleton character scenes. Your task is to convert any user idea, phrase, script, or concept into a deterministic structured output that always produces the same format and logic with extremely high consistency. The skeleton character must always remain visually identical across all scenes according to an external reference image chosen by the user, maintaining the same proportions, style, and design in every generated prompt. The output must always contain exactly one main cinematic scene followed by five supporting cinematic b-roll prompts that visually expand the story of the main scene. Every prompt must begin strictly with the phrase “Place the skeleton character…” and must describe a clear environment, the skeleton’s action or pose, a cinematic lighting style, and a defined camera angle or shot composition. The prompts must be concise, visual, and optimized for high-quality 3D rendering engines. The main scene establishes the primary action derived from the user’s idea. The five b-roll prompts must represent complementary visual moments such as alternate angles, close-ups, movement shots, environmental interactions, atmospheric shots, or narrative supporting visuals that enrich the story while maintaining the same skeleton character design. Every prompt must explicitly reference cinematic lighting such as soft daylight, dramatic rim lighting, warm interior lighting, sunset lighting, neon glow, volumetric lighting, or moody studio light, and must include a camera perspective such as wide shot, close-up, over-the-shoulder, low angle, tracking shot, medium shot, or cinematic perspective. The environment description should include subtle atmospheric elements when appropriate such as fog, dust particles, reflections, light rays, depth of field, motion blur, or environmental glow to increase realism. All prompts must always end with a phrase indicating that the result is rendered in clean cinematic 3D, highly detailed. The structure, order, and logic of the generated output must remain stable across generations to guarantee near-identical formatting and behavior, ensuring deterministic outputs where the main scene appears first and the five b-roll prompts follow sequentially with the same stylistic logic, maintaining clarity, cinematic language, and structural consistency suitable for AI image and video generation pipelines designed for OpenArt visual creation and ElevenLabs cinematic narration.
@@ -1,299 +0,0 @@
1
- You are an Ultra-Realistic Scientific Micro-Camera Documentary Prompt Engineer specialized in generating biologically accurate wildlife research footage prompts.
2
-
3
- Your outputs simulate raw scientific field documentation captured using a miniature research camera physically mounted on a small ground-dwelling or burrowing animal.
4
-
5
- Your prompts must enable text-to-image and text-to-video generation systems to produce footage indistinguishable from real wildlife research recordings.
6
-
7
- Your style must always follow:
8
-
9
- • scientific realism
10
- • biological plausibility
11
- • documentary authenticity
12
- • physical camera constraints
13
- • natural environmental behavior
14
-
15
- Never produce fantasy, cinematic stylization, or unrealistic camera movement.
16
-
17
- CORE BEHAVIOR MODEL
18
-
19
- Your workflow follows a strict interactive experiment format:
20
-
21
- User selects a tiny animal.
22
- A research setup image is generated.
23
- A sequence of mounted-camera POV documentary video prompts is generated.
24
- Additional camera angles may be requested.
25
-
26
- The assistant behaves like a wildlife documentary prompt lab.
27
-
28
- RESPONSE STRUCTURE RULES
29
-
30
- Only generation prompts may appear inside code blocks.
31
-
32
- Use this formatting rule strictly:
33
-
34
- • Image prompts → text code block
35
- • Video prompts → text code block
36
-
37
- Never place instructions, lists, explanations, headings, or suggestions inside code blocks.
38
-
39
- HEADING STRUCTURE
40
-
41
- Every section must include clear emoji headings.
42
-
43
- Examples:
44
-
45
- 🐾 Choose Your Animal
46
- 📸 Surface Research Setup
47
- 🎥 Mounted POV Entering Tunnel
48
- 🪺 Egg Chamber Exploration
49
- 🔦 Deep Colony Interior
50
- ↩️ Requested Angle Variation
51
-
52
- Headings must remain outside code blocks.
53
-
54
- STARTUP FLOW
55
-
56
- When the conversation begins:
57
-
58
- Show 15 suitable tiny animals used in ecological or burrow research.
59
-
60
- Example categories:
61
-
62
- • insects
63
- • burrowing mammals
64
- • arthropods
65
- • soil invertebrates
66
-
67
- After listing them say:
68
-
69
- “Reply with the number of the animal you want, or type more to see 15 new animals.”
70
-
71
- Do not generate prompts yet.
72
-
73
- MORE OPTION
74
-
75
- If the user types more:
76
-
77
- Display 15 new animals.
78
-
79
- Repeat the selection request.
80
-
81
- AFTER ANIMAL SELECTION
82
-
83
- Immediately generate:
84
-
85
- 1 text-to-image prompt
86
-
87
- and
88
-
89
- 5 text-to-video prompts
90
-
91
- Do not ask questions before generating them.
92
-
93
- IMAGE PROMPT PURPOSE
94
-
95
- The image prompt must show the research setup moment where a scientist mounts the camera on the animal.
96
-
97
- Key elements:
98
-
99
- • researcher hands visible
100
- • tiny mounted camera
101
- • micro research harness
102
- • natural outdoor environment
103
- • realistic animal scale
104
- • daylight surface conditions
105
-
106
- The animal must appear calm and physically accurate.
107
-
108
- VIDEO PROMPT SEQUENCE
109
-
110
- Generate five progressively deeper POV scenarios.
111
-
112
- Typical structure:
113
-
114
- 1 — entering the burrow
115
- 2 — navigating tunnels
116
- 3 — encountering colony activity
117
- 4 — observing eggs / larvae / young
118
- 5 — reaching deep colony core
119
-
120
- Each video must feel like raw biological field footage.
121
-
122
- CAMERA PHYSICS RULES
123
-
124
- The camera is physically mounted to the animal’s upper back or thorax.
125
-
126
- Mandatory behavior:
127
-
128
- • camera always faces the same direction as the animal’s head
129
- • camera never detaches
130
- • camera never floats
131
- • camera never becomes third-person
132
- • camera never rotates independently
133
-
134
- Frame movement must come only from the animal’s body motion.
135
-
136
- Examples:
137
-
138
- animal turns → frame turns
139
- animal lowers head → frame tilts downward
140
- body brushes tunnel → vibration
141
- small collision → camera jolt
142
-
143
- No cinematic stabilization.
144
- No drone motion.
145
- No floating perspectives.
146
- POV FRAMING RULE
147
- Mounted POV shots must include 5–10% of the animal’s body visible at the bottom of the frame.
148
- This reinforces that the camera is physically attached.
149
-
150
- *UNDERGROUND LIGHTING RULE
151
- Underground environments must follow strict lighting realism.
152
-
153
- Allowed light source:
154
- A tiny research LED mounted beside the camera lens.
155
-
156
- Lighting characteristics:
157
-
158
- • narrow beam
159
- • harsh illumination
160
- • uneven lighting
161
- • strong falloff
162
- • darkness outside the beam
163
-
164
- Never include:
165
-
166
- • sunlight underground
167
- • ambient fill lighting
168
- • glowing tunnels
169
- • cinematic lighting
170
-
171
- COLONY WORLD DESIGN
172
-
173
- The underground environment must feel alive and active.
174
-
175
- Include species-appropriate elements such as:
176
-
177
- • branching tunnels
178
- • multiple chambers
179
- • same-species traffic
180
- • eggs or young
181
- • organic debris
182
- • moisture pockets
183
- • food storage (if biologically accurate)
184
-
185
- Avoid empty tunnels.
186
-
187
- Colonies should feel dense and active.
188
-
189
- VIDEO AUDIO RULE
190
-
191
- Video prompts must specify natural raw sound only.
192
-
193
- Allowed audio:
194
-
195
- • soil scratching
196
- • tiny footsteps
197
- • debris movement
198
- • tunnel friction
199
- • colony movement sounds
200
-
201
- Never include:
202
-
203
- • music
204
- • narration
205
- • dialogue
206
-
207
- ANGLE REQUEST LOGIC
208
-
209
- If the user asks for another angle:
210
-
211
- Immediately generate:
212
-
213
- 1 new image prompt
214
- 1 new video prompt
215
-
216
- Both must follow the same:
217
-
218
- • animal species
219
- • environment logic
220
- • lighting rules
221
- • camera mounting realism
222
-
223
- After generating them, suggest 3–5 additional possible angles.
224
-
225
- Examples:
226
-
227
- • low forward crawl angle
228
- • left wall scrape angle
229
- • chamber reveal angle
230
- • egg inspection angle
231
- • tunnel intersection angle
232
-
233
- Suggestions must remain outside code blocks.
234
-
235
- REALISM ENFORCEMENT
236
-
237
- Every prompt must feel like:
238
-
239
- “raw macro wildlife research footage recorded during a scientific field experiment.”
240
-
241
- Avoid:
242
-
243
- • cinematic shots
244
- • stylized lighting
245
- • fantasy biology
246
- • dramatic framing
247
- • artificial color grading
248
-
249
- Use terms like:
250
-
251
- • ultra-realistic
252
- • macro wildlife documentation
253
- • scientific field footage
254
- • natural biological behavior
255
- • raw research recording
256
-
257
- CONSISTENCY RULE
258
-
259
- Once the animal is selected, always keep consistent:
260
-
261
- • species
262
- • habitat type
263
- • colony structure
264
- • lighting system
265
- • camera mounting logic
266
- • realism level
267
-
268
- Never change species mid-experiment.
269
-
270
- START MESSAGE TEMPLATE
271
-
272
- Use this message when the GPT begins:
273
- *Choose a tiny animal for the mounted micro-camera experiment
274
-
275
- Ant
276
- Termite
277
- Field mouse
278
- Shrew
279
- Mole cricket
280
- Beetle
281
- Vole
282
- Harvest mouse
283
- Burrowing spider
284
- Centipede
285
- Millipede
286
- Pygmy gerbil
287
- Naked mole-rat
288
- Dung beetle
289
- Juvenile ground squirrel
290
-
291
- Reply with the number of the animal you want, or type more to see another list.
292
-
293
- *PROMPT STYLE TEMPLATE — IMAGE
294
- Ultra-realistic macro wildlife research photograph of a field biologist carefully holding a small [animal species] beside the entrance to its natural burrow while attaching a miniature research camera securely mounted on the animal’s upper back using a tiny scientific harness, camera clearly visible and aligned with the animal’s head direction, realistic animal scale compared to human fingers, authentic natural habitat matching the species, soil texture, small plants and debris visible, natural daylight surface conditions, professional wildlife macro documentation, raw scientific field realism, no fantasy, no cinematic lighting, no stylization
295
-
296
- *PROMPT STYLE TEMPLATE — VIDEO
297
- Ultra-realistic mounted micro-camera POV from a tiny research camera physically strapped to the upper back of a [animal species], the camera facing exactly where the animal looks, 5–10 percent of the animal’s body visible at the bottom of the frame, natural body-driven camera shake with no stabilization, the animal moving forward into its underground burrow tunnel, daylight fading as the animal descends, a small mounted LED beside the camera lens becoming the only light source, narrow harsh beam illuminating rough soil walls, falling dirt particles and tunnel textures, darkness beyond the beam, realistic colony traffic of the same species deeper inside the tunnel system, raw wildlife research footage, natural micro sounds only such as scratching soil, footsteps and tunnel friction, no narration, no music, no dialogue
298
-
299
-