Channel Mix
diff --git a/lib/services/ollama-cloud.ts b/lib/services/ollama-cloud.ts
index 464d4d3..010c11c 100644
--- a/lib/services/ollama-cloud.ts
+++ b/lib/services/ollama-cloud.ts
@@ -562,6 +562,12 @@ OUTPUT FORMAT - Return ONLY valid JSON with this EXACT structure:
"targetAudience": "Specific audience segment",
"competitiveAdvantage": "How this beats competitors",
"keyMessages": ["Message 1", "Message 2", "Message 3"],
+ "adCopyGuide": {
+ "headlines": ["Headline 1 (max 30 symbols)", "Headline 2", "Headline 3"],
+ "descriptions": ["Description 1 (max 90 symbols)", "Description 2"],
+ "keywords": ["keyword 1", "keyword 2", "keyword 3"],
+ "setupGuide": "Friendly step-by-step for a beginner on where exactly to paste these in Google Ads Manager"
+ },
"recommendedChannels": ["Google Search", "Display", "YouTube"],
"estimatedBudgetAllocation": { "search": 40, "display": 30, "video": 20, "social": 10 },
"expectedROI": "150-200%",
@@ -576,7 +582,10 @@ CRITICAL REQUIREMENTS:
- Provide 5-7 DISTINCT strategic directions
- Each strategy must be ACTIONABLE and SPECIFIC
- Include REAL competitive insights based on industry knowledge
-- Risk levels: "low", "medium", or "high"`,
+- Risk levels: "low", "medium", or "high"
+- AD COPY GUIDE must be incredibly "noob-friendly" - explain exactly where to paste each field in Google Ads Manager
+- Headlines MUST be under 30 characters
+- Descriptions MUST be under 90 characters`,
};
const userMessage: ChatMessage = {
diff --git a/lib/services/qwen-oauth.ts b/lib/services/qwen-oauth.ts
index 83bd23f..6394416 100644
--- a/lib/services/qwen-oauth.ts
+++ b/lib/services/qwen-oauth.ts
@@ -889,6 +889,12 @@ OUTPUT FORMAT - Return ONLY valid JSON with this EXACT structure:
"targetAudience": "Specific audience segment",
"competitiveAdvantage": "How this beats competitors",
"keyMessages": ["Message 1", "Message 2", "Message 3"],
+ "adCopyGuide": {
+ "headlines": ["Headline 1 (max 30 symbols)", "Headline 2", "Headline 3"],
+ "descriptions": ["Description 1 (max 90 symbols)", "Description 2"],
+ "keywords": ["keyword 1", "keyword 2", "keyword 3"],
+ "setupGuide": "Friendly step-by-step for a beginner on where exactly to paste these in Google Ads Manager"
+ },
"recommendedChannels": ["Google Search", "Display", "YouTube"],
"estimatedBudgetAllocation": { "search": 40, "display": 30, "video": 20, "social": 10 },
"expectedROI": "150-200%",
@@ -903,7 +909,10 @@ CRITICAL REQUIREMENTS:
- Provide 5-7 DISTINCT strategic directions
- Each strategy must be ACTIONABLE and SPECIFIC
- Include REAL competitive insights based on industry knowledge
-- Risk levels: "low", "medium", or "high"`,
+- Risk levels: "low", "medium", or "high"
+- AD COPY GUIDE must be incredibly "noob-friendly" - explain exactly where to paste each field in Google Ads Manager
+- Headlines MUST be under 30 characters
+- Descriptions MUST be under 90 characters`,
};
const userMessage: ChatMessage = {
diff --git a/lib/services/zai-plan.ts b/lib/services/zai-plan.ts
index e39dab0..2ffc432 100644
--- a/lib/services/zai-plan.ts
+++ b/lib/services/zai-plan.ts
@@ -641,6 +641,12 @@ OUTPUT FORMAT - Return ONLY valid JSON with this EXACT structure:
"targetAudience": "Specific audience segment",
"competitiveAdvantage": "How this beats competitors",
"keyMessages": ["Message 1", "Message 2", "Message 3"],
+ "adCopyGuide": {
+ "headlines": ["Headline 1 (max 30 symbols)", "Headline 2", "Headline 3"],
+ "descriptions": ["Description 1 (max 90 symbols)", "Description 2"],
+ "keywords": ["keyword 1", "keyword 2", "keyword 3"],
+ "setupGuide": "Friendly step-by-step for a beginner on where exactly to paste these in Google Ads Manager"
+ },
"recommendedChannels": ["Google Search", "Display", "YouTube"],
"estimatedBudgetAllocation": { "search": 40, "display": 30, "video": 20, "social": 10 },
"expectedROI": "150-200%",
@@ -657,6 +663,9 @@ CRITICAL REQUIREMENTS:
- Include REAL competitive insights based on industry knowledge
- Budget allocations must sum to 100%
- Risk levels: "low", "medium", or "high"
+- AD COPY GUIDE must be incredibly "noob-friendly" - explain exactly where to paste each field in Google Ads Manager
+- Headlines MUST be under 30 characters
+- Descriptions MUST be under 90 characters
- Be REALISTIC with ROI and timeline estimates`,
};
diff --git a/types/index.ts b/types/index.ts
index 32e262b..ba59e0b 100644
--- a/types/index.ts
+++ b/types/index.ts
@@ -209,6 +209,12 @@ export interface MagicWandStrategy {
targetAudience: string;
competitiveAdvantage: string;
keyMessages: string[];
+ adCopyGuide: {
+ headlines: string[];
+ descriptions: string[];
+ keywords: string[];
+ setupGuide: string;
+ };
recommendedChannels: string[];
estimatedBudgetAllocation: {
search?: number;