Content Generation Service - User Guide
Quick Start
Generate professional content in 3 steps:
from packages.content_generation import BlogPostGenerator, ContentGenerationRequest
from packages.content_generation.models import ContentType, AudienceSegment, Tone
# 1. Create generator
generator = BlogPostGenerator()
# 2. Create request
request = ContentGenerationRequest(
content_type=ContentType.BLOG_POST,
topic="Your Topic Here",
audience_segment=AudienceSegment.BUSINESS_USERS,
tone=Tone.PROFESSIONAL,
created_by="your_user_id"
)
# 3. Generate content
content = await generator.generate_blog_post(request)
print(content.title)
Content Types
Marketing Content
Blog Posts:
from packages.content_generation import BlogPostGenerator
generator = BlogPostGenerator()
blog = await generator.generate_blog_post(request, seo_focus="main keyword")
# Get SEO metadata
print(f"SEO Score: {blog.quality_scores.seo_score}")
print(f"Meta: {blog.metadata['meta_description']}")
print(f"Tags: {blog.metadata['tags']}")
Email Campaigns:
from packages.content_generation import EmailCampaignGenerator
generator = EmailCampaignGenerator()
email = await generator.generate_email_campaign(
request,
email_type="promotional", # or: transactional, newsletter, nurture, announcement
generate_variants=3 # Get 3 subject line variants
)
# Get A/B test variants
for i, subject in enumerate(email.metadata['subject_lines'], 1):
print(f"Subject {i}: {subject}")
Social Media:
from packages.content_generation import SocialMediaGenerator
generator = SocialMediaGenerator()
# Single platform
linkedin = await generator.generate_social_post(request, platform="linkedin")
# All platforms at once
posts = await generator.generate_multi_platform(request)
for platform, content in posts.items():
print(f"{platform}: {content.character_count} chars")
Sales Content
Sales Outreach:
from packages.content_generation import SalesOutreachGenerator
generator = SalesOutreachGenerator()
# Single outreach email
outreach = await generator.generate_sales_outreach(
request,
prospect_data={
"prospect_name": "John Smith",
"company": "Acme Corp",
"pain_point": "manual processes"
}
)
# Multi-touch sequence
sequence = await generator.generate_sales_sequence(request, sequence_length=5)
# Returns 5 emails with evolving tone and CTAs
Sales Proposals:
from packages.content_generation import ProposalGenerator
generator = ProposalGenerator()
proposal = await generator.generate_proposal(
request,
client_data={
"client_name": "Acme Corp",
"budget": "$50,000",
"timeline": "3 months"
}
)
Quality Analysis
Check Content Quality
from packages.content_generation import QualityScorer
scorer = QualityScorer()
scores = await scorer.score_content(
title="My Article",
body="Content here...",
target_keywords=["keyword1", "keyword2"]
)
print(f"Readability: {scores['readability']['flesch_reading_ease']}")
print(f"Grammar: {scores['grammar']['grammar_score']}")
print(f"SEO: {scores['seo']['seo_score']}")
print(f"Safety: {scores['toxicity']['safety_score']}")
Check Compliance
from packages.content_generation import ContentComplianceChecker
checker = ContentComplianceChecker()
compliance = await checker.check_compliance(
title="Article Title",
body="Content here...",
requirements={
"min_words": 500,
"max_words": 1500
}
)
if not compliance.passed:
print(f"Issues: {compliance.issues}")
print(f"Warnings: {compliance.warnings}")
A/B Testing
Generate Variants
from packages.content_generation import ContentVariantGenerator
variant_gen = ContentVariantGenerator()
# Tone variants
tone_variants = await variant_gen.generate_tone_variants(request)
# Audience variants
audience_variants = await variant_gen.generate_audience_variants(request)
# Compare and get best
comparison = variant_gen.compare_variants(tone_variants)
print(f"Best variant: {comparison['recommended_variant']}")
API Usage
Generate Content
curl -X POST http://localhost:8000/api/v1/content/generate \
-H "Content-Type: application/json" \
-d '{
"content_type": "blog_post",
"topic": "AI in Healthcare",
"audience_segment": "business_users",
"tone": "professional",
"target_keywords": ["AI", "healthcare"],
"created_by": "user_123"
}'
Analyze Quality
curl -X POST http://localhost:8000/api/v1/content/quality/analyze \
-H "Content-Type: application/json" \
-d '{
"content": "Your content here...",
"title": "Article Title",
"target_keywords": ["keyword1", "keyword2"]
}'
Best Practices
Content Generation
- Be Specific: Detailed topics get better results
- Use Keywords: Improves SEO and relevance
- Set Word Counts: Get content of appropriate length
- Choose Right Tone: Match your audience
- Enable RAG: Better context = better content
Quality Optimization
- Check Readability: Aim for 60-70 Flesch score
- Review Grammar: Fix flagged errors
- Optimize SEO: Use extracted keywords
- Validate Safety: Ensure toxicity < 0.3
- Iterate: Use A/B testing to improve
Sales Content
- Personalize: Use prospect data
- Be Concise: <250 words for outreach
- Multiple Touches: Use sequences (5 emails)
- Soft CTAs: Low-friction asks
- Add Value: Include resources, insights
Troubleshooting
Low Quality Scores:
- Check if quality libraries are installed
- Verify content meets minimum standards
- Review generated content manually
Slow Generation:
- Reduce max_words
- Disable unnecessary features
- Check API rate limits
High Costs:
- Set max_tokens limits
- Use caching
- Monitor daily budgets
Support
- Documentation: See full docs in
docs/docs/services/personalized-content-generation/
- Examples: Check
examples/content_generation_demo.py
- Tests: Review test files for usage patterns
User Guide Version: 1.0
Last Updated: October 9, 2025