@danhachuel/thunderbolt 0.4.24 → 0.4.25

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.
@@ -368,8 +368,17 @@ def seed_blueprints() -> None:
368
368
  shutil.copy2(source, target)
369
369
  pair_source = SEED_BLUEPRINTS / "thumbnail_blueprint_pairs.json"
370
370
  pair_target = BLUEPRINTS / "thumbnail_blueprint_pairs.json"
371
- if pair_source.exists() and not pair_target.exists():
372
- shutil.copy2(pair_source, pair_target)
371
+ if pair_source.exists():
372
+ try:
373
+ seeded_pairs = json.loads(pair_source.read_text(encoding="utf-8"))
374
+ current_pairs = json.loads(pair_target.read_text(encoding="utf-8")) if pair_target.exists() else {}
375
+ if isinstance(seeded_pairs, dict) and isinstance(current_pairs, dict):
376
+ merged_pairs = {**seeded_pairs, **current_pairs}
377
+ if merged_pairs != current_pairs:
378
+ atomic_write(pair_target, merged_pairs)
379
+ except (OSError, UnicodeError, json.JSONDecodeError):
380
+ if not pair_target.exists():
381
+ shutil.copy2(pair_source, pair_target)
373
382
 
374
383
 
375
384
  def seed_prompt_masters() -> None:
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@danhachuel/thunderbolt",
3
- "version": "0.4.24",
3
+ "version": "0.4.25",
4
4
  "description": "Thunderbolt — interface local para operação de canais faceless e motor MoneyPrinterTurbo",
5
5
  "license": "MIT",
6
6
  "main": "scripts/cli.mjs",
@@ -143,7 +143,17 @@ function copySeedBlueprints(storageRoot) {
143
143
  }
144
144
  const pairSource = join(seedRoot, "thumbnail_blueprint_pairs.json");
145
145
  const pairTarget = join(storageRoot, "blueprints", "thumbnail_blueprint_pairs.json");
146
- if (existsSync(pairSource) && !existsSync(pairTarget)) copyFileSync(pairSource, pairTarget);
146
+ if (existsSync(pairSource)) {
147
+ try {
148
+ const seededPairs = JSON.parse(readFileSync(pairSource, "utf8"));
149
+ const currentPairs = existsSync(pairTarget) ? JSON.parse(readFileSync(pairTarget, "utf8")) : {};
150
+ if (seededPairs && currentPairs && typeof seededPairs === "object" && typeof currentPairs === "object") {
151
+ writeFileSync(pairTarget, JSON.stringify({ ...seededPairs, ...currentPairs }, null, 2) + "\n", "utf8");
152
+ }
153
+ } catch {
154
+ if (!existsSync(pairTarget)) copyFileSync(pairSource, pairTarget);
155
+ }
156
+ }
147
157
  }
148
158
 
149
159
  function copySeedPromptMasters(storageRoot) {
@@ -1,4 +1,9 @@
1
1
  {
2
2
  "BLUEPRINTCANALMILITAR": "Militar_Thumbnail_Blueprint",
3
- "MILITAR": "Militar_Thumbnail_Blueprint"
3
+ "MILITAR": "Militar_Thumbnail_Blueprint",
4
+ "blueprintcanalfinanças": "FINANCE_Thumbnail_Blueprint",
5
+ "blueprintcanalfinancas": "FINANCE_Thumbnail_Blueprint",
6
+ "BLUEPRINT CANAL FINANÇAS": "FINANCE_Thumbnail_Blueprint",
7
+ "FINANÇAS": "FINANCE_Thumbnail_Blueprint",
8
+ "FINANCAS": "FINANCE_Thumbnail_Blueprint"
4
9
  }
@@ -0,0 +1,193 @@
1
+ 🔒 STYLE LOCK — NON-NEGOTIABLE
2
+
3
+ Clean, educational whiteboard/animation-style thumbnails for personal finance content. The visual language is approachable, simplified, and focused on breaking down complex money topics into digestible visuals. Thumbnails feature a consistent animated character (Nick) as the host, surrounded by financial symbols, charts, and money-related iconography. The overall vibe is friendly, trustworthy, and educational — not aggressive, not overly polished/realistic, and never cluttered.
4
+
5
+ ❌ Not allowed:
6
+
7
+ Photorealistic faces or live-action photography
8
+
9
+ Dark, moody, or dramatic lighting (keep it bright and clean)
10
+
11
+ Cluttered backgrounds with more than 3–4 distinct visual elements
12
+
13
+ Text that exceeds 5–6 words total on the thumbnail
14
+
15
+ Aggressive red "clickbait" arrows or excessive attention-grabbing graphics
16
+
17
+ Stock photo-style imagery (everything should match the whiteboard/animated aesthetic)
18
+
19
+ 🧍‍♂️ FRAMING & POSE
20
+
21
+ Primary subject: A consistent animated character representing "Nick" — a friendly, approachable male figure with a neutral-to-enthusiastic expression. The character is drawn in a simple, flat 2D illustration style consistent with whiteboard animation aesthetics.
22
+
23
+ Framing: Medium shot (chest/head and shoulders) or full-body character positioned on the left or right side of the frame, leaving the opposite side for text and visual elements.
24
+
25
+ Angle: Straight-on, eye-level perspective — no dramatic low or high angles. The character faces the viewer or slightly angles toward the center of the frame.
26
+
27
+ Energy: Calm, confident, and informative. The character may point toward a chart, hold money, or gesture toward the text area. No extreme emotions (no shock, fear, or anger faces).
28
+
29
+ Cropping: Generous breathing room around the character — never cropped tightly against the edges.
30
+
31
+ 🎨 BACKGROUND & LIGHTING
32
+
33
+ Environment: Clean, minimal background — typically a solid or subtly gradient color (light blue, soft green, warm yellow, or white) that suggests a "whiteboard" or educational setting. Sometimes features a simple grid pattern or subtle chalkboard texture.
34
+
35
+ Lighting: Flat, even, shadowless illumination — consistent with 2D animation. No dramatic shadows, no harsh highlights.
36
+
37
+ Depth: Minimal — the background and foreground are clearly separated but exist on the same visual plane. No complex 3D depth or parallax.
38
+
39
+ Visual noise: Extremely low. Background contains at most 1–2 supporting visual elements (e.g., a simple bar chart, a stack of coins, an upward arrow) placed behind or beside the character.
40
+
41
+ 🧭 IDENTIFICADORES / SÍMBOLOS DO CANAL
42
+
43
+ Recurring visual symbols:
44
+
45
+ Money symbols: Dollar signs ($), stacks of coins, bundles of cash
46
+
47
+ Financial charts: Simple upward-trending line graphs or bar charts (green/blue)
48
+
49
+ Arrows: Clean, single-direction arrows (green for up, red for down) — minimal use
50
+
51
+ Icons: Piggy bank, calculator, calendar, clock (all in simple 2D icon style)
52
+
53
+ The host character: A consistent illustrated "Nick" figure — the channel's recognizable mascot/personality
54
+
55
+ Placement: Symbols are placed strategically around the character or integrated into the background — never overlapping the character's face or the main text.
56
+
57
+ 🚨 VISUAL ATTENTION ELEMENT
58
+
59
+ Usage: Minimal and purposeful. The channel appears to avoid aggressive clickbait tactics.
60
+
61
+ If used:
62
+
63
+ A single, clean arrow (green or yellow) pointing toward the key visual or text
64
+
65
+ A subtle circle or highlight around a specific element (e.g., a number, a dollar amount)
66
+
67
+ No emojis, no multiple arrows, no neon glow effects
68
+
69
+ Rule: Less is more. If an attention element is used, it serves to guide the viewer's eye, not to shock or overwhelm.
70
+
71
+ 📝 TEXT STYLE
72
+
73
+ Structure:
74
+
75
+ Maximum 2 lines of text
76
+
77
+ Positioned on the opposite side of the character (if character is left, text is right; if character is right, text is left)
78
+
79
+ Text occupies approximately 15–20% of the thumbnail area
80
+
81
+ Typography:
82
+
83
+ Bold, sans-serif font (e.g., Montserrat, Roboto, or similar clean geometric font)
84
+
85
+ Primary text: White or bright yellow, with a dark outline or subtle shadow for contrast
86
+
87
+ Secondary text (if used): Smaller, in a contrasting color (e.g., green or blue)
88
+
89
+ Hierarchy:
90
+
91
+ Line 1: Primary hook (largest, boldest) — 3–4 words max
92
+
93
+ Line 2: Supporting context (smaller) — 2–3 words max
94
+
95
+ Background for text: Optional — a semi-transparent pill-shaped or rectangular bar behind the text to ensure readability against any background.
96
+
97
+ 🧠 TEXT PSYCHOLOGY
98
+
99
+ Tone: Curious, educational, slightly urgent but not alarmist. The text promises value and clarity — "Here's what you need to know" energy.
100
+
101
+ Common psychological triggers observed/inferred:
102
+
103
+ Curiosity gap: "What They Don't Tell You About..."
104
+
105
+ Number/List: "3 Ways to..." / "5 Mistakes..."
106
+
107
+ Direct address: "You're Doing This Wrong"
108
+
109
+ Benefit-driven: "How to Save $___"
110
+
111
+ Question: "Is This a Scam?"
112
+
113
+ Examples of likely headline patterns:
114
+
115
+ "3 Passive Income Ideas"
116
+
117
+ "This One Rule Changed Everything"
118
+
119
+ "Why 90% Lose Money"
120
+
121
+ "How to Retire Early"
122
+
123
+ "The Truth About Investing"
124
+
125
+ 🎯 COMPOSITION RULES
126
+
127
+ Rule of thirds: Character placed on the left or right vertical third line. Text occupies the opposite side. Supporting visual elements (charts, icons) are placed in the remaining quadrants.
128
+
129
+ Focal hierarchy:
130
+
131
+ Primary: Character's face (human connection)
132
+
133
+ Secondary: Text (the promise/hook)
134
+
135
+ Tertiary: Supporting visuals (context/reinforcement)
136
+
137
+ Negative space: Generous use of empty space around the character and text — nothing feels cramped.
138
+
139
+ Distraction control: Maximum 3–4 distinct visual elements total (character, text, 1–2 symbols/charts).
140
+
141
+ Mobile-first: Text is large enough to read on a smartphone screen. Character's face is clearly visible even at small sizes.
142
+
143
+ 📐 FORMAT & QUALITY
144
+
145
+ Aspect ratio:
146
+ 16:9
147
+
148
+ Resolution:
149
+ 1280 × 720 minimum
150
+
151
+ Image style: 2D illustration / whiteboard animation style — flat colors, clean lines, no gradients or 3D rendering. The aesthetic should match "explainer video" illustration quality.
152
+
153
+ Sharpness: Crisp and clear — no blur, no painterly effects.
154
+
155
+ Technical restrictions: No photographic elements. No live-action footage. All elements must be in a consistent illustration style. Colors should be bright and saturated but not neon.
156
+
157
+ 🧠 FINAL OBJECTIVE
158
+
159
+ Primary goal:
160
+ Maximize YouTube CTR for personal finance / investing education content
161
+
162
+ Target emotional triggers:
163
+
164
+ Curiosity about money and investing
165
+
166
+ Desire for financial security and passive income
167
+
168
+ Fear of missing out on wealth-building opportunities
169
+
170
+ Trust in an expert/guide figure
171
+
172
+ Target audience: Beginners to intermediate investors — people looking to understand personal finance, build wealth, and manage debt in a simple, approachable way.
173
+
174
+ 🧾 FINAL INPUT FORMAT
175
+
176
+ VIDEO TITLE:
177
+ "[placeholder — will be filled in the next step with the actual video title/script]"
178
+
179
+ ⚙️ FINAL SYSTEM INSTRUCTION
180
+
181
+ You are a thumbnail designer for the Nick Invests YouTube channel. Using the style guide above, generate 2–4 headline options (2–5 words each) derived from the provided VIDEO TITLE. Then create a thumbnail image that follows all style rules above:
182
+
183
+ 2D illustration / whiteboard animation style
184
+
185
+ Nick character (animated host) on one side
186
+
187
+ Clean, bright background with minimal visual noise
188
+
189
+ Text on the opposite side (max 2 lines, bold sans-serif)
190
+
191
+ 1–2 supporting financial symbols (optional)
192
+
193
+ No photographic elements, no aggressive clickbait styling