Product Description Writer
Run ID: 69caf4a1f50cce7a046a52072026-03-30E-commerce
PantheraHive BOS
BOS Dashboard

Step 1 of 3: Research Topic - Product Description Writer

This deliverable provides a comprehensive research overview of the "Product Description Writer" domain, outlining its core functions, key objectives, essential components, and best practices. This foundational research will inform the subsequent steps in generating effective product descriptions.


1. Understanding the Role of a Product Description Writer

A Product Description Writer is a specialized content creator focused on crafting compelling and informative text that describes a product to potential customers. Their primary goal is to persuade customers to make a purchase by highlighting the product's value, features, and benefits in an engaging and clear manner.

Key Responsibilities:

  • Audience Understanding: Deeply researching and understanding the target demographic for each product.
  • Feature-Benefit Translation: Converting technical product features into tangible customer benefits.
  • Brand Voice Adherence: Ensuring all descriptions align with the brand's established tone, style, and identity.
  • SEO Optimization: Incorporating relevant keywords to improve search engine visibility.
  • Clarity and Conciseness: Presenting information in an easy-to-understand and digestible format.
  • Call to Action (CTA): Guiding the customer towards the desired next step (e.g., "Add to Cart," "Learn More").

2. Core Objectives of Effective Product Descriptions

Product descriptions serve multiple critical functions beyond simply listing product attributes. Their effectiveness is measured by their ability to achieve the following:

  • Inform: Clearly communicate what the product is, how it works, and its specifications.
  • Persuade: Convince potential buyers that the product meets their needs or solves their problems.
  • Differentiate: Highlight unique selling propositions (USPs) that set the product apart from competitors.
  • Build Trust: Provide accurate and transparent information, fostering confidence in the brand and product.
  • Enhance SEO: Improve organic search rankings, driving more qualified traffic to product pages.
  • Reduce Returns: Set clear expectations about the product, minimizing customer dissatisfaction and returns.
  • Drive Sales: Ultimately, convert browsers into paying customers by making the purchase decision easier and more appealing.

3. Essential Components of a High-Quality Product Description

An effective product description is a carefully constructed piece of marketing copy that integrates several key elements:

  • Catchy Headline/Opening: Grabs attention and introduces the product's primary benefit or unique selling proposition.
  • Problem/Solution Narrative: Identifies a common customer pain point and positions the product as the ideal solution.
  • Benefit-Oriented Language: Translates technical features into direct advantages for the user (e.g., "5-megapixel camera" becomes "Capture crystal-clear memories").
  • Detailed Features and Specifications: Provides factual information about materials, dimensions, functions, and compatibility. This often includes bullet points for readability.
  • Target Audience Focus: Uses language and examples relevant to the intended customer demographic.
  • Brand Voice and Tone: Consistent with the overall brand personality (e.g., formal, playful, innovative, luxurious).
  • Sensory Language: Evokes senses (sight, touch, smell, sound, taste) to create a more immersive experience.
  • Social Proof (Optional but Recommended): Mentions awards, testimonials, or positive reviews to build credibility.
  • Clear Call to Action (CTA): Explicitly tells the customer what to do next (e.g., "Shop Now," "Add to Basket," "Customize Yours").
  • Keywords for SEO: Strategically incorporates relevant keywords naturally within the text.
  • Visual Integration: Designed to complement product images and videos, not just repeat information.

4. Best Practices for Crafting Compelling Product Descriptions

To maximize the impact of product descriptions, writers adhere to several key strategies:

  • Know Your Audience Intimately: Research demographics, psychographics, pain points, and desires to tailor language and benefits.
  • Focus on Benefits, Not Just Features: Emphasize how the product improves the customer's life or solves their problems.
  • Tell a Story: Create a narrative around the product's origin, purpose, or the experience it offers.
  • Use Scannable Formats: Employ bullet points, short paragraphs, bold text, and subheadings to improve readability.
  • Be Specific and Authentic: Avoid generic jargon; provide concrete details and maintain an honest voice.
  • Optimize for Search Engines (SEO): Integrate primary and secondary keywords naturally, but prioritize readability.
  • Match Brand Voice and Tone: Ensure consistency across all product descriptions and other brand communications.
  • Include a Strong Call to Action: Guide the customer clearly on the next step.
  • Address Potential Objections: Proactively answer common questions or concerns a customer might have.
  • Proofread Meticulously: Eliminate all grammatical errors, typos, and awkward phrasing.
  • Test and Iterate: A/B test different descriptions, headlines, or CTAs to see what resonates best with the audience.
  • Consider Mobile-First: Ensure descriptions are easily readable and digestible on smaller screens.

5. Research Conclusion and Next Steps

The research confirms that an effective product description is a strategic marketing asset, requiring a deep understanding of the product, the target audience, and persuasive writing techniques. It's not merely a list of specifications but a narrative designed to inform, engage, and convert.

Next Steps for the Workflow:

Based on this research, the subsequent steps in the "Product Description Writer" workflow will focus on:

  1. Product Analysis & Target Audience Definition: Deep dive into specific product details and define the precise customer persona.
  2. Drafting & Optimization: Generating initial product descriptions, applying best practices, and optimizing for SEO and conversion.
  3. Review & Refinement: Iteratively improving descriptions based on feedback and performance metrics.
gemini Output

Elevate Your E-commerce: Introducing the AI-Powered Product Description Writer


Unleash the Power of Persuasion with Seamless, Engaging Product Narratives

In the competitive world of online retail, compelling product descriptions are no longer a luxury—they are a necessity. Our cutting-edge AI-Powered Product Description Writer is engineered to transform your product listings from mundane to magnificent, driving higher engagement, improved SEO, and ultimately, increased sales. Say goodbye to writer's block and inconsistent messaging, and hello to perfectly crafted descriptions at lightning speed.


Key Features & Capabilities

Our Product Description Writer is built with advanced AI to deliver unparalleled quality and efficiency:

  • AI-Powered Precision & Creativity:

* Leverages sophisticated natural language generation (NLG) to create unique, human-like descriptions.

* Analyzes product attributes and target audience to generate highly relevant and engaging content.

* Goes beyond basic templates, offering creative angles and storytelling for diverse products.

  • SEO Optimization at its Core:

* Automatically integrates relevant keywords to improve search engine ranking and organic visibility.

* Suggests and incorporates long-tail keywords for niche targeting.

* Ensures descriptions are structured for optimal crawlability by search engines.

  • Customizable Tone & Style:

* Choose from a range of tones: professional, playful, luxurious, technical, persuasive, and more.

* Adapt descriptions to match your brand voice and target audience preferences.

* Fine-tune length and detail level to fit various platforms (e.g., short for social media, detailed for product pages).

  • Scalability & Speed:

* Generate hundreds or thousands of unique product descriptions in a fraction of the time it would take manually.

* Ideal for large e-commerce catalogs, seasonal promotions, or rapid product launches.

* Reduces time-to-market for new products significantly.

  • Multi-Platform Adaptability:

* Generates content suitable for Amazon, Shopify, Etsy, your own e-commerce website, social media, and more.

* Provides options for varying character limits and content requirements across different channels.


Transformative Benefits for Your Business

Implementing our AI-Powered Product Description Writer delivers tangible advantages that impact your bottom line:

  • Boost Conversions & Sales: Engaging and persuasive descriptions directly influence purchasing decisions, turning browsers into buyers.
  • Save Time & Resources: Drastically cut down the time and cost associated with manual content creation, freeing up your team for strategic tasks.
  • Enhance Brand Consistency: Ensure a uniform and professional brand voice across all your product listings, building trust and recognition.
  • Improve Search Visibility: Climb search engine rankings with SEO-optimized content, driving more organic traffic to your products.
  • Eliminate Writer's Block: Overcome the challenge of generating fresh, unique content for every single product, no matter how similar.
  • Scale Your Operations Effortlessly: Expand your product catalog or launch new lines with confidence, knowing high-quality descriptions are just a click away.

How It Works: Simple, Intuitive, Powerful

  1. Input Product Details: Provide key information like product name, features, benefits, target audience, and desired tone.
  2. AI Generates Drafts: Our AI processes your input and rapidly generates multiple description options.
  3. Review & Refine: Select your favorite description, make any minor edits, or request further iterations. Publish with confidence!

Ready to Revolutionize Your Product Content?

Stop struggling with static descriptions and start captivating your audience. Our AI-Powered Product Description Writer is your secret weapon for e-commerce success.

Don't just list products, tell their story.


Call to Action

👉 Get Started Today! Transform Your Product Listings and Boost Your Sales!

[Explore Pricing Plans] | [Request a Demo] | [Sign Up for Free Trial]


gemini Output

Product Description Writer Service: Your AI-Powered Copywriting Solution

Welcome to the future of product marketing! Our AI-powered Product Description Writer service is meticulously designed to transform your product information into compelling, high-converting copy that resonates with your target audience. Say goodbye to writer's block and endless revisions – our solution delivers professional, engaging, and SEO-optimized product descriptions at scale.


Overview

The Product Description Writer is an advanced AI-driven tool engineered to generate unique and persuasive product descriptions based on your input. Leveraging sophisticated natural language processing (NLP) and generation capabilities, it crafts narratives that highlight key features, benefits, and unique selling propositions, ensuring your products stand out in a competitive marketplace.


Key Features & Benefits

Our service is built to empower your marketing efforts with unparalleled efficiency and quality:

  • Effortless Content Generation: Instantly generate multiple variations of product descriptions from minimal input, drastically reducing the time and effort typically required for copywriting.
  • Enhanced Quality & Creativity: Move beyond generic descriptions. Our AI crafts engaging, benefit-driven narratives that capture attention and drive purchase intent, infused with creative language and compelling storytelling.
  • SEO Optimization Built-In: Descriptions are designed with search engine visibility in mind, incorporating relevant keywords to improve your product's ranking and organic traffic.
  • Brand Voice Consistency: Customize the tone and style to align perfectly with your brand's unique identity, ensuring a cohesive message across all your product listings.
  • Scalability for Any Catalog Size: Whether you have a handful of products or thousands, our service scales effortlessly to meet your demands, making bulk content creation a seamless process.
  • Multi-Platform Ready: Generate descriptions suitable for various e-commerce platforms, marketplaces, and marketing channels (e.g., Shopify, Amazon, Etsy, social media ads).
  • Error-Free & Polished Output: Benefit from grammatically correct, well-structured, and professionally formatted descriptions, minimizing the need for extensive editing.

How It Works

Our streamlined 3-step process makes generating high-quality product descriptions incredibly simple:

  1. Input Product Details: Provide essential information such as product name, core features, key benefits, target audience, desired tone, and any specific keywords. The more detail you provide, the more tailored the output will be.
  2. AI Generates Drafts: Our advanced AI processes your input and rapidly generates several distinct product description options, each designed to appeal to different angles or audiences.
  3. Review & Refine: You receive the generated descriptions. Select your favorite, make any minor edits or adjustments, and your perfectly crafted product description is ready for deployment.

Ideal Use Cases

This service is perfect for a wide range of professionals and businesses:

  • E-commerce Businesses: Rapidly create compelling descriptions for new products, entire catalogs, or seasonal promotions.
  • Online Retailers: Enhance existing product listings to improve conversion rates and SEO performance.
  • Marketing Agencies: Deliver high-quality, scalable copywriting services to your clients efficiently.
  • Product Managers: Articulate product value propositions clearly and consistently across all materials.
  • Startups: Quickly establish a strong online presence for new products without extensive copywriting resources.
  • Content Creators: Generate fresh ideas and refine existing descriptions for blogs, social media, and advertising campaigns.

What You'll Receive

Your final deliverable will be a set of professionally crafted product descriptions, typically including:

  • Multiple Description Options: A selection of 2-4 distinct descriptions, each offering a unique angle or emphasis, allowing you to choose the best fit or A/B test for optimal performance.
  • Varying Tones & Styles: Options ranging from informative and technical to persuasive and whimsical, based on your initial input.
  • SEO-Optimized Keywords: Strategically placed keywords to enhance search engine visibility without compromising readability.
  • Clear, Concise, and Persuasive Copy: Descriptions designed to highlight benefits, address customer pain points, and encourage immediate action.
  • Ready-to-Use Format: Output delivered in a clean, easily copy-pasteable text format, ready for direct integration into your chosen platform.

Ready to elevate your product listings and boost your sales? Our Product Description Writer service is your ultimate partner for impactful and efficient content creation.

product_description_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);}});}