videonut 1.0.1 → 1.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.antigravity/config.toml +8 -0
- package/.claude/commands/archivist.toml +12 -0
- package/.claude/commands/director.toml +12 -0
- package/.claude/commands/eic.toml +12 -0
- package/.claude/commands/investigator.toml +12 -0
- package/.claude/commands/prompt.toml +12 -0
- package/.claude/commands/scavenger.toml +12 -0
- package/.claude/commands/scout.toml +12 -0
- package/.claude/commands/scriptwriter.toml +12 -0
- package/.claude/commands/seo.toml +12 -0
- package/.claude/commands/thumbnail.toml +12 -0
- package/.claude/commands/topic_scout.toml +12 -0
- package/.gemini/commands/archivist.toml +12 -0
- package/.gemini/commands/director.toml +12 -0
- package/.gemini/commands/eic.toml +12 -0
- package/.gemini/commands/investigator.toml +12 -0
- package/.gemini/commands/prompt.toml +12 -0
- package/.gemini/commands/scavenger.toml +12 -0
- package/.gemini/commands/scout.toml +12 -0
- package/.gemini/commands/scriptwriter.toml +12 -0
- package/.gemini/commands/seo.toml +12 -0
- package/.gemini/commands/thumbnail.toml +12 -0
- package/.gemini/commands/topic_scout.toml +12 -0
- package/.qwen/commands/archivist.toml +12 -0
- package/.qwen/commands/director.toml +12 -0
- package/.qwen/commands/eic.toml +12 -0
- package/.qwen/commands/investigator.toml +12 -0
- package/.qwen/commands/prompt.toml +12 -0
- package/.qwen/commands/scavenger.toml +12 -0
- package/.qwen/commands/scout.toml +12 -0
- package/.qwen/commands/scriptwriter.toml +12 -0
- package/.qwen/commands/seo.toml +12 -0
- package/.qwen/commands/thumbnail.toml +12 -0
- package/.qwen/commands/topic_scout.toml +12 -0
- package/USER_GUIDE.md +90 -0
- package/agents/core/eic.md +772 -0
- package/agents/core/prompt_agent.md +264 -0
- package/agents/core/self_review_protocol.md +143 -0
- package/agents/creative/director.md +247 -0
- package/agents/creative/scriptwriter.md +208 -0
- package/agents/creative/seo.md +316 -0
- package/agents/creative/thumbnail.md +285 -0
- package/agents/research/investigator.md +395 -0
- package/agents/research/topic_scout.md +419 -0
- package/agents/technical/archivist.md +289 -0
- package/agents/technical/scavenger.md +248 -0
- package/bin/videonut.js +389 -107
- package/config.yaml +62 -0
- package/docs/AUDIT_REPORT.md +364 -0
- package/docs/LIFECYCLE.md +651 -0
- package/docs/scriptwriter.md +43 -0
- package/file_validator.py +187 -0
- package/memory/short_term/asset_manifest.md +64 -0
- package/memory/short_term/investigation_dossier.md +31 -0
- package/memory/short_term/master_script.md +51 -0
- package/package.json +16 -3
- package/requirements.txt +9 -0
- package/scripts/setup.js +8 -0
- package/tools/check_env.py +77 -0
- package/tools/downloaders/__pycache__/caption_reader.cpython-312.pyc +0 -0
- package/tools/downloaders/__pycache__/image_grabber.cpython-312.pyc +0 -0
- package/tools/downloaders/__pycache__/pdf_reader.cpython-312.pyc +0 -0
- package/tools/downloaders/__pycache__/screenshotter.cpython-312.pyc +0 -0
- package/tools/downloaders/__pycache__/web_reader.cpython-312.pyc +0 -0
- package/tools/downloaders/article_screenshotter.py +388 -0
- package/tools/downloaders/caption_reader.py +238 -0
- package/tools/downloaders/clip_grabber.py +83 -0
- package/tools/downloaders/image_grabber.py +106 -0
- package/tools/downloaders/pdf_reader.py +163 -0
- package/tools/downloaders/pdf_screenshotter.py +240 -0
- package/tools/downloaders/screenshotter.py +58 -0
- package/tools/downloaders/web_reader.py +69 -0
- package/tools/downloaders/youtube_search.py +174 -0
- package/tools/logging/search_logger.py +334 -0
- package/tools/validators/__pycache__/archive_url.cpython-312.pyc +0 -0
- package/tools/validators/__pycache__/link_checker.cpython-312.pyc +0 -0
- package/tools/validators/archive_url.py +269 -0
- package/tools/validators/link_checker.py +45 -0
- package/workflow_orchestrator.py +337 -0
|
@@ -0,0 +1,651 @@
|
|
|
1
|
+
# VideoNut Complete Lifecycle Documentation
|
|
2
|
+
|
|
3
|
+
## 📊 SYSTEM OVERVIEW
|
|
4
|
+
|
|
5
|
+
```
|
|
6
|
+
╔══════════════════════════════════════════════════════════════════════════════╗
|
|
7
|
+
║ VIDEONUT AGENT PIPELINE ║
|
|
8
|
+
╠══════════════════════════════════════════════════════════════════════════════╣
|
|
9
|
+
║ ║
|
|
10
|
+
║ USER ──────────────────────────────────────────────────────────────────► ║
|
|
11
|
+
║ │ ║
|
|
12
|
+
║ ▼ ║
|
|
13
|
+
║ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐║
|
|
14
|
+
║ │ 📡 SCOUT │────►│ 🎯 PROMPT │────►│ 🕵️ INVEST │────►│ ✍️ SCRIPT │║
|
|
15
|
+
║ │ (1st Agent) │ │ AGENT │ │ IGATOR │ │ WRITER │║
|
|
16
|
+
║ └─────────────┘ └─────────────┘ └─────────────┘ └─────────────┘║
|
|
17
|
+
║ │ │ │ │ ║
|
|
18
|
+
║ │ WRITES │ READS │ READS │ READS ║
|
|
19
|
+
║ ▼ ▼ ▼ ▼ ║
|
|
20
|
+
║ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐║
|
|
21
|
+
║ │config.yaml │ │topic_brief │ │ prompt.md │ │truth_dossier│║
|
|
22
|
+
║ │ │ │ .md │ │ │ │ .md │║
|
|
23
|
+
║ └─────────────┘ └─────────────┘ └─────────────┘ └─────────────┘║
|
|
24
|
+
║ ║
|
|
25
|
+
║ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐║
|
|
26
|
+
║ │ 🎬 DIRECTOR │────►│ 🦅 SCAVENGE │────►│ 💾 ARCHIVIST│────►│ 🧐 EIC │║
|
|
27
|
+
║ │ │ │ R │ │ │ │ │║
|
|
28
|
+
║ └─────────────┘ └─────────────┘ └─────────────┘ └─────────────┘║
|
|
29
|
+
║ │ │ │ │ ║
|
|
30
|
+
║ │ READS │ READS │ READS │ READS ║
|
|
31
|
+
║ ▼ ▼ ▼ ▼ ║
|
|
32
|
+
║ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐║
|
|
33
|
+
║ │voice_script │ │master_script│ │asset_manifest│ │ALL PREVIOUS │║
|
|
34
|
+
║ │narrative_ │ │ .md │ │ .md │ │ FILES │║
|
|
35
|
+
║ │script.md │ │ │ │ │ │ │║
|
|
36
|
+
║ └─────────────┘ └─────────────┘ └─────────────┘ └─────────────┘║
|
|
37
|
+
║ ║
|
|
38
|
+
║ ┌─────────────┐ ┌─────────────┐ ║
|
|
39
|
+
║ │ 🎨 THUMBNAIL│ │ 🔍 SEO │ ║
|
|
40
|
+
║ │ │ │ │ ║
|
|
41
|
+
║ └─────────────┘ └─────────────┘ ║
|
|
42
|
+
║ │ │ ║
|
|
43
|
+
║ └───────┬───────────┘ ║
|
|
44
|
+
║ ▼ ║
|
|
45
|
+
║ ┌─────────────────┐ ║
|
|
46
|
+
║ │youtube_ │ ║
|
|
47
|
+
║ │optimization.md │ ║
|
|
48
|
+
║ └─────────────────┘ ║
|
|
49
|
+
║ ║
|
|
50
|
+
╚══════════════════════════════════════════════════════════════════════════════╝
|
|
51
|
+
```
|
|
52
|
+
|
|
53
|
+
---
|
|
54
|
+
|
|
55
|
+
## 🔐 CONFIG.YAML ACCESS CONTROL
|
|
56
|
+
|
|
57
|
+
```
|
|
58
|
+
╔══════════════════════════════════════════════════════════════════════════════╗
|
|
59
|
+
║ WHO CAN MODIFY CONFIG.YAML? ║
|
|
60
|
+
╠══════════════════════════════════════════════════════════════════════════════╣
|
|
61
|
+
║ ║
|
|
62
|
+
║ ┌──────────────────────────────────────────────────────────────────────┐ ║
|
|
63
|
+
║ │ 📡 TOPIC SCOUT (ONLY AGENT) │ ║
|
|
64
|
+
║ │ │ ║
|
|
65
|
+
║ │ ✅ CAN WRITE TO config.yaml: │ ║
|
|
66
|
+
║ │ • projects_folder │ ║
|
|
67
|
+
║ │ • current_project │ ║
|
|
68
|
+
║ │ • video_format │ ║
|
|
69
|
+
║ │ • target_duration │ ║
|
|
70
|
+
║ │ • target_line_count │ ║
|
|
71
|
+
║ │ • audio_language │ ║
|
|
72
|
+
║ │ • scope (international/national/regional) │ ║
|
|
73
|
+
║ │ • country │ ║
|
|
74
|
+
║ │ • region │ ║
|
|
75
|
+
║ │ • industry_tag │ ║
|
|
76
|
+
║ │ │ ║
|
|
77
|
+
║ └──────────────────────────────────────────────────────────────────────┘ ║
|
|
78
|
+
║ │ ║
|
|
79
|
+
║ │ WRITES ║
|
|
80
|
+
║ ▼ ║
|
|
81
|
+
║ ┌──────────────────────────────────────────────────────────────────────┐ ║
|
|
82
|
+
║ │ config.yaml │ ║
|
|
83
|
+
║ └──────────────────────────────────────────────────────────────────────┘ ║
|
|
84
|
+
║ │ ║
|
|
85
|
+
║ │ READ ONLY ║
|
|
86
|
+
║ ▼ ║
|
|
87
|
+
║ ┌──────────────────────────────────────────────────────────────────────┐ ║
|
|
88
|
+
║ │ 🎯 Prompt │ 🕵️ Investigator │ ✍️ Scriptwriter │ 🎬 Director │ ║
|
|
89
|
+
║ │ 🦅 Scavenger │ 💾 Archivist │ 🧐 EIC │ 🎨 Thumbnail │ 🔍 SEO │ ║
|
|
90
|
+
║ │ │ ║
|
|
91
|
+
║ │ ❌ CANNOT MODIFY config.yaml │ ║
|
|
92
|
+
║ │ ✅ CAN READ all values │ ║
|
|
93
|
+
║ │ ✅ CAN CREATE files in {projects_folder}/{current_project}/ │ ║
|
|
94
|
+
║ └──────────────────────────────────────────────────────────────────────┘ ║
|
|
95
|
+
║ ║
|
|
96
|
+
╚══════════════════════════════════════════════════════════════════════════════╝
|
|
97
|
+
```
|
|
98
|
+
|
|
99
|
+
---
|
|
100
|
+
|
|
101
|
+
## 🛠️ AGENT TOOLS MATRIX
|
|
102
|
+
|
|
103
|
+
```
|
|
104
|
+
╔════════════════════════════════════════════════════════════════════════════════════════╗
|
|
105
|
+
║ WHICH AGENT USES WHICH TOOLS? ║
|
|
106
|
+
╠════════════════════════════════════════════════════════════════════════════════════════╣
|
|
107
|
+
║ ║
|
|
108
|
+
║ TOOL │ SCOUT │ PROMPT │ INVEST │ SCRIPT │ DIREC │ SCAV │ ARCH │ EIC ║
|
|
109
|
+
║ ────────────────────────┼───────┼────────┼────────┼────────┼───────┼──────┼──────┼─────║
|
|
110
|
+
║ google_web_search │ ✅ │ ✅ │ ✅ │ ❌ │ ✅ │ ✅ │ ❌ │ ❌ ║
|
|
111
|
+
║ youtube_search.py │ ✅ │ ✅ │ ✅ │ ❌ │ ✅ │ ✅ │ ❌ │ ❌ ║
|
|
112
|
+
║ caption_reader.py │ ✅ │ ✅ │ ✅ │ ❌ │ ✅ │ ✅ │ ✅ │ ❌ ║
|
|
113
|
+
║ web_reader.py │ ✅ │ ✅ │ ✅ │ ❌ │ ✅ │ ✅ │ ❌ │ ❌ ║
|
|
114
|
+
║ link_checker.py │ ✅ │ ✅ │ ✅ │ ❌ │ ✅ │ ✅ │ ✅ │ ✅ ║
|
|
115
|
+
║ clip_grabber.py │ ❌ │ ❌ │ ❌ │ ❌ │ ❌ │ ❌ │ ✅ │ ❌ ║
|
|
116
|
+
║ image_grabber.py │ ❌ │ ❌ │ ❌ │ ❌ │ ❌ │ ❌ │ ✅ │ ❌ ║
|
|
117
|
+
║ article_screenshotter │ ❌ │ ❌ │ ❌ │ ❌ │ ❌ │ ❌ │ ✅ │ ❌ ║
|
|
118
|
+
║ screenshotter.py │ ❌ │ ❌ │ ❌ │ ❌ │ ❌ │ ❌ │ ✅ │ ❌ ║
|
|
119
|
+
║ pdf_reader.py │ ❌ │ ❌ │ ✅ │ ❌ │ ❌ │ ❌ │ ❌ │ ❌ ║
|
|
120
|
+
║ archive_url.py │ ❌ │ ❌ │ ✅ │ ❌ │ ❌ │ ✅ │ ❌ │ ❌ ║
|
|
121
|
+
║ search_logger.py │ ✅ │ ✅ │ ✅ │ ❌ │ ❌ │ ❌ │ ❌ │ ❌ ║
|
|
122
|
+
║ ║
|
|
123
|
+
╚════════════════════════════════════════════════════════════════════════════════════════╝
|
|
124
|
+
```
|
|
125
|
+
|
|
126
|
+
---
|
|
127
|
+
|
|
128
|
+
## 📁 FILE CREATION & READING FLOW
|
|
129
|
+
|
|
130
|
+
```
|
|
131
|
+
╔══════════════════════════════════════════════════════════════════════════════════════════╗
|
|
132
|
+
║ FILE FLOW: WHO CREATES, WHO READS ║
|
|
133
|
+
╠══════════════════════════════════════════════════════════════════════════════════════════╣
|
|
134
|
+
║ ║
|
|
135
|
+
║ 📡 TOPIC SCOUT ─────────────────────────────────────────────────────────────────────► ║
|
|
136
|
+
║ │ ║
|
|
137
|
+
║ ├──► CREATES: Project folder (gemini_2026-01-04_Topic_001/) ║
|
|
138
|
+
║ ├──► UPDATES: config.yaml (ALL settings) ║
|
|
139
|
+
║ └──► CREATES: topic_brief.md (200 words) ║
|
|
140
|
+
║ │ ║
|
|
141
|
+
║ ▼ READS topic_brief.md ║
|
|
142
|
+
║ 🎯 PROMPT AGENT ────────────────────────────────────────────────────────────────────► ║
|
|
143
|
+
║ │ ║
|
|
144
|
+
║ └──► CREATES: prompt.md (Full investigation prompt with 21 questions) ║
|
|
145
|
+
║ │ ║
|
|
146
|
+
║ ▼ READS prompt.md ║
|
|
147
|
+
║ 🕵️ INVESTIGATOR ────────────────────────────────────────────────────────────────────► ║
|
|
148
|
+
║ │ ║
|
|
149
|
+
║ └──► CREATES: truth_dossier.md (Research findings, answers to 21 questions) ║
|
|
150
|
+
║ │ ║
|
|
151
|
+
║ ▼ READS truth_dossier.md ║
|
|
152
|
+
║ ✍️ SCRIPTWRITER ─────────────────────────────────────────────────────────────────────► ║
|
|
153
|
+
║ │ ║
|
|
154
|
+
║ ├──► CREATES: voice_script.md (Script for TTS with voice cues) ║
|
|
155
|
+
║ └──► CREATES: narrative_script.md (Clean script for Director) ║
|
|
156
|
+
║ │ ║
|
|
157
|
+
║ ▼ READS narrative_script.md ║
|
|
158
|
+
║ 🎬 DIRECTOR ──────────────────────────────────────────────────────────────────────────► ║
|
|
159
|
+
║ │ ║
|
|
160
|
+
║ ├──► CREATES: master_script.md (Scene-by-scene with visual directions) ║
|
|
161
|
+
║ └──► CREATES: video_direction.md (Summary of visual needs) ║
|
|
162
|
+
║ │ ║
|
|
163
|
+
║ ▼ READS master_script.md ║
|
|
164
|
+
║ 🦅 SCAVENGER ───────────────────────────────────────────────────────────────────────► ║
|
|
165
|
+
║ │ ║
|
|
166
|
+
║ └──► CREATES: asset_manifest.md (All URLs + timestamps verified) ║
|
|
167
|
+
║ │ ║
|
|
168
|
+
║ ▼ READS asset_manifest.md ║
|
|
169
|
+
║ 💾 ARCHIVIST ───────────────────────────────────────────────────────────────────────► ║
|
|
170
|
+
║ │ ║
|
|
171
|
+
║ ├──► DOWNLOADS: assets/ folder (images, videos, screenshots) ║
|
|
172
|
+
║ └──► CREATES: MANUAL_REQUIRED.txt (If some downloads failed) ║
|
|
173
|
+
║ │ ║
|
|
174
|
+
║ ▼ READS ALL previous files ║
|
|
175
|
+
║ 🧐 EIC (Editor-in-Chief) ────────────────────────────────────────────────────────────► ║
|
|
176
|
+
║ │ ║
|
|
177
|
+
║ └──► CREATES: review_report.md (Quality review, approval/rejection) ║
|
|
178
|
+
║ │ ║
|
|
179
|
+
║ ▼ READS voice_script.md, truth_dossier.md ║
|
|
180
|
+
║ 🎨 THUMBNAIL + 🔍 SEO ─────────────────────────────────────────────────────────────────► ║
|
|
181
|
+
║ │ ║
|
|
182
|
+
║ └──► CREATES: youtube_optimization.md (Thumbnail prompts + SEO) ║
|
|
183
|
+
║ ║
|
|
184
|
+
╚══════════════════════════════════════════════════════════════════════════════════════════╝
|
|
185
|
+
```
|
|
186
|
+
|
|
187
|
+
---
|
|
188
|
+
|
|
189
|
+
## 💬 WHAT EACH AGENT ASKS THE USER
|
|
190
|
+
|
|
191
|
+
```
|
|
192
|
+
╔══════════════════════════════════════════════════════════════════════════════════════════╗
|
|
193
|
+
║ USER INTERACTION PER AGENT ║
|
|
194
|
+
╠══════════════════════════════════════════════════════════════════════════════════════════╣
|
|
195
|
+
║ ║
|
|
196
|
+
║ 📡 TOPIC SCOUT (MOST USER INTERACTION) ║
|
|
197
|
+
║ ├── [NP] What's the topic? ─────────────────────► User enters topic ║
|
|
198
|
+
║ ├── [NP] Scope? (1=International, 2=National, 3=Regional) ───► User picks 1/2/3 ║
|
|
199
|
+
║ ├── [NP] Which country? ─────────────────────────► User enters "India" ║
|
|
200
|
+
║ ├── [NP] Which region? ──────────────────────────► User enters "Telangana" ║
|
|
201
|
+
║ ├── [NP] Audio language? ────────────────────────► User picks Telugu ║
|
|
202
|
+
║ ├── [NP] Video format? ──────────────────────────► User picks Investigative ║
|
|
203
|
+
║ ├── [NP] Duration? ──────────────────────────────► User enters 25 (minutes) ║
|
|
204
|
+
║ ├── [NP] Industry tag? ──────────────────────────► User picks Political ║
|
|
205
|
+
║ ├── [ST] Pick topic (1-5)? ──────────────────────► User picks 2 ║
|
|
206
|
+
║ └── Proceed to Prompt Agent? ────────────────────► User says Y ║
|
|
207
|
+
║ ║
|
|
208
|
+
║ 🎯 PROMPT AGENT (MINIMAL INTERACTION) ║
|
|
209
|
+
║ ├── Topic already from topic_brief.md? Use it? ──► User says Y ║
|
|
210
|
+
║ └── Proceed to Investigator? ────────────────────► User says Y ║
|
|
211
|
+
║ ║
|
|
212
|
+
║ 🕵️ INVESTIGATOR (ONE CONFIRMATION) ║
|
|
213
|
+
║ └── [SI] Start Investigation? ───────────────────► User says Y ║
|
|
214
|
+
║ ║
|
|
215
|
+
║ ✍️ SCRIPTWRITER (ONE CONFIRMATION) ║
|
|
216
|
+
║ └── [GS] Generate Script? ───────────────────────► User says Y ║
|
|
217
|
+
║ ║
|
|
218
|
+
║ 🎬 DIRECTOR (ONE CONFIRMATION) ║
|
|
219
|
+
║ └── [GM] Generate Master Script? ────────────────► User says Y ║
|
|
220
|
+
║ ║
|
|
221
|
+
║ 🦅 SCAVENGER (ONE CONFIRMATION) ║
|
|
222
|
+
║ └── [FA] Find Assets? ───────────────────────────► User says Y ║
|
|
223
|
+
║ ║
|
|
224
|
+
║ 💾 ARCHIVIST (ONE CONFIRMATION) ║
|
|
225
|
+
║ └── [DA] Download Assets? ───────────────────────► User says Y ║
|
|
226
|
+
║ ║
|
|
227
|
+
║ 🧐 EIC (Automatic, may ask for revisions) ║
|
|
228
|
+
║ └── [SR] Start Review? ──────────────────────────► User says Y ║
|
|
229
|
+
║ ║
|
|
230
|
+
║ 🎨 THUMBNAIL + 🔍 SEO (ONE CONFIRMATION) ║
|
|
231
|
+
║ └── [GO] Generate Optimization? ─────────────────► User says Y ║
|
|
232
|
+
║ ║
|
|
233
|
+
╚══════════════════════════════════════════════════════════════════════════════════════════╝
|
|
234
|
+
```
|
|
235
|
+
|
|
236
|
+
---
|
|
237
|
+
|
|
238
|
+
## 📋 COMPLETE EXAMPLE: Electoral Bonds Scam
|
|
239
|
+
|
|
240
|
+
```
|
|
241
|
+
╔══════════════════════════════════════════════════════════════════════════════════════════╗
|
|
242
|
+
║ COMPLETE WALKTHROUGH: "Electoral Bonds Scam" (Political, India) ║
|
|
243
|
+
╠══════════════════════════════════════════════════════════════════════════════════════════╣
|
|
244
|
+
|
|
245
|
+
STEP 1: USER RUNS /topic_scout
|
|
246
|
+
═══════════════════════════════════════════════════════════════════════════════════════════
|
|
247
|
+
|
|
248
|
+
User: /topic_scout
|
|
249
|
+
|
|
250
|
+
📡 Scout: "Ready to configure. What do you want to do?"
|
|
251
|
+
|
|
252
|
+
User: [NP] New Project
|
|
253
|
+
|
|
254
|
+
📡 Scout: "What's the topic?"
|
|
255
|
+
User: "Electoral Bonds Scam"
|
|
256
|
+
|
|
257
|
+
📡 Scout: "What's the scope?"
|
|
258
|
+
[1] International
|
|
259
|
+
[2] National
|
|
260
|
+
[3] Regional
|
|
261
|
+
User: 2
|
|
262
|
+
|
|
263
|
+
📡 Scout: "Which country?"
|
|
264
|
+
User: "India"
|
|
265
|
+
|
|
266
|
+
📡 Scout: "Audio language?"
|
|
267
|
+
[1] English [2] Telugu [3] Hindi...
|
|
268
|
+
User: 2 (Telugu)
|
|
269
|
+
|
|
270
|
+
📡 Scout: "Video format?"
|
|
271
|
+
[1] Investigative Case Study (30-45 min)
|
|
272
|
+
[2] News Explainer (15-20 min)
|
|
273
|
+
...
|
|
274
|
+
User: 1
|
|
275
|
+
|
|
276
|
+
📡 Scout: "Target duration in minutes?"
|
|
277
|
+
User: 30
|
|
278
|
+
|
|
279
|
+
📡 Scout: "Industry tag?"
|
|
280
|
+
[1] Finance [2] Stock Market [3] Political...
|
|
281
|
+
User: 3 (Political)
|
|
282
|
+
|
|
283
|
+
📡 Scout: "✅ PROJECT CREATED"
|
|
284
|
+
📁 Folder: gemini_2026-01-04_Electoral_Bonds_Scam_001
|
|
285
|
+
📊 Settings:
|
|
286
|
+
• Scope: national | India
|
|
287
|
+
• Language: Telugu
|
|
288
|
+
• Format: Investigative Case Study
|
|
289
|
+
• Duration: 30 min (4050 words)
|
|
290
|
+
• Industry: Political
|
|
291
|
+
|
|
292
|
+
config.yaml UPDATED ✅
|
|
293
|
+
|
|
294
|
+
📡 Scout: "Search for topic context or enter manually?"
|
|
295
|
+
User: [ST] Search
|
|
296
|
+
|
|
297
|
+
📡 Scout: *searches using google_web_search, youtube_search.py*
|
|
298
|
+
|
|
299
|
+
TOP 5 ANGLES:
|
|
300
|
+
#1 🔥 "Supreme Court reveals full donor list"
|
|
301
|
+
#2 📈 "Congress demands JPC probe"
|
|
302
|
+
#3 💡 "How companies bought politicians"
|
|
303
|
+
...
|
|
304
|
+
|
|
305
|
+
User: 1
|
|
306
|
+
|
|
307
|
+
📡 Scout: *researches deeply, finds YouTube videos*
|
|
308
|
+
*uses caption_reader.py to get timestamps*
|
|
309
|
+
*writes 200-word brief*
|
|
310
|
+
*saves to topic_brief.md*
|
|
311
|
+
|
|
312
|
+
📡 Scout: "✅ Brief saved. Proceed to /prompt? [Y/N]"
|
|
313
|
+
User: Y
|
|
314
|
+
|
|
315
|
+
═══════════════════════════════════════════════════════════════════════════════════════════
|
|
316
|
+
STEP 2: USER RUNS /prompt
|
|
317
|
+
═══════════════════════════════════════════════════════════════════════════════════════════
|
|
318
|
+
|
|
319
|
+
User: /prompt
|
|
320
|
+
|
|
321
|
+
🎯 Prompt Agent: "📁 Found topic_brief.md from Topic Scout!"
|
|
322
|
+
Topic: Electoral Bonds Scam - Supreme Court revelation
|
|
323
|
+
|
|
324
|
+
🎯 Prompt Agent: "Use this topic? [Y/N]"
|
|
325
|
+
User: Y
|
|
326
|
+
|
|
327
|
+
🎯 Prompt Agent: *reads brief*
|
|
328
|
+
*searches for more details using google_web_search*
|
|
329
|
+
*generates 21 investigation questions*
|
|
330
|
+
*saves to prompt.md*
|
|
331
|
+
|
|
332
|
+
🎯 Prompt Agent: "✅ Prompt created. Proceed to /investigator? [Y/N]"
|
|
333
|
+
User: Y
|
|
334
|
+
|
|
335
|
+
═══════════════════════════════════════════════════════════════════════════════════════════
|
|
336
|
+
STEP 3: USER RUNS /investigator
|
|
337
|
+
═══════════════════════════════════════════════════════════════════════════════════════════
|
|
338
|
+
|
|
339
|
+
User: /investigator
|
|
340
|
+
|
|
341
|
+
🕵️ Investigator: "Active Project: gemini_2026-01-04_Electoral_Bonds_Scam_001"
|
|
342
|
+
"📍 Scope: national | India"
|
|
343
|
+
"🏷️ Industry: Political"
|
|
344
|
+
|
|
345
|
+
🕵️ Investigator: "[SI] Start Investigation? [Y/N]"
|
|
346
|
+
User: Y
|
|
347
|
+
|
|
348
|
+
🕵️ Investigator: *reads prompt.md*
|
|
349
|
+
*uses google_web_search for each question*
|
|
350
|
+
*uses youtube_search.py to find interviews*
|
|
351
|
+
*uses caption_reader.py to extract quotes with timestamps*
|
|
352
|
+
*uses web_reader.py to read news articles*
|
|
353
|
+
*uses archive_url.py to preserve key sources*
|
|
354
|
+
|
|
355
|
+
Industry: Political → Prioritizes:
|
|
356
|
+
• myneta.info (donation data)
|
|
357
|
+
• Election Commission website
|
|
358
|
+
• Supreme Court judgments
|
|
359
|
+
• Parliament proceedings
|
|
360
|
+
|
|
361
|
+
🕵️ Investigator: *writes truth_dossier.md with all findings*
|
|
362
|
+
|
|
363
|
+
🕵️ Investigator: "✅ Dossier created. Proceed to /scriptwriter? [Y/N]"
|
|
364
|
+
User: Y
|
|
365
|
+
|
|
366
|
+
═══════════════════════════════════════════════════════════════════════════════════════════
|
|
367
|
+
STEP 4: USER RUNS /scriptwriter
|
|
368
|
+
═══════════════════════════════════════════════════════════════════════════════════════════
|
|
369
|
+
|
|
370
|
+
User: /scriptwriter
|
|
371
|
+
|
|
372
|
+
✍️ Scriptwriter: "Active Project: gemini_2026-01-04_Electoral_Bonds_Scam_001"
|
|
373
|
+
Target: 30 min = 4050 words (Telugu audio)
|
|
374
|
+
|
|
375
|
+
✍️ Scriptwriter: "[GS] Generate Script?"
|
|
376
|
+
User: Y
|
|
377
|
+
|
|
378
|
+
✍️ Scriptwriter: *reads truth_dossier.md*
|
|
379
|
+
*reads config for audio_language: Telugu*
|
|
380
|
+
*writes voice_script.md (with voice cues like (pause 2s), (angry tone))*
|
|
381
|
+
*writes narrative_script.md (clean version for Director)*
|
|
382
|
+
|
|
383
|
+
Word count check: 4050 words ✅
|
|
384
|
+
|
|
385
|
+
✍️ Scriptwriter: "✅ Scripts created: voice_script.md, narrative_script.md"
|
|
386
|
+
|
|
387
|
+
═══════════════════════════════════════════════════════════════════════════════════════════
|
|
388
|
+
STEP 5: USER RUNS /director
|
|
389
|
+
═══════════════════════════════════════════════════════════════════════════════════════════
|
|
390
|
+
|
|
391
|
+
User: /director
|
|
392
|
+
|
|
393
|
+
🎬 Director: "[GM] Generate Master Script?"
|
|
394
|
+
User: Y
|
|
395
|
+
|
|
396
|
+
🎬 Director: *reads narrative_script.md*
|
|
397
|
+
*reads config for video_format: Investigative Case Study*
|
|
398
|
+
*designs visual shots for each narration line*
|
|
399
|
+
*uses youtube_search.py to find clips*
|
|
400
|
+
*uses caption_reader.py to get exact timestamps*
|
|
401
|
+
|
|
402
|
+
Scene count: 50 scenes (30 min video) ✅
|
|
403
|
+
|
|
404
|
+
🎬 Director: *writes master_script.md*
|
|
405
|
+
*writes video_direction.md*
|
|
406
|
+
|
|
407
|
+
Assets sourced:
|
|
408
|
+
- 15 YouTube clips with timestamps
|
|
409
|
+
- 10 news article screenshots [MANUAL]
|
|
410
|
+
- 8 stock footage [STOCK-MANUAL]
|
|
411
|
+
- 12 graphics/charts [MANUAL]
|
|
412
|
+
|
|
413
|
+
═══════════════════════════════════════════════════════════════════════════════════════════
|
|
414
|
+
STEP 6: USER RUNS /scavenger
|
|
415
|
+
═══════════════════════════════════════════════════════════════════════════════════════════
|
|
416
|
+
|
|
417
|
+
User: /scavenger
|
|
418
|
+
|
|
419
|
+
🦅 Scavenger: "[FA] Find Assets?"
|
|
420
|
+
User: Y
|
|
421
|
+
|
|
422
|
+
🦅 Scavenger: *reads master_script.md*
|
|
423
|
+
*uses link_checker.py to validate ALL URLs*
|
|
424
|
+
*uses youtube_search.py to find better alternatives*
|
|
425
|
+
*uses caption_reader.py to verify timestamps*
|
|
426
|
+
*uses archive_url.py to preserve news links*
|
|
427
|
+
|
|
428
|
+
URL Validation:
|
|
429
|
+
- 15 YouTube URLs: ✅ All valid
|
|
430
|
+
- 8 News URLs: ✅ 7 valid, 1 archived
|
|
431
|
+
- 5 Image URLs: ✅ All valid
|
|
432
|
+
|
|
433
|
+
🦅 Scavenger: *writes asset_manifest.md*
|
|
434
|
+
|
|
435
|
+
Ready to Download: 28 assets
|
|
436
|
+
Manual Required: 10 assets
|
|
437
|
+
|
|
438
|
+
═══════════════════════════════════════════════════════════════════════════════════════════
|
|
439
|
+
STEP 7: USER RUNS /archivist
|
|
440
|
+
═══════════════════════════════════════════════════════════════════════════════════════════
|
|
441
|
+
|
|
442
|
+
User: /archivist
|
|
443
|
+
|
|
444
|
+
💾 Archivist: "[DA] Download Assets?"
|
|
445
|
+
User: Y
|
|
446
|
+
|
|
447
|
+
💾 Archivist: *reads asset_manifest.md*
|
|
448
|
+
*uses link_checker.py before each download*
|
|
449
|
+
*uses clip_grabber.py for YouTube clips*
|
|
450
|
+
*uses image_grabber.py for images*
|
|
451
|
+
*uses article_screenshotter.py for news quotes*
|
|
452
|
+
*uses caption_reader.py for transcript files*
|
|
453
|
+
|
|
454
|
+
Downloads:
|
|
455
|
+
├── assets/
|
|
456
|
+
│ ├── 001_supreme_court_judgment_clip.mp4 ✅
|
|
457
|
+
│ ├── 002_rahul_gandhi_speech_0215-0342.mp4 ✅
|
|
458
|
+
│ ├── 003_bjp_press_conference.mp4 ✅
|
|
459
|
+
│ ├── 004_economist_article_quote.png ✅
|
|
460
|
+
│ ...
|
|
461
|
+
└── MANUAL_REQUIRED.txt (10 items)
|
|
462
|
+
|
|
463
|
+
═══════════════════════════════════════════════════════════════════════════════════════════
|
|
464
|
+
STEP 8: USER RUNS /eic
|
|
465
|
+
═══════════════════════════════════════════════════════════════════════════════════════════
|
|
466
|
+
|
|
467
|
+
User: /eic
|
|
468
|
+
|
|
469
|
+
🧐 EIC: "[SR] Start Review?"
|
|
470
|
+
User: Y
|
|
471
|
+
|
|
472
|
+
🧐 EIC: *reads ALL files*
|
|
473
|
+
*uses link_checker.py to verify URLs still work*
|
|
474
|
+
|
|
475
|
+
CHECKLIST:
|
|
476
|
+
✅ Dossier has 21 questions answered
|
|
477
|
+
✅ Script is 4050 words (30 min target)
|
|
478
|
+
✅ All 21 questions referenced in script
|
|
479
|
+
✅ Scene count: 50 (within limit)
|
|
480
|
+
✅ 28/38 assets downloaded (10 manual)
|
|
481
|
+
✅ Human story present (victims identified)
|
|
482
|
+
✅ Hook in first 30 seconds
|
|
483
|
+
|
|
484
|
+
🧐 EIC: *writes review_report.md*
|
|
485
|
+
Status: APPROVED ✅
|
|
486
|
+
|
|
487
|
+
═══════════════════════════════════════════════════════════════════════════════════════════
|
|
488
|
+
STEP 9: USER RUNS /thumbnail and /seo
|
|
489
|
+
═══════════════════════════════════════════════════════════════════════════════════════════
|
|
490
|
+
|
|
491
|
+
User: /thumbnail
|
|
492
|
+
|
|
493
|
+
🎨 Thumbnail: *reads voice_script.md, truth_dossier.md*
|
|
494
|
+
*generates 3 AI image prompts*
|
|
495
|
+
*saves to youtube_optimization.md*
|
|
496
|
+
|
|
497
|
+
User: /seo
|
|
498
|
+
|
|
499
|
+
🔍 SEO: *reads voice_script.md*
|
|
500
|
+
*uses google_web_search for keyword research*
|
|
501
|
+
*generates title, description, tags*
|
|
502
|
+
*appends to youtube_optimization.md*
|
|
503
|
+
|
|
504
|
+
═══════════════════════════════════════════════════════════════════════════════════════════
|
|
505
|
+
FINAL PROJECT FOLDER STRUCTURE
|
|
506
|
+
═══════════════════════════════════════════════════════════════════════════════════════════
|
|
507
|
+
|
|
508
|
+
./Projects/gemini_2026-01-04_Electoral_Bonds_Scam_001/
|
|
509
|
+
├── topic_brief.md (200 words - from Scout)
|
|
510
|
+
├── prompt.md (21 questions - from Prompt Agent)
|
|
511
|
+
├── truth_dossier.md (Research - from Investigator)
|
|
512
|
+
├── voice_script.md (TTS ready - from Scriptwriter)
|
|
513
|
+
├── narrative_script.md (Clean script - from Scriptwriter)
|
|
514
|
+
├── master_script.md (Scene-by-scene - from Director)
|
|
515
|
+
├── video_direction.md (Summary - from Director)
|
|
516
|
+
├── asset_manifest.md (URLs + timestamps - from Scavenger)
|
|
517
|
+
├── review_report.md (Quality check - from EIC)
|
|
518
|
+
├── youtube_optimization.md (Thumbnail + SEO - from both)
|
|
519
|
+
├── MANUAL_REQUIRED.txt (Failed downloads - from Archivist)
|
|
520
|
+
└── assets/
|
|
521
|
+
├── 001_supreme_court_judgment_clip.mp4
|
|
522
|
+
├── 002_rahul_gandhi_speech.mp4
|
|
523
|
+
├── 003_bjp_press_conference.mp4
|
|
524
|
+
├── ...
|
|
525
|
+
└── (28 downloaded files)
|
|
526
|
+
|
|
527
|
+
╚══════════════════════════════════════════════════════════════════════════════════════════╝
|
|
528
|
+
```
|
|
529
|
+
|
|
530
|
+
---
|
|
531
|
+
|
|
532
|
+
## 🔗 AGENT CONNECTION DIAGRAM
|
|
533
|
+
|
|
534
|
+
```
|
|
535
|
+
USER
|
|
536
|
+
│
|
|
537
|
+
│ /topic_scout
|
|
538
|
+
▼
|
|
539
|
+
┌─────────────────────────────────────┐
|
|
540
|
+
│ 📡 TOPIC SCOUT │
|
|
541
|
+
│ • Creates project folder │
|
|
542
|
+
│ • WRITES config.yaml (ALL fields) │
|
|
543
|
+
│ • Creates topic_brief.md │
|
|
544
|
+
└─────────────────┬───────────────────┘
|
|
545
|
+
│
|
|
546
|
+
config.yaml updated
|
|
547
|
+
topic_brief.md created
|
|
548
|
+
│
|
|
549
|
+
▼
|
|
550
|
+
┌─────────────────────────────────────┐
|
|
551
|
+
│ 🎯 PROMPT AGENT │
|
|
552
|
+
│ • READS config.yaml │
|
|
553
|
+
│ • READS topic_brief.md │
|
|
554
|
+
│ • Creates prompt.md │
|
|
555
|
+
└─────────────────┬───────────────────┘
|
|
556
|
+
│
|
|
557
|
+
▼
|
|
558
|
+
┌─────────────────────────────────────┐
|
|
559
|
+
│ 🕵️ INVESTIGATOR │
|
|
560
|
+
│ • READS config.yaml (industry_tag) │
|
|
561
|
+
│ • READS prompt.md │
|
|
562
|
+
│ • Creates truth_dossier.md │
|
|
563
|
+
└─────────────────┬───────────────────┘
|
|
564
|
+
│
|
|
565
|
+
▼
|
|
566
|
+
┌─────────────────────────────────────┐
|
|
567
|
+
│ ✍️ SCRIPTWRITER │
|
|
568
|
+
│ • READS config.yaml (language) │
|
|
569
|
+
│ • READS truth_dossier.md │
|
|
570
|
+
│ • Creates voice_script.md │
|
|
571
|
+
│ • Creates narrative_script.md │
|
|
572
|
+
└─────────────────┬───────────────────┘
|
|
573
|
+
│
|
|
574
|
+
▼
|
|
575
|
+
┌─────────────────────────────────────┐
|
|
576
|
+
│ 🎬 DIRECTOR │
|
|
577
|
+
│ • READS config.yaml (format) │
|
|
578
|
+
│ • READS narrative_script.md │
|
|
579
|
+
│ • Creates master_script.md │
|
|
580
|
+
│ • Creates video_direction.md │
|
|
581
|
+
└─────────────────┬───────────────────┘
|
|
582
|
+
│
|
|
583
|
+
▼
|
|
584
|
+
┌─────────────────────────────────────┐
|
|
585
|
+
│ 🦅 SCAVENGER │
|
|
586
|
+
│ • READS config.yaml │
|
|
587
|
+
│ • READS master_script.md │
|
|
588
|
+
│ • Creates asset_manifest.md │
|
|
589
|
+
└─────────────────┬───────────────────┘
|
|
590
|
+
│
|
|
591
|
+
▼
|
|
592
|
+
┌─────────────────────────────────────┐
|
|
593
|
+
│ 💾 ARCHIVIST │
|
|
594
|
+
│ • READS config.yaml │
|
|
595
|
+
│ • READS asset_manifest.md │
|
|
596
|
+
│ • Downloads to assets/ │
|
|
597
|
+
│ • Creates MANUAL_REQUIRED.txt │
|
|
598
|
+
└─────────────────┬───────────────────┘
|
|
599
|
+
│
|
|
600
|
+
▼
|
|
601
|
+
┌─────────────────────────────────────┐
|
|
602
|
+
│ 🧐 EIC │
|
|
603
|
+
│ • READS config.yaml │
|
|
604
|
+
│ • READS ALL previous files │
|
|
605
|
+
│ • Creates review_report.md │
|
|
606
|
+
└─────────────────┬───────────────────┘
|
|
607
|
+
│
|
|
608
|
+
┌─────────────┴─────────────┐
|
|
609
|
+
▼ ▼
|
|
610
|
+
┌──────────────────────┐ ┌──────────────────────┐
|
|
611
|
+
│ 🎨 THUMBNAIL │ │ 🔍 SEO │
|
|
612
|
+
│ • Creates prompts │ │ • Title/Desc/Tags │
|
|
613
|
+
└──────────┬───────────┘ └──────────┬───────────┘
|
|
614
|
+
│ │
|
|
615
|
+
└───────────┬───────────────┘
|
|
616
|
+
▼
|
|
617
|
+
┌─────────────────────────────────────┐
|
|
618
|
+
│ youtube_optimization.md │
|
|
619
|
+
└─────────────────────────────────────┘
|
|
620
|
+
│
|
|
621
|
+
▼
|
|
622
|
+
VIDEO READY!
|
|
623
|
+
```
|
|
624
|
+
|
|
625
|
+
---
|
|
626
|
+
|
|
627
|
+
## 📌 KEY RULES SUMMARY
|
|
628
|
+
|
|
629
|
+
```
|
|
630
|
+
╔══════════════════════════════════════════════════════════════════════════════════════════╗
|
|
631
|
+
║ KEY RULES ║
|
|
632
|
+
╠══════════════════════════════════════════════════════════════════════════════════════════╣
|
|
633
|
+
║ ║
|
|
634
|
+
║ 1️⃣ ONLY Topic Scout creates projects and modifies config.yaml ║
|
|
635
|
+
║ ║
|
|
636
|
+
║ 2️⃣ ALL other agents READ config.yaml but NEVER modify it ║
|
|
637
|
+
║ ║
|
|
638
|
+
║ 3️⃣ ALL files are created in: {projects_folder}/{current_project}/ ║
|
|
639
|
+
║ ║
|
|
640
|
+
║ 4️⃣ Region is USER SELECTED, not auto-derived from language ║
|
|
641
|
+
║ ║
|
|
642
|
+
║ 5️⃣ Each agent READS the previous agent's output file ║
|
|
643
|
+
║ ║
|
|
644
|
+
║ 6️⃣ Industry Tag helps agents prioritize relevant sources ║
|
|
645
|
+
║ ║
|
|
646
|
+
║ 7️⃣ Word count = Duration × 135 (avg 135 words per minute) ║
|
|
647
|
+
║ ║
|
|
648
|
+
║ 8️⃣ Minimum video duration = 15 minutes (2025 words) ║
|
|
649
|
+
║ ║
|
|
650
|
+
╚══════════════════════════════════════════════════════════════════════════════════════════╝
|
|
651
|
+
```
|