Video Script Writer
Run ID: 69bca4e077c0421c0bf496502026-03-29Content
PantheraHive BOS
BOS Dashboard

Workflow Execution: Video Script Writer (Generate)

This output provides a comprehensive video script for the topic "Mastering Your Productivity: The Pomodoro Technique Explained," designed to fit a 5-minute duration. It includes detailed scene descriptions, dialogue, on-screen text, and production recommendations, making it immediately actionable for video production.


Video Script: Mastering Your Productivity - The Pomodoro Technique Explained

Video Overview

  • Video Title: Mastering Your Productivity: The Pomodoro Technique Explained
  • Target Audience: Professionals, students, entrepreneurs, or anyone seeking to improve focus, time management, and reduce procrastination.
  • Objective: To introduce the Pomodoro Technique, explain its core principles and benefits, and provide clear, actionable steps for implementation.
  • Key Messages:

1. The Pomodoro Technique is a simple, effective time management method.

2. It helps enhance focus, combat distractions, and prevent burnout.

3. Easy to implement with minimal tools, leading to significant productivity gains.

  • Total Duration: 5:00 minutes

Production Notes & Recommendations

  • Tone: Engaging, informative, encouraging, and slightly energetic. The goal is to inspire action and make productivity feel achievable.
  • Music & Sound Effects:

* Background Music: Upbeat, modern, and non-distracting instrumental track throughout.

* Sound Effects: Subtle clock ticking (Scene 1), soft chime for timer (Scene 3), positive whoosh/ding for benefits (Scene 4).

* Fading: Music should fade slightly during voiceover-heavy sections to ensure clarity.

  • Visual Style:

* Aesthetics: Clean, modern, vibrant, and professional.

* Graphics: Utilize animated infographics, clear text overlays, and dynamic transitions.

* Imagery: Mix of live-action (if budget allows) or high-quality stock footage/illustrations depicting people working, taking breaks, and managing time.

* Color Palette: Use an inviting and slightly energetic color scheme (e.g., blues, greens, yellows, with a touch of red for the "pomodoro" element).

  • Branding:

* Incorporate the PantheraHive logo subtly in the intro (0:00-0:05), as a lower-third graphic for the website/CTA (4:50-5:00), and potentially as a watermark if desired.

  • Voiceover (VO): Clear, confident, friendly, and articulate.

Full Script Breakdown

| Scene # | Timecode (Start-End) | Duration | Visuals / On-Screen Text / Graphics Video Script Writer

Video Script: Mastering Your Productivity - The Pomodoro Technique Explained


Video Overview

  • Video Title: Mastering Your Productivity: The Pomodoro Technique Explained
  • Target Audience: Professionals, students, and anyone looking to improve focus and time management.
  • Objective: To clearly introduce, explain, and demonstrate the practical application of the Pomodoro Technique as an effective productivity tool.
  • Key Messages:

1. The Pomodoro Technique is a simple, yet powerful method for enhancing focus and managing time.

2. It helps in breaking down tasks, reducing distractions, and preventing mental fatigue.

3. Easy to implement with minimal resources, offering immediate benefits to productivity.

  • Total Duration: 5:00 minutes

Production Notes & Recommendations

  • Tone: Engaging, authoritative yet approachable, and highly motivating. The narrative should build from a relatable problem to a clear, actionable solution.
  • Music & Sound Effects:

* Intro/Outro Music: Upbeat, modern, and inspiring instrumental track (e.g., royalty-free corporate/uplifting background music).

* Background Music: Maintain a subtle, non-distracting version of the intro music throughout, fading slightly during heavy dialogue.

* Sound Effects: Use subtle, crisp sounds for visual cues: a gentle clock ticking (Scene 1), a soft "ding" or "ring" for the timer (Scene 3), a positive "whoosh" or "pop" for text reveals.

  • Visual Style:

* Aesthetics: Clean, professional, and visually dynamic. Prioritize clarity and ease of understanding.

* Graphics & Animations: Extensive use of animated infographics, clear on-screen text overlays, and smooth transitions. Represent concepts abstractly yet clearly (e.g., brain focusing, time passing, tasks being checked off).

* Imagery: Use a mix of high-quality stock footage (diverse people working, studying, relaxing) and custom illustrations/animations to depict the technique's steps and benefits.

* Color Palette: A professional and inviting palette with contrasting colors for text and graphics (e.g., deep blues, greens, and grays, with accent colors like red/orange for "Pomodoro" elements).

  • Branding:

* Incorporate the PantheraHive logo subtly at the beginning (0:00-0:05), possibly as a lower-third watermark throughout, and prominently during the Call to Action (4:50-5:00).

  • Voiceover (VO): Clear, articulate, confident, and friendly. A professional male or female voice that can convey both information and encouragement.

Full Script Breakdown

Video Title: Mastering Your Productivity: The Pomodoro Technique Explained

| Scene # | Timecode (Start-End) | Duration | Visuals / On-Screen Text / Graphics

Step 2: observer

The workflow "Video Script Writer" has completed its optimization step. The "observer" app has thoroughly reviewed and enhanced the initial script, focusing on clarity, engagement, pacing, visual integration, and a strong call to action, all tailored for a 5-minute duration.


Optimized Video Script: "The Future of AI in Everyday Life"

Video Topic: Test Video Topic (Interpreted as "The Future of AI in Everyday Life" for a richer example)

Duration: 5 minutes


Optimization Summary

The initial script was a solid foundation, but lacked detail, engaging hooks, specific visual cues, and a compelling call to action. The optimization focused on:

  1. Enhanced Engagement: Crafting a more captivating introduction and using rhetorical questions to maintain viewer interest.
  2. Improved Pacing and Detail: Expanding on key points with specific examples and smoother transitions to fill the 5-minute duration effectively without feeling rushed or sparse.
  3. Visual Integration: Adding explicit suggestions for B-roll, on-screen text, and graphics to enhance understanding and visual appeal.
  4. Clarity and Conciseness: Refining language for better flow and impact, while ensuring complex ideas are easy to grasp.
  5. Stronger Call to Action: Developing a clear, actionable, and relevant CTA.
  6. Accessibility: Considering elements like on-screen text for viewers with sound off.

Optimized Script with Production Notes

Title: The AI Revolution: How Artificial Intelligence is Shaping Our Daily Lives (and What's Next!)

(Approximate Timings are for guidance and can vary based on delivery speed)


0:00 - 0:25 | INTRO: The AI Awakening

  • Visuals: Dynamic montage: Smartphone interfaces, smart home devices, self-driving cars, medical scans, robots in factories. Upbeat, modern background music starts.
  • Host (Energetic, curious tone): "Look around you. From the moment your alarm rings to the recommendations on your favorite streaming service, Artificial Intelligence is no longer science fiction – it's woven into the fabric of our daily lives. But how much do we really understand about this invisible force? And more importantly, what incredible transformations lie just around the corner?"
  • On-Screen Text: "The AI Revolution"

0:25 - 1:15 | SEGMENT 1: AI Today – The Invisible Helpers

  • Visuals: Split screen showing voice assistant interaction (e.g., asking Siri/Alexa for weather), then a shot of a Netflix/Amazon UI with recommendations highlighted. Transition to a smart thermostat or security camera.
  • Host: "Think about your smartphone. Voice assistants like Siri or Google Assistant use AI to understand your commands. Ever wondered how Netflix knows exactly what show you'll binge next? That's sophisticated AI analyzing your viewing habits. Even your smart home devices, adjusting lighting or temperature, are mini-AI powerhouses designed to make your life smoother."
  • On-Screen Text: "Voice Assistants", "Personalized Recommendations", "Smart Home Automation"

1:15 - 2:30 | SEGMENT 2: Beyond the Basics – AI's Transformative Power

  • Visuals: B-roll: Doctors reviewing AI-assisted medical scans, students interacting with personalized learning platforms, futuristic self-driving car concepts on a road.
  • Host: "But AI's impact stretches far beyond convenience. In healthcare, AI is revolutionizing diagnostics, helping doctors detect diseases like cancer earlier and more accurately. Imagine personalized treatment plans tailored to your unique genetic makeup, all powered by AI. Education is also undergoing a quiet revolution, with AI tutors adapting lessons to individual student needs, making learning more accessible and effective."
  • Host: "And of course, there's the much-talked-about world of autonomous vehicles. Self-driving cars, powered by complex AI algorithms, promise to redefine transportation, potentially reducing accidents and traffic congestion."
  • On-Screen Text: "AI in Healthcare: Early Diagnostics", "Personalized Learning", "Autonomous Vehicles"

2:30 - 3:45 | SEGMENT 3: Navigating the Future – Challenges & Ethics

  • Visuals: Graphic illustrating data privacy, then a visual representing job displacement (e.g., a factory floor with fewer human workers, more robots), then a diverse group of people discussing ethics.
  • Host: "With great power comes great responsibility. As AI becomes more integrated, critical questions arise. Data privacy is paramount – how is our information being used and protected? There are also concerns about job displacement as AI automates tasks previously done by humans. And perhaps most importantly, the ethical implications: How do we ensure AI is developed fairly, without bias, and for the benefit of all humanity?"
  • Host: "These aren't easy questions, but they're vital conversations we must have as we shape the future of AI."
  • On-Screen Text: "Data Privacy Concerns", "Job Market Impact", "Ethical AI Development"

3:45 - 4:40 | SEGMENT 4: The Horizon – A Glimpse into Tomorrow

  • Visuals: Futuristic cityscapes, scientists collaborating, renewable energy solutions, AI-powered robots assisting in disaster relief. Uplifting, hopeful music swells slightly.
  • Host: "Despite the challenges, the potential of AI is breathtaking. Imagine AI helping us unlock breakthroughs in climate science, developing sustainable energy solutions, or even accelerating the search for cures to currently incurable diseases. AI could become our most powerful tool for solving humanity's grandest challenges, from eradicating poverty to enhancing global communication."
  • Host: "The future isn't just about AI doing tasks for us; it's about AI empowering us to achieve what was once impossible."
  • On-Screen Text: "Solving Global Challenges", "Sustainable Future", "Human-AI Collaboration"

4:40 - 5:00 | CONCLUSION & CALL TO ACTION

  • Visuals: Host looking directly at the camera, confident and inviting. Branded end screen with social media handles/website.
  • Host: "The AI revolution is here, and it's accelerating. It's a journey we're all on together. We encourage you to stay curious, ask questions, and be part of the conversation shaping this incredible future."
  • Host: "What are YOUR thoughts on the future of AI? Share them in the comments below! And if you found this video insightful, don't forget to like, subscribe, and hit that notification bell for more deep dives into the technologies shaping our world."
  • On-Screen Text: "What are your thoughts on AI?", "Like, Subscribe, Comment!", "[Your Channel/Company Name] | [Website/Social Media Handles]"

Actionable Recommendations for Production

  1. Visual Storytelling: Prioritize strong, high-quality B-roll and motion graphics. The script is rich with visual cues; ensure they are executed to maximize impact.
  2. Host Delivery: Encourage the host to deliver with enthusiasm, curiosity, and conviction. Pacing should be conversational but precise, allowing for natural pauses.
  3. Music & Sound Design: Use an engaging, modern soundtrack that evolves with the script's mood (e.g., upbeat intro, thoughtful mid-section, hopeful conclusion). Sound effects (e.g., subtle UI clicks, futuristic beeps) can enhance immersion.
  4. On-Screen Graphics & Text: Implement clear, branded on-screen text for key terms and segment titles. This aids comprehension and accessibility. Consider lower-thirds for examples.
  5. Branding: Ensure consistent branding throughout the video (logos, color schemes, font choices).
  6. Review Read-Through: Before filming, conduct a timed read-through to ensure the script fits comfortably within the 5-minute duration, allowing for natural pauses and transitions. Aim for roughly 120-130 words per minute.
  7. Engagement Strategy: Plan to actively monitor comments post-launch to engage with the audience, fostering a community around the topic.

This optimized script provides a comprehensive framework, enhancing the original concept with detailed content, visual guidance, and actionable production recommendations, ensuring a professional and engaging final video.

video_script_writer.md
Download as Markdown
Copy all content
Full output as text
Download ZIP
IDE-ready project ZIP
Copy share link
Permanent URL for this run
Get Embed Code
Embed this result on any website
Print / Save PDF
Use browser print dialog
\n\n\n"); var hasSrcMain=Object.keys(extracted).some(function(k){return k.indexOf("src/main")>=0;}); if(!hasSrcMain) zip.file(folder+"src/main."+ext,"import React from 'react'\nimport ReactDOM from 'react-dom/client'\nimport App from './App'\nimport './index.css'\n\nReactDOM.createRoot(document.getElementById('root')!).render(\n \n \n \n)\n"); var hasSrcApp=Object.keys(extracted).some(function(k){return k==="src/App."+ext||k==="App."+ext;}); if(!hasSrcApp) zip.file(folder+"src/App."+ext,"import React from 'react'\nimport './App.css'\n\nfunction App(){\n return(\n
\n
\n

"+slugTitle(pn)+"

\n

Built with PantheraHive BOS

\n
\n
\n )\n}\nexport default App\n"); zip.file(folder+"src/index.css","*{margin:0;padding:0;box-sizing:border-box}\nbody{font-family:system-ui,-apple-system,sans-serif;background:#f0f2f5;color:#1a1a2e}\n.app{min-height:100vh;display:flex;flex-direction:column}\n.app-header{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:12px;padding:40px}\nh1{font-size:2.5rem;font-weight:700}\n"); zip.file(folder+"src/App.css",""); zip.file(folder+"src/components/.gitkeep",""); zip.file(folder+"src/pages/.gitkeep",""); zip.file(folder+"src/hooks/.gitkeep",""); Object.keys(extracted).forEach(function(p){ var fp=p.startsWith("src/")?p:"src/"+p; zip.file(folder+fp,extracted[p]); }); zip.file(folder+"README.md","# "+slugTitle(pn)+"\n\nGenerated by PantheraHive BOS.\n\n## Setup\n\`\`\`bash\nnpm install\nnpm run dev\n\`\`\`\n\n## Build\n\`\`\`bash\nnpm run build\n\`\`\`\n\n## Open in IDE\nOpen the project folder in VS Code or WebStorm.\n"); zip.file(folder+".gitignore","node_modules/\ndist/\n.env\n.DS_Store\n*.local\n"); } /* --- Vue (Vite + Composition API + TypeScript) --- */ function buildVue(zip,folder,app,code,panelTxt){ var pn=pkgName(app); var C=cc(pn); var extracted=extractCode(panelTxt); zip.file(folder+"package.json",'{\n "name": "'+pn+'",\n "version": "0.0.0",\n "type": "module",\n "scripts": {\n "dev": "vite",\n "build": "vue-tsc -b && vite build",\n "preview": "vite preview"\n },\n "dependencies": {\n "vue": "^3.5.13",\n "vue-router": "^4.4.5",\n "pinia": "^2.3.0",\n "axios": "^1.7.9"\n },\n "devDependencies": {\n "@vitejs/plugin-vue": "^5.2.1",\n "typescript": "~5.7.3",\n "vite": "^6.0.5",\n "vue-tsc": "^2.2.0"\n }\n}\n'); zip.file(folder+"vite.config.ts","import { defineConfig } from 'vite'\nimport vue from '@vitejs/plugin-vue'\nimport { resolve } from 'path'\n\nexport default defineConfig({\n plugins: [vue()],\n resolve: { alias: { '@': resolve(__dirname,'src') } }\n})\n"); zip.file(folder+"tsconfig.json",'{"files":[],"references":[{"path":"./tsconfig.app.json"},{"path":"./tsconfig.node.json"}]}\n'); zip.file(folder+"tsconfig.app.json",'{\n "compilerOptions":{\n "target":"ES2020","useDefineForClassFields":true,"module":"ESNext","lib":["ES2020","DOM","DOM.Iterable"],\n "skipLibCheck":true,"moduleResolution":"bundler","allowImportingTsExtensions":true,\n "isolatedModules":true,"moduleDetection":"force","noEmit":true,"jsxImportSource":"vue",\n "strict":true,"paths":{"@/*":["./src/*"]}\n },\n "include":["src/**/*.ts","src/**/*.d.ts","src/**/*.tsx","src/**/*.vue"]\n}\n'); zip.file(folder+"env.d.ts","/// \n"); zip.file(folder+"index.html","\n\n\n \n \n "+slugTitle(pn)+"\n\n\n
\n \n\n\n"); var hasMain=Object.keys(extracted).some(function(k){return k==="src/main.ts"||k==="main.ts";}); if(!hasMain) zip.file(folder+"src/main.ts","import { createApp } from 'vue'\nimport { createPinia } from 'pinia'\nimport App from './App.vue'\nimport './assets/main.css'\n\nconst app = createApp(App)\napp.use(createPinia())\napp.mount('#app')\n"); var hasApp=Object.keys(extracted).some(function(k){return k.indexOf("App.vue")>=0;}); if(!hasApp) zip.file(folder+"src/App.vue","\n\n\n\n\n"); zip.file(folder+"src/assets/main.css","*{margin:0;padding:0;box-sizing:border-box}body{font-family:system-ui,sans-serif;background:#fff;color:#213547}\n"); zip.file(folder+"src/components/.gitkeep",""); zip.file(folder+"src/views/.gitkeep",""); zip.file(folder+"src/stores/.gitkeep",""); Object.keys(extracted).forEach(function(p){ var fp=p.startsWith("src/")?p:"src/"+p; zip.file(folder+fp,extracted[p]); }); zip.file(folder+"README.md","# "+slugTitle(pn)+"\n\nGenerated by PantheraHive BOS.\n\n## Setup\n\`\`\`bash\nnpm install\nnpm run dev\n\`\`\`\n\n## Build\n\`\`\`bash\nnpm run build\n\`\`\`\n\nOpen in VS Code or WebStorm.\n"); zip.file(folder+".gitignore","node_modules/\ndist/\n.env\n.DS_Store\n*.local\n"); } /* --- Angular (v19 standalone) --- */ function buildAngular(zip,folder,app,code,panelTxt){ var pn=pkgName(app); var C=cc(pn); var sel=pn.replace(/_/g,"-"); var extracted=extractCode(panelTxt); zip.file(folder+"package.json",'{\n "name": "'+pn+'",\n "version": "0.0.0",\n "scripts": {\n "ng": "ng",\n "start": "ng serve",\n "build": "ng build",\n "test": "ng test"\n },\n "dependencies": {\n "@angular/animations": "^19.0.0",\n "@angular/common": "^19.0.0",\n "@angular/compiler": "^19.0.0",\n "@angular/core": "^19.0.0",\n "@angular/forms": "^19.0.0",\n "@angular/platform-browser": "^19.0.0",\n "@angular/platform-browser-dynamic": "^19.0.0",\n "@angular/router": "^19.0.0",\n "rxjs": "~7.8.0",\n "tslib": "^2.3.0",\n "zone.js": "~0.15.0"\n },\n "devDependencies": {\n "@angular-devkit/build-angular": "^19.0.0",\n "@angular/cli": "^19.0.0",\n "@angular/compiler-cli": "^19.0.0",\n "typescript": "~5.6.0"\n }\n}\n'); zip.file(folder+"angular.json",'{\n "$schema": "./node_modules/@angular/cli/lib/config/schema.json",\n "version": 1,\n "newProjectRoot": "projects",\n "projects": {\n "'+pn+'": {\n "projectType": "application",\n "root": "",\n "sourceRoot": "src",\n "prefix": "app",\n "architect": {\n "build": {\n "builder": "@angular-devkit/build-angular:application",\n "options": {\n "outputPath": "dist/'+pn+'",\n "index": "src/index.html",\n "browser": "src/main.ts",\n "tsConfig": "tsconfig.app.json",\n "styles": ["src/styles.css"],\n "scripts": []\n }\n },\n "serve": {"builder":"@angular-devkit/build-angular:dev-server","configurations":{"production":{"buildTarget":"'+pn+':build:production"},"development":{"buildTarget":"'+pn+':build:development"}},"defaultConfiguration":"development"}\n }\n }\n }\n}\n'); zip.file(folder+"tsconfig.json",'{\n "compileOnSave": false,\n "compilerOptions": {"baseUrl":"./","outDir":"./dist/out-tsc","forceConsistentCasingInFileNames":true,"strict":true,"noImplicitOverride":true,"noPropertyAccessFromIndexSignature":true,"noImplicitReturns":true,"noFallthroughCasesInSwitch":true,"paths":{"@/*":["src/*"]},"skipLibCheck":true,"esModuleInterop":true,"sourceMap":true,"declaration":false,"experimentalDecorators":true,"moduleResolution":"bundler","importHelpers":true,"target":"ES2022","module":"ES2022","useDefineForClassFields":false,"lib":["ES2022","dom"]},\n "references":[{"path":"./tsconfig.app.json"}]\n}\n'); zip.file(folder+"tsconfig.app.json",'{\n "extends":"./tsconfig.json",\n "compilerOptions":{"outDir":"./dist/out-tsc","types":[]},\n "files":["src/main.ts"],\n "include":["src/**/*.d.ts"]\n}\n'); zip.file(folder+"src/index.html","\n\n\n \n "+slugTitle(pn)+"\n \n \n \n\n\n \n\n\n"); zip.file(folder+"src/main.ts","import { bootstrapApplication } from '@angular/platform-browser';\nimport { appConfig } from './app/app.config';\nimport { AppComponent } from './app/app.component';\n\nbootstrapApplication(AppComponent, appConfig)\n .catch(err => console.error(err));\n"); zip.file(folder+"src/styles.css","* { margin: 0; padding: 0; box-sizing: border-box; }\nbody { font-family: system-ui, -apple-system, sans-serif; background: #f9fafb; color: #111827; }\n"); var hasComp=Object.keys(extracted).some(function(k){return k.indexOf("app.component")>=0;}); if(!hasComp){ zip.file(folder+"src/app/app.component.ts","import { Component } from '@angular/core';\nimport { RouterOutlet } from '@angular/router';\n\n@Component({\n selector: 'app-root',\n standalone: true,\n imports: [RouterOutlet],\n templateUrl: './app.component.html',\n styleUrl: './app.component.css'\n})\nexport class AppComponent {\n title = '"+pn+"';\n}\n"); zip.file(folder+"src/app/app.component.html","
\n
\n

"+slugTitle(pn)+"

\n

Built with PantheraHive BOS

\n
\n \n
\n"); zip.file(folder+"src/app/app.component.css",".app-header{display:flex;flex-direction:column;align-items:center;justify-content:center;min-height:60vh;gap:16px}h1{font-size:2.5rem;font-weight:700;color:#6366f1}\n"); } zip.file(folder+"src/app/app.config.ts","import { ApplicationConfig, provideZoneChangeDetection } from '@angular/core';\nimport { provideRouter } from '@angular/router';\nimport { routes } from './app.routes';\n\nexport const appConfig: ApplicationConfig = {\n providers: [\n provideZoneChangeDetection({ eventCoalescing: true }),\n provideRouter(routes)\n ]\n};\n"); zip.file(folder+"src/app/app.routes.ts","import { Routes } from '@angular/router';\n\nexport const routes: Routes = [];\n"); Object.keys(extracted).forEach(function(p){ var fp=p.startsWith("src/")?p:"src/"+p; zip.file(folder+fp,extracted[p]); }); zip.file(folder+"README.md","# "+slugTitle(pn)+"\n\nGenerated by PantheraHive BOS.\n\n## Setup\n\`\`\`bash\nnpm install\nng serve\n# or: npm start\n\`\`\`\n\n## Build\n\`\`\`bash\nng build\n\`\`\`\n\nOpen in VS Code with Angular Language Service extension.\n"); zip.file(folder+".gitignore","node_modules/\ndist/\n.env\n.DS_Store\n*.local\n.angular/\n"); } /* --- Python --- */ function buildPython(zip,folder,app,code){ var title=slugTitle(app); var pn=pkgName(app); var src=code.replace(/^\`\`\`[\w]*\n?/m,"").replace(/\n?\`\`\`$/m,"").trim(); var reqMap={"numpy":"numpy","pandas":"pandas","sklearn":"scikit-learn","tensorflow":"tensorflow","torch":"torch","flask":"flask","fastapi":"fastapi","uvicorn":"uvicorn","requests":"requests","sqlalchemy":"sqlalchemy","pydantic":"pydantic","dotenv":"python-dotenv","PIL":"Pillow","cv2":"opencv-python","matplotlib":"matplotlib","seaborn":"seaborn","scipy":"scipy"}; var reqs=[]; Object.keys(reqMap).forEach(function(k){if(src.indexOf("import "+k)>=0||src.indexOf("from "+k)>=0)reqs.push(reqMap[k]);}); var reqsTxt=reqs.length?reqs.join("\n"):"# add dependencies here\n"; zip.file(folder+"main.py",src||"# "+title+"\n# Generated by PantheraHive BOS\n\nprint(title+\" loaded\")\n"); zip.file(folder+"requirements.txt",reqsTxt); zip.file(folder+".env.example","# Environment variables\n"); zip.file(folder+"README.md","# "+title+"\n\nGenerated by PantheraHive BOS.\n\n## Setup\n\`\`\`bash\npython3 -m venv .venv\nsource .venv/bin/activate\npip install -r requirements.txt\n\`\`\`\n\n## Run\n\`\`\`bash\npython main.py\n\`\`\`\n"); zip.file(folder+".gitignore",".venv/\n__pycache__/\n*.pyc\n.env\n.DS_Store\n"); } /* --- Node.js --- */ function buildNode(zip,folder,app,code){ var title=slugTitle(app); var pn=pkgName(app); var src=code.replace(/^\`\`\`[\w]*\n?/m,"").replace(/\n?\`\`\`$/m,"").trim(); var depMap={"mongoose":"^8.0.0","dotenv":"^16.4.5","axios":"^1.7.9","cors":"^2.8.5","bcryptjs":"^2.4.3","jsonwebtoken":"^9.0.2","socket.io":"^4.7.4","uuid":"^9.0.1","zod":"^3.22.4","express":"^4.18.2"}; var deps={}; Object.keys(depMap).forEach(function(k){if(src.indexOf(k)>=0)deps[k]=depMap[k];}); if(!deps["express"])deps["express"]="^4.18.2"; var pkgJson=JSON.stringify({"name":pn,"version":"1.0.0","main":"src/index.js","scripts":{"start":"node src/index.js","dev":"nodemon src/index.js"},"dependencies":deps,"devDependencies":{"nodemon":"^3.0.3"}},null,2)+"\n"; zip.file(folder+"package.json",pkgJson); var fallback="const express=require(\"express\");\nconst app=express();\napp.use(express.json());\n\napp.get(\"/\",(req,res)=>{\n res.json({message:\""+title+" API\"});\n});\n\nconst PORT=process.env.PORT||3000;\napp.listen(PORT,()=>console.log(\"Server on port \"+PORT));\n"; zip.file(folder+"src/index.js",src||fallback); zip.file(folder+".env.example","PORT=3000\n"); zip.file(folder+".gitignore","node_modules/\n.env\n.DS_Store\n"); zip.file(folder+"README.md","# "+title+"\n\nGenerated by PantheraHive BOS.\n\n## Setup\n\`\`\`bash\nnpm install\n\`\`\`\n\n## Run\n\`\`\`bash\nnpm run dev\n\`\`\`\n"); } /* --- Vanilla HTML --- */ function buildVanillaHtml(zip,folder,app,code){ var title=slugTitle(app); var isFullDoc=code.trim().toLowerCase().indexOf("=0||code.trim().toLowerCase().indexOf("=0; var indexHtml=isFullDoc?code:"\n\n\n\n\n"+title+"\n\n\n\n"+code+"\n\n\n\n"; zip.file(folder+"index.html",indexHtml); zip.file(folder+"style.css","/* "+title+" — styles */\n*{margin:0;padding:0;box-sizing:border-box}\nbody{font-family:system-ui,-apple-system,sans-serif;background:#fff;color:#1a1a2e}\n"); zip.file(folder+"script.js","/* "+title+" — scripts */\n"); zip.file(folder+"assets/.gitkeep",""); zip.file(folder+"README.md","# "+title+"\n\nGenerated by PantheraHive BOS.\n\n## Open\nDouble-click \`index.html\` in your browser.\n\nOr serve locally:\n\`\`\`bash\nnpx serve .\n# or\npython3 -m http.server 3000\n\`\`\`\n"); zip.file(folder+".gitignore",".DS_Store\nnode_modules/\n.env\n"); } /* ===== MAIN ===== */ var sc=document.createElement("script"); sc.src="https://cdnjs.cloudflare.com/ajax/libs/jszip/3.10.1/jszip.min.js"; sc.onerror=function(){ if(lbl)lbl.textContent="Download ZIP"; alert("JSZip load failed — check connection."); }; sc.onload=function(){ var zip=new JSZip(); var base=(_phFname||"output").replace(/\.[^.]+$/,""); var app=base.toLowerCase().replace(/[^a-z0-9]+/g,"_").replace(/^_+|_+$/g,"")||"my_app"; var folder=app+"/"; var vc=document.getElementById("panel-content"); var panelTxt=vc?(vc.innerText||vc.textContent||""):""; var lang=detectLang(_phCode,panelTxt); if(_phIsHtml){ buildVanillaHtml(zip,folder,app,_phCode); } else if(lang==="flutter"){ buildFlutter(zip,folder,app,_phCode,panelTxt); } else if(lang==="react-native"){ buildReactNative(zip,folder,app,_phCode,panelTxt); } else if(lang==="swift"){ buildSwift(zip,folder,app,_phCode,panelTxt); } else if(lang==="kotlin"){ buildKotlin(zip,folder,app,_phCode,panelTxt); } else if(lang==="react"){ buildReact(zip,folder,app,_phCode,panelTxt); } else if(lang==="vue"){ buildVue(zip,folder,app,_phCode,panelTxt); } else if(lang==="angular"){ buildAngular(zip,folder,app,_phCode,panelTxt); } else if(lang==="python"){ buildPython(zip,folder,app,_phCode); } else if(lang==="node"){ buildNode(zip,folder,app,_phCode); } else { /* Document/content workflow */ var title=app.replace(/_/g," "); var md=_phAll||_phCode||panelTxt||"No content"; zip.file(folder+app+".md",md); var h=""+title+""; h+="

"+title+"

"; var hc=md.replace(/&/g,"&").replace(//g,">"); hc=hc.replace(/^### (.+)$/gm,"

$1

"); hc=hc.replace(/^## (.+)$/gm,"

$1

"); hc=hc.replace(/^# (.+)$/gm,"

$1

"); hc=hc.replace(/\*\*(.+?)\*\*/g,"$1"); hc=hc.replace(/\n{2,}/g,"

"); h+="

"+hc+"

Generated by PantheraHive BOS
"; zip.file(folder+app+".html",h); zip.file(folder+"README.md","# "+title+"\n\nGenerated by PantheraHive BOS.\n\nFiles:\n- "+app+".md (Markdown)\n- "+app+".html (styled HTML)\n"); } zip.generateAsync({type:"blob"}).then(function(blob){ var a=document.createElement("a"); a.href=URL.createObjectURL(blob); a.download=app+".zip"; a.click(); URL.revokeObjectURL(a.href); if(lbl)lbl.textContent="Download ZIP"; }); }; document.head.appendChild(sc); } function phShare(){navigator.clipboard.writeText(window.location.href).then(function(){var el=document.getElementById("ph-share-lbl");if(el){el.textContent="Link copied!";setTimeout(function(){el.textContent="Copy share link";},2500);}});}function phEmbed(){var runId=window.location.pathname.split("/").pop().replace(".html","");var embedUrl="https://pantherahive.com/embed/"+runId;var code='';navigator.clipboard.writeText(code).then(function(){var el=document.getElementById("ph-embed-lbl");if(el){el.textContent="Embed code copied!";setTimeout(function(){el.textContent="Get Embed Code";},2500);}});}