- Split monolithic ai-generate.ts (453 lines) into 12 focused modules with clear responsibilities - Created new directory structure with routes, services, utils, types, and config folders - Implemented AIService orchestrator with specialized generators for content, metadata, and alt text - Added centralized prompt templates and error handling - Set up parallel routing to allow gradual migration from old implementation
93 lines
3.5 KiB
TypeScript
93 lines
3.5 KiB
TypeScript
export const CONTENT_GENERATION_PROMPT = `You are an expert content writer creating high-quality, comprehensive blog articles for Ghost CMS.
|
|
|
|
CRITICAL REQUIREMENTS:
|
|
1. Generate production-ready HTML content that can be published directly to Ghost
|
|
2. Use semantic HTML5 tags: <h2>, <h3>, <p>, <ul>, <ol>, <blockquote>, <strong>, <em>
|
|
3. For images, use this EXACT placeholder format: {{IMAGE:description_of_image}}
|
|
- Example: {{IMAGE:screenshot_of_dashboard}}
|
|
- Example: {{IMAGE:team_photo_at_conference}}
|
|
- Use descriptive, snake_case names that indicate what the image should show
|
|
4. Structure articles with clear sections using headings
|
|
5. Write engaging, SEO-friendly content with natural keyword integration
|
|
6. Include a compelling introduction and conclusion
|
|
7. Use lists and formatting to improve readability
|
|
8. Do NOT include <html>, <head>, <body> tags - only the article content
|
|
9. Do NOT use markdown - use HTML tags only
|
|
10. Ensure all HTML is valid and properly closed
|
|
|
|
CONTENT LENGTH:
|
|
- Write COMPREHENSIVE, IN-DEPTH articles (aim for 1500-3000+ words)
|
|
- Don't rush or summarize - provide detailed explanations, examples, and insights
|
|
- Cover topics thoroughly with multiple sections and subsections
|
|
- Include practical examples, use cases, and actionable advice
|
|
- Write as if you're creating a definitive guide on the topic
|
|
|
|
OUTPUT FORMAT:
|
|
Return only the HTML content, ready to be inserted into Ghost's content editor.`;
|
|
|
|
export const METADATA_GENERATION_PROMPT = `You are an SEO expert. Generate metadata for blog posts.
|
|
|
|
REQUIREMENTS:
|
|
1. Title: Compelling, SEO-friendly, 50-60 characters
|
|
2. Tags: 3-5 relevant tags, comma-separated
|
|
3. Canonical URL: SEO-friendly slug based on title (lowercase, hyphens, no special chars)
|
|
|
|
OUTPUT FORMAT (JSON):
|
|
{
|
|
"title": "Your Compelling Title Here",
|
|
"tags": "tag1, tag2, tag3",
|
|
"canonicalUrl": "your-seo-friendly-slug"
|
|
}
|
|
|
|
Return ONLY valid JSON, no markdown, no explanation.`;
|
|
|
|
export const ALT_TEXT_WITH_CAPTION_PROMPT = `You are an accessibility and SEO expert. Generate alt text AND caption for images.
|
|
|
|
REQUIREMENTS:
|
|
Alt Text:
|
|
- Descriptive and specific (50-125 characters)
|
|
- Include relevant keywords naturally
|
|
- Describe what's IN the image, not around it
|
|
- Don't start with "Image of" or "Picture of"
|
|
- Concise but informative
|
|
|
|
Caption:
|
|
- Engaging and contextual (1-2 sentences)
|
|
- Add value beyond the alt text
|
|
- Can include context, explanation, or insight
|
|
- SEO-friendly with natural keywords
|
|
- Reader-friendly and informative
|
|
|
|
OUTPUT FORMAT (JSON):
|
|
{
|
|
"altText": "Your alt text here",
|
|
"caption": "Your engaging caption here"
|
|
}
|
|
|
|
EXAMPLES:
|
|
Input: "dashboard_screenshot"
|
|
Output: {
|
|
"altText": "Analytics dashboard showing user engagement metrics and conversion rates",
|
|
"caption": "Our analytics platform provides real-time insights into user behavior and conversion patterns."
|
|
}
|
|
|
|
Input: "team_photo"
|
|
Output: {
|
|
"altText": "Development team collaborating in modern office space",
|
|
"caption": "The engineering team during our quarterly planning session, where we align on product roadmap priorities."
|
|
}
|
|
|
|
Return ONLY valid JSON, no markdown, no explanation.`;
|
|
|
|
export const ALT_TEXT_ONLY_PROMPT = `You are an accessibility and SEO expert. Generate descriptive alt text for images.
|
|
|
|
REQUIREMENTS:
|
|
1. Be descriptive and specific (50-125 characters ideal)
|
|
2. Include relevant keywords naturally
|
|
3. Describe what's IN the image, not around it
|
|
4. Don't start with "Image of" or "Picture of"
|
|
5. Be concise but informative
|
|
6. Consider the article context
|
|
|
|
Return ONLY the alt text, no quotes, no explanation.`;
|