videonut 1.2.8 → 1.3.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.
Files changed (58) hide show
  1. package/README.md +272 -272
  2. package/USER_GUIDE.md +90 -90
  3. package/agents/core/eic.md +771 -771
  4. package/agents/creative/director.md +246 -246
  5. package/agents/creative/scriptwriter.md +207 -207
  6. package/agents/research/investigator.md +394 -394
  7. package/agents/technical/archivist.md +288 -288
  8. package/agents/technical/scavenger.md +247 -247
  9. package/config.yaml +61 -61
  10. package/docs/scriptwriter.md +42 -42
  11. package/file_validator.py +186 -186
  12. package/memory/short_term/asset_manifest.md +64 -64
  13. package/memory/short_term/investigation_dossier.md +31 -31
  14. package/memory/short_term/master_script.md +51 -51
  15. package/package.json +61 -64
  16. package/requirements.txt +8 -8
  17. package/tools/check_env.py +76 -76
  18. package/tools/downloaders/caption_reader.py +237 -237
  19. package/tools/downloaders/clip_grabber.py +82 -82
  20. package/tools/downloaders/image_grabber.py +105 -105
  21. package/tools/downloaders/pdf_reader.py +163 -163
  22. package/tools/downloaders/screenshotter.py +58 -58
  23. package/tools/downloaders/web_reader.py +69 -69
  24. package/tools/validators/link_checker.py +45 -45
  25. package/workflow_orchestrator.py +336 -336
  26. package/.claude/commands/archivist.toml +0 -12
  27. package/.claude/commands/director.toml +0 -12
  28. package/.claude/commands/eic.toml +0 -12
  29. package/.claude/commands/investigator.toml +0 -12
  30. package/.claude/commands/prompt.toml +0 -12
  31. package/.claude/commands/scavenger.toml +0 -12
  32. package/.claude/commands/scout.toml +0 -12
  33. package/.claude/commands/scriptwriter.toml +0 -12
  34. package/.claude/commands/seo.toml +0 -12
  35. package/.claude/commands/thumbnail.toml +0 -12
  36. package/.claude/commands/topic_scout.toml +0 -12
  37. package/.gemini/commands/archivist.toml +0 -12
  38. package/.gemini/commands/director.toml +0 -12
  39. package/.gemini/commands/eic.toml +0 -12
  40. package/.gemini/commands/investigator.toml +0 -12
  41. package/.gemini/commands/prompt.toml +0 -12
  42. package/.gemini/commands/scavenger.toml +0 -12
  43. package/.gemini/commands/scout.toml +0 -12
  44. package/.gemini/commands/scriptwriter.toml +0 -12
  45. package/.gemini/commands/seo.toml +0 -12
  46. package/.gemini/commands/thumbnail.toml +0 -12
  47. package/.gemini/commands/topic_scout.toml +0 -12
  48. package/.qwen/commands/archivist.toml +0 -12
  49. package/.qwen/commands/director.toml +0 -12
  50. package/.qwen/commands/eic.toml +0 -12
  51. package/.qwen/commands/investigator.toml +0 -12
  52. package/.qwen/commands/prompt.toml +0 -12
  53. package/.qwen/commands/scavenger.toml +0 -12
  54. package/.qwen/commands/scout.toml +0 -12
  55. package/.qwen/commands/scriptwriter.toml +0 -12
  56. package/.qwen/commands/seo.toml +0 -12
  57. package/.qwen/commands/thumbnail.toml +0 -12
  58. package/.qwen/commands/topic_scout.toml +0 -12
@@ -1,51 +1,51 @@
1
- # Master Script: The Transformer Paradox
2
-
3
- **Title:** The Engine and the Race Car
4
- **Logline:** Google built the engine of the future. OpenAI stole the keys and drove it like they stole it.
5
- **Director:** Spielberg
6
- **Based on Dossier:** 2017-TRANS-AI
7
-
8
- ---
9
-
10
- ## Act 1: The Golden Ticket
11
-
12
- **Scene 1: The Lab**
13
- * **Visual:** Low angle, slow dolly in on a messy desk at Google Brain, 2017. Stacks of papers. A monitor glowing with code. The words "Attention Is All You Need" are typed onto a title page.
14
- * **Audio:** Soft, rhythmic keyboard clicking. A low, ambient hum of servers.
15
- * **Narrator (V.O.):** It was the greatest gift in the history of artificial intelligence. And Google... just gave it away.
16
-
17
- **Scene 2: The Publication**
18
- * **Visual:** Montage of a PDF being uploaded. The internet exploding with activity. Twitter feeds scrolling fast.
19
- * **Audio:** A "whoosh" sound of a file sending. The chatter of a thousand voices overlapping.
20
- * **Narrator (V.O.):** "Attention Is All You Need." A boring title for a weapon. Google thought they were improving translation. In reality? They had just published the blueprints for the atom bomb.
21
-
22
- ## Act 2: The Hesitation vs. The Bet
23
-
24
- **Scene 3: The Boardroom (Google)**
25
- * **Visual:** A sterile, glass-walled meeting room. Executives in suits looking worriedly at a whiteboard marked "Risk" and "Ad Revenue."
26
- * **Audio:** Muffled arguing. "Safety." "Cannibalization." The ticking of a clock.
27
- * **Narrator (V.O.):** Google had the engine. But they were paralyzed. If they released a chatbot, it would kill their Search ads. They were the king afraid to leave his castle.
28
-
29
- **Scene 4: The Garage (OpenAI)**
30
- * **Visual:** Cut to a grittier, darker room. OpenAI researchers. Hoodies. Late nights. Red Bull cans. They are looking at the same "Attention" paper, but their eyes are wide.
31
- * **Audio:** Fast-paced, electronic synth music starts building. The sound of a race car engine revving up.
32
- * **Narrator (V.O.):** Across town, the underdog saw something else. They saw a race car. They realized: "If we just make this bigger... it doesn't just translate. It *thinks*."
33
-
34
- ## Act 3: The Getaway
35
-
36
- **Scene 5: The Scaling Laws**
37
- * **Visual:** A graph on a screen shooting upward exponentially. The line turns into a road. A sleek car (labeled GPT) tears down it, leaving a clunky bus (labeled Google) in the dust.
38
- * **Audio:** The engine roar screams. Tires screeching.
39
- * **Narrator (V.O.):** OpenAI stopped trying to be clever. They just poured gas on the fire. Data. Compute. More. They bet the farm on Google's own invention.
40
-
41
- **Scene 6: The Empty Chairs**
42
- * **Visual:** Back to the Google desk from Scene 1. It's empty. Dust motes dancing in the light. We pan across 8 nameplates—the authors of the paper. One by one, they fade away.
43
- * **Audio:** A melancholic wind.
44
- * **Narrator (V.O.):** Eight researchers wrote that paper. Today? Not a single one is left at Google. They're gone.
45
-
46
- **Scene 7: The Conclusion**
47
- * **Visual:** The OpenAI logo glowing neon in the dark. It shifts from "Open" to "Closed."
48
- * **Audio:** A heavy metallic door slamming shut. Silence.
49
- * **Narrator (V.O.):** Google built the engine. OpenAI won the race. And the irony? They did it by reading Google's manual.
50
-
51
- **[FADE TO BLACK]**
1
+ # Master Script: The Transformer Paradox
2
+
3
+ **Title:** The Engine and the Race Car
4
+ **Logline:** Google built the engine of the future. OpenAI stole the keys and drove it like they stole it.
5
+ **Director:** Spielberg
6
+ **Based on Dossier:** 2017-TRANS-AI
7
+
8
+ ---
9
+
10
+ ## Act 1: The Golden Ticket
11
+
12
+ **Scene 1: The Lab**
13
+ * **Visual:** Low angle, slow dolly in on a messy desk at Google Brain, 2017. Stacks of papers. A monitor glowing with code. The words "Attention Is All You Need" are typed onto a title page.
14
+ * **Audio:** Soft, rhythmic keyboard clicking. A low, ambient hum of servers.
15
+ * **Narrator (V.O.):** It was the greatest gift in the history of artificial intelligence. And Google... just gave it away.
16
+
17
+ **Scene 2: The Publication**
18
+ * **Visual:** Montage of a PDF being uploaded. The internet exploding with activity. Twitter feeds scrolling fast.
19
+ * **Audio:** A "whoosh" sound of a file sending. The chatter of a thousand voices overlapping.
20
+ * **Narrator (V.O.):** "Attention Is All You Need." A boring title for a weapon. Google thought they were improving translation. In reality? They had just published the blueprints for the atom bomb.
21
+
22
+ ## Act 2: The Hesitation vs. The Bet
23
+
24
+ **Scene 3: The Boardroom (Google)**
25
+ * **Visual:** A sterile, glass-walled meeting room. Executives in suits looking worriedly at a whiteboard marked "Risk" and "Ad Revenue."
26
+ * **Audio:** Muffled arguing. "Safety." "Cannibalization." The ticking of a clock.
27
+ * **Narrator (V.O.):** Google had the engine. But they were paralyzed. If they released a chatbot, it would kill their Search ads. They were the king afraid to leave his castle.
28
+
29
+ **Scene 4: The Garage (OpenAI)**
30
+ * **Visual:** Cut to a grittier, darker room. OpenAI researchers. Hoodies. Late nights. Red Bull cans. They are looking at the same "Attention" paper, but their eyes are wide.
31
+ * **Audio:** Fast-paced, electronic synth music starts building. The sound of a race car engine revving up.
32
+ * **Narrator (V.O.):** Across town, the underdog saw something else. They saw a race car. They realized: "If we just make this bigger... it doesn't just translate. It *thinks*."
33
+
34
+ ## Act 3: The Getaway
35
+
36
+ **Scene 5: The Scaling Laws**
37
+ * **Visual:** A graph on a screen shooting upward exponentially. The line turns into a road. A sleek car (labeled GPT) tears down it, leaving a clunky bus (labeled Google) in the dust.
38
+ * **Audio:** The engine roar screams. Tires screeching.
39
+ * **Narrator (V.O.):** OpenAI stopped trying to be clever. They just poured gas on the fire. Data. Compute. More. They bet the farm on Google's own invention.
40
+
41
+ **Scene 6: The Empty Chairs**
42
+ * **Visual:** Back to the Google desk from Scene 1. It's empty. Dust motes dancing in the light. We pan across 8 nameplates—the authors of the paper. One by one, they fade away.
43
+ * **Audio:** A melancholic wind.
44
+ * **Narrator (V.O.):** Eight researchers wrote that paper. Today? Not a single one is left at Google. They're gone.
45
+
46
+ **Scene 7: The Conclusion**
47
+ * **Visual:** The OpenAI logo glowing neon in the dark. It shifts from "Open" to "Closed."
48
+ * **Audio:** A heavy metallic door slamming shut. Silence.
49
+ * **Narrator (V.O.):** Google built the engine. OpenAI won the race. And the irony? They did it by reading Google's manual.
50
+
51
+ **[FADE TO BLACK]**
package/package.json CHANGED
@@ -1,65 +1,62 @@
1
- {
2
- "name": "videonut",
3
- "version": "1.2.8",
4
- "description": "AI-powered YouTube documentary production pipeline with 10 specialized agents for research, scripting, and asset management",
5
- "keywords": [
6
- "youtube",
7
- "documentary",
8
- "ai-agents",
9
- "video-production",
10
- "gemini-cli",
11
- "qwen",
12
- "claude",
13
- "content-creation",
14
- "scriptwriting",
15
- "research",
16
- "automation"
17
- ],
18
- "homepage": "https://github.com/konda-vamshi-krishna/videonut",
19
- "bugs": {
20
- "url": "https://github.com/konda-vamshi-krishna/videonut/issues"
21
- },
22
- "license": "MIT",
23
- "author": {
24
- "name": "Vamshi Krishna",
25
- "email": "vamshikrishna131437@gmail.com"
26
- },
27
- "repository": {
28
- "type": "git",
29
- "url": "git+https://github.com/konda-vamshi-krishna/videonut.git"
30
- },
31
- "scripts": {
32
- "setup": "node setup.js"
33
- },
34
- "bin": {
35
- "videonut": "./bin/videonut.js"
36
- },
37
- "files": [
38
- "agents/",
39
- "tools/downloaders/",
40
- "tools/validators/",
41
- "tools/logging/",
42
- "tools/check_env.py",
43
- "workflows/",
44
- "docs/",
45
- "memory/",
46
- "scripts/",
47
- ".gemini/",
48
- ".qwen/",
49
- ".claude/",
50
- ".antigravity/",
51
- "bin/",
52
- "setup.js",
53
- "config.yaml",
54
- "requirements.txt",
55
- "workflow_orchestrator.py",
56
- "file_validator.py",
57
- "README.md",
58
- "USER_GUIDE.md",
59
- "CONTRIBUTING.md",
60
- "LICENSE"
61
- ],
62
- "engines": {
63
- "node": ">=20.0.0"
64
- }
1
+ {
2
+ "name": "videonut",
3
+ "version": "1.3.0",
4
+ "description": "AI-powered YouTube documentary production pipeline with 10 specialized agents for research, scripting, and asset management",
5
+ "keywords": [
6
+ "youtube",
7
+ "documentary",
8
+ "ai-agents",
9
+ "video-production",
10
+ "gemini-cli",
11
+ "qwen",
12
+ "claude",
13
+ "content-creation",
14
+ "scriptwriting",
15
+ "research",
16
+ "automation"
17
+ ],
18
+ "homepage": "https://github.com/konda-vamshi-krishna/videonut",
19
+ "bugs": {
20
+ "url": "https://github.com/konda-vamshi-krishna/videonut/issues"
21
+ },
22
+ "license": "MIT",
23
+ "author": {
24
+ "name": "Vamshi Krishna",
25
+ "email": "vamshikrishna131437@gmail.com"
26
+ },
27
+ "repository": {
28
+ "type": "git",
29
+ "url": "git+https://github.com/konda-vamshi-krishna/videonut.git"
30
+ },
31
+ "scripts": {
32
+ "setup": "node setup.js"
33
+ },
34
+ "bin": {
35
+ "videonut": "./bin/videonut.js"
36
+ },
37
+ "files": [
38
+ "agents/",
39
+ "tools/downloaders/",
40
+ "tools/validators/",
41
+ "tools/logging/",
42
+ "tools/check_env.py",
43
+ "workflows/",
44
+ "docs/",
45
+ "memory/",
46
+ "scripts/",
47
+ ".antigravity/",
48
+ "bin/",
49
+ "setup.js",
50
+ "config.yaml",
51
+ "requirements.txt",
52
+ "workflow_orchestrator.py",
53
+ "file_validator.py",
54
+ "README.md",
55
+ "USER_GUIDE.md",
56
+ "CONTRIBUTING.md",
57
+ "LICENSE"
58
+ ],
59
+ "engines": {
60
+ "node": ">=20.0.0"
61
+ }
65
62
  }
package/requirements.txt CHANGED
@@ -1,9 +1,9 @@
1
- # VideoNut Dependencies
2
- yt-dlp
3
- playwright
4
- requests
5
- beautifulsoup4
6
- pypdf
7
- youtube-transcript-api
8
- youtube-search-python
1
+ # VideoNut Dependencies
2
+ yt-dlp
3
+ playwright
4
+ requests
5
+ beautifulsoup4
6
+ pypdf
7
+ youtube-transcript-api
8
+ youtube-search-python
9
9
  httpx
@@ -1,77 +1,77 @@
1
- import shutil
2
- import sys
3
- import os
4
- import subprocess
5
-
6
- def check_command(cmd, name):
7
- path = shutil.which(cmd)
8
- if path:
9
- print(f"✅ {name} found at: {path}")
10
- return True
11
- else:
12
- print(f"❌ {name} NOT found in PATH.")
13
- return False
14
-
15
- def check_import(module_name):
16
- try:
17
- __import__(module_name)
18
- print(f"✅ Python module '{module_name}' is installed.")
19
- return True
20
- except ImportError:
21
- print(f"❌ Python module '{module_name}' is MISSING.")
22
- return False
23
-
24
- def main():
25
- print("🔍 VideoNut Environment Check...")
26
- print("-" * 30)
27
-
28
- all_good = True
29
-
30
- # 1. Check Python version
31
- if sys.version_info < (3, 8):
32
- print("❌ Python 3.8+ is required.")
33
- all_good = False
34
- else:
35
- print(f"✅ Python Version: {sys.version}")
36
-
37
- # 2. Check FFmpeg
38
- if not check_command("ffmpeg", "FFmpeg"):
39
- # Check local bin fallback
40
- local_bin = os.path.join(os.path.dirname(__file__), "bin", "ffmpeg.exe")
41
- if os.path.exists(local_bin):
42
- print(f"✅ FFmpeg found in local bin: {local_bin}")
43
- else:
44
- print(" (Please install FFmpeg or place it in tools/bin/)")
45
- all_good = False
46
-
47
- # 3. Check Python Packages
48
- if not check_import("yt_dlp"): all_good = False
49
- if not check_import("playwright"): all_good = False
50
- if not check_import("requests"): all_good = False
51
- if not check_import("bs4"): all_good = False
52
- if not check_import("youtube_transcript_api"): all_good = False
53
- if not check_import("pypdf"): all_good = False
54
-
55
- # 4. Check for new tools
56
- tools_dir = os.path.join(os.path.dirname(__file__), "downloaders")
57
- new_tools = [
58
- ("caption_reader.py", os.path.join(tools_dir, "caption_reader.py")),
59
- ]
60
-
61
- for tool_name, tool_path in new_tools:
62
- if os.path.exists(tool_path):
63
- print(f"✅ Tool found: {tool_name}")
64
- else:
65
- print(f"❌ Tool missing: {tool_name} at {tool_path}")
66
- all_good = False
67
-
68
- print("-" * 30)
69
- if all_good:
70
- print("🚀 System is READY for VideoNut Agents.")
71
- sys.exit(0)
72
- else:
73
- print("⚠️ System has ISSUES. Please fix missing dependencies.")
74
- sys.exit(1)
75
-
76
- if __name__ == "__main__":
1
+ import shutil
2
+ import sys
3
+ import os
4
+ import subprocess
5
+
6
+ def check_command(cmd, name):
7
+ path = shutil.which(cmd)
8
+ if path:
9
+ print(f"✅ {name} found at: {path}")
10
+ return True
11
+ else:
12
+ print(f"❌ {name} NOT found in PATH.")
13
+ return False
14
+
15
+ def check_import(module_name):
16
+ try:
17
+ __import__(module_name)
18
+ print(f"✅ Python module '{module_name}' is installed.")
19
+ return True
20
+ except ImportError:
21
+ print(f"❌ Python module '{module_name}' is MISSING.")
22
+ return False
23
+
24
+ def main():
25
+ print("🔍 VideoNut Environment Check...")
26
+ print("-" * 30)
27
+
28
+ all_good = True
29
+
30
+ # 1. Check Python version
31
+ if sys.version_info < (3, 8):
32
+ print("❌ Python 3.8+ is required.")
33
+ all_good = False
34
+ else:
35
+ print(f"✅ Python Version: {sys.version}")
36
+
37
+ # 2. Check FFmpeg
38
+ if not check_command("ffmpeg", "FFmpeg"):
39
+ # Check local bin fallback
40
+ local_bin = os.path.join(os.path.dirname(__file__), "bin", "ffmpeg.exe")
41
+ if os.path.exists(local_bin):
42
+ print(f"✅ FFmpeg found in local bin: {local_bin}")
43
+ else:
44
+ print(" (Please install FFmpeg or place it in tools/bin/)")
45
+ all_good = False
46
+
47
+ # 3. Check Python Packages
48
+ if not check_import("yt_dlp"): all_good = False
49
+ if not check_import("playwright"): all_good = False
50
+ if not check_import("requests"): all_good = False
51
+ if not check_import("bs4"): all_good = False
52
+ if not check_import("youtube_transcript_api"): all_good = False
53
+ if not check_import("pypdf"): all_good = False
54
+
55
+ # 4. Check for new tools
56
+ tools_dir = os.path.join(os.path.dirname(__file__), "downloaders")
57
+ new_tools = [
58
+ ("caption_reader.py", os.path.join(tools_dir, "caption_reader.py")),
59
+ ]
60
+
61
+ for tool_name, tool_path in new_tools:
62
+ if os.path.exists(tool_path):
63
+ print(f"✅ Tool found: {tool_name}")
64
+ else:
65
+ print(f"❌ Tool missing: {tool_name} at {tool_path}")
66
+ all_good = False
67
+
68
+ print("-" * 30)
69
+ if all_good:
70
+ print("🚀 System is READY for VideoNut Agents.")
71
+ sys.exit(0)
72
+ else:
73
+ print("⚠️ System has ISSUES. Please fix missing dependencies.")
74
+ sys.exit(1)
75
+
76
+ if __name__ == "__main__":
77
77
  main()