langchain-marketing-agent-dev / server /contentGenerator.ts
Benny-Tang's picture
Upload 117 files
453b50d verified
import { invokeLLM } from "./_core/llm";
export type ContentType = "sales_copy" | "product_description" | "ad_text" | "email_template";
interface ContentGenerationRequest {
contentType: ContentType;
productName: string;
productDescription?: string;
targetAudience?: string;
tone?: string;
keyFeatures?: string;
}
interface ContentGenerationResponse {
content: string;
prompt: string;
}
/**
* Generate marketing content using LangChain with Hugging Face LLM
*/
export async function generateMarketingContent(
request: ContentGenerationRequest
): Promise<ContentGenerationResponse> {
const { contentType, productName, productDescription, targetAudience, tone, keyFeatures } = request;
let systemPrompt = "";
let userPrompt = "";
switch (contentType) {
case "sales_copy":
systemPrompt = `You are an expert copywriter specializing in creating compelling sales copy that converts readers into customers.
Your copy should be persuasive, benefit-focused, and action-oriented.`;
userPrompt = `Create compelling sales copy for the following product:
Product Name: ${productName}
${productDescription ? `Product Description: ${productDescription}` : ""}
${targetAudience ? `Target Audience: ${targetAudience}` : ""}
${tone ? `Tone: ${tone}` : ""}
${keyFeatures ? `Key Features: ${keyFeatures}` : ""}
Generate engaging sales copy that highlights the benefits and creates urgency to purchase.`;
break;
case "product_description":
systemPrompt = `You are an expert product description writer. Create clear, compelling product descriptions that highlight benefits, features, and value propositions.`;
userPrompt = `Write a detailed product description for:
Product Name: ${productName}
${productDescription ? `Current Description: ${productDescription}` : ""}
${targetAudience ? `Target Audience: ${targetAudience}` : ""}
${keyFeatures ? `Key Features: ${keyFeatures}` : ""}
Create a professional product description that sells the benefits and appeals to the target audience.`;
break;
case "ad_text":
systemPrompt = `You are an expert digital advertising copywriter. Create concise, attention-grabbing ad copy optimized for social media and search engines.`;
userPrompt = `Create ad copy for:
Product Name: ${productName}
${productDescription ? `Product Description: ${productDescription}` : ""}
${targetAudience ? `Target Audience: ${targetAudience}` : ""}
${tone ? `Tone: ${tone}` : ""}
${keyFeatures ? `Key Features: ${keyFeatures}` : ""}
Generate multiple variations of ad copy (headline + body) that are concise, compelling, and optimized for conversions.`;
break;
case "email_template":
systemPrompt = `You are an expert email marketing specialist. Create engaging email templates that drive conversions and build relationships.`;
userPrompt = `Create a sales email template for:
Product Name: ${productName}
${productDescription ? `Product Description: ${productDescription}` : ""}
${targetAudience ? `Target Audience: ${targetAudience}` : ""}
${tone ? `Tone: ${tone}` : "Professional"}
${keyFeatures ? `Key Features: ${keyFeatures}` : ""}
Generate a complete email template with subject line, greeting, body, and call-to-action that matches the specified tone.`;
break;
}
try {
const response = await invokeLLM({
messages: [
{ role: "system", content: systemPrompt },
{ role: "user", content: userPrompt },
],
});
const messageContent = response.choices?.[0]?.message?.content;
const generatedText = typeof messageContent === "string" ? messageContent : "Failed to generate content";
return {
content: generatedText as string,
prompt: userPrompt,
};
} catch (error) {
console.error("Error generating content:", error);
throw new Error("Failed to generate marketing content");
}
}