Sales Page Copy Generator

Sales Page Copy Generator

Create high-converting sales copy based on your product details.

Product Information

Your Sales Copy

Your generated sales page copy will appear here.

${copy.headline}

Opening Hook

${copy.hook}

Problem

${copy.problem}

Solution

${copy.solution}

Call to Action

${copy.callToAction}

`; fullCopyText = Object.entries(copy).map(([key, value]) => `${key.toUpperCase()}\n${value}`).join('\n\n'); elements.resultsPlaceholder.classList.add('hidden'); elements.resultsContainer.classList.remove('hidden'); } function setLoadingState(isLoading) { elements.generateBtn.disabled = isLoading; if (isLoading) { elements.generateBtn.innerHTML = `Writing...`; elements.resultsContainer.classList.add('hidden'); elements.resultsPlaceholder.classList.remove('hidden'); elements.resultsPlaceholder.innerHTML = `

Writing Your Sales Page...

`; } else { elements.generateBtn.innerHTML = `Generate Copy`; } } function displayError(message) { elements.resultsPlaceholder.innerHTML = `

Generation Failed

${message}

`; elements.resultsPlaceholder.classList.remove('hidden'); elements.resultsContainer.classList.add('hidden'); } function handleCopy() { if (!fullCopyText) return; navigator.clipboard.writeText(fullCopyText).then(() => { const originalText = elements.copyBtn.innerHTML; elements.copyBtn.innerHTML = `Copied!`; setTimeout(() => { elements.copyBtn.innerHTML = originalText; }, 2000); }).catch(err => console.error('Failed to copy: ', err)); } // --- PDF Generation --- function generatePdf() { if (!generationResult) return; const { jsPDF } = window.jspdf; const doc = new jsPDF(); doc.setFont('helvetica', 'bold'); doc.setFontSize(18); doc.text("Sales Page Copy Report", doc.internal.pageSize.getWidth() / 2, 20, { align: 'center' }); doc.setFontSize(11); doc.setTextColor(100); doc.text(`Generated on: ${new Date().toLocaleDateString('en-US')}`, 14, 30); const { details, copy } = generationResult; const criteriaBody = [ ['Product Name', details.name], ['Target Audience', details.audience], ['Key Benefits', details.benefits], ['Call to Action', details.cta], ['Tone', details.tone], ]; doc.autoTable({ startY: 35, head: [['Input Criteria', 'Value']], body: criteriaBody, theme: 'striped', headStyles: { fillColor: '#dc2626' } }); let lastY = doc.autoTable.previous.finalY + 10; Object.entries(copy).forEach(([key, value]) => { doc.setFont('helvetica', 'bold'); doc.setFontSize(12); doc.text(key.replace(/([A-Z])/g, ' $1').trim().toUpperCase(), 14, lastY); doc.setFont('helvetica', 'normal'); doc.setFontSize(10); const lines = doc.splitTextToSize(value, doc.internal.pageSize.getWidth() - 28); doc.text(lines, 14, lastY + 7); lastY += 7 + (lines.length * 5) + 5; // Add padding }); doc.save(`sales-copy-report.pdf`); } initialize(); });
Scroll to Top