264 lines
11 KiB
Python
264 lines
11 KiB
Python
#!/usr/bin/env python3
|
|
"""Test script for content planning services."""
|
|
|
|
import asyncio
|
|
from loguru import logger
|
|
|
|
# Import all content planning services
|
|
from services.content_gap_analyzer import ContentGapAnalyzer
|
|
from services.competitor_analyzer import CompetitorAnalyzer
|
|
from services.keyword_researcher import KeywordResearcher
|
|
from services.ai_engine_service import AIEngineService
|
|
from services.website_analyzer import WebsiteAnalyzer
|
|
|
|
async def test_content_planning_services():
|
|
"""Test all content planning services."""
|
|
logger.info("🧪 Testing Content Planning Services")
|
|
|
|
try:
|
|
# Test 1: Initialize all services
|
|
logger.info("1. Initializing services...")
|
|
content_gap_analyzer = ContentGapAnalyzer()
|
|
competitor_analyzer = CompetitorAnalyzer()
|
|
keyword_researcher = KeywordResearcher()
|
|
ai_engine = AIEngineService()
|
|
website_analyzer = WebsiteAnalyzer()
|
|
logger.info("✅ All services initialized successfully")
|
|
|
|
# Test 2: Test content gap analysis
|
|
logger.info("2. Testing content gap analysis...")
|
|
target_url = "https://alwrity.com"
|
|
competitor_urls = ["https://competitor1.com", "https://competitor2.com"]
|
|
target_keywords = ["content planning", "digital marketing", "seo strategy"]
|
|
|
|
gap_analysis = await content_gap_analyzer.analyze_comprehensive_gap(
|
|
target_url=target_url,
|
|
competitor_urls=competitor_urls,
|
|
target_keywords=target_keywords,
|
|
industry="technology"
|
|
)
|
|
|
|
if gap_analysis:
|
|
logger.info(f"✅ Content gap analysis completed: {len(gap_analysis.get('recommendations', []))} recommendations")
|
|
else:
|
|
logger.warning("⚠️ Content gap analysis returned empty results")
|
|
|
|
# Test 3: Test competitor analysis
|
|
logger.info("3. Testing competitor analysis...")
|
|
competitor_analysis = await competitor_analyzer.analyze_competitors(
|
|
competitor_urls=competitor_urls,
|
|
industry="technology"
|
|
)
|
|
|
|
if competitor_analysis:
|
|
logger.info(f"✅ Competitor analysis completed: {len(competitor_analysis.get('competitors', []))} competitors analyzed")
|
|
else:
|
|
logger.warning("⚠️ Competitor analysis returned empty results")
|
|
|
|
# Test 4: Test keyword research
|
|
logger.info("4. Testing keyword research...")
|
|
keyword_analysis = await keyword_researcher.analyze_keywords(
|
|
industry="technology",
|
|
url=target_url,
|
|
target_keywords=target_keywords
|
|
)
|
|
|
|
if keyword_analysis:
|
|
logger.info(f"✅ Keyword analysis completed: {len(keyword_analysis.get('opportunities', []))} opportunities found")
|
|
else:
|
|
logger.warning("⚠️ Keyword analysis returned empty results")
|
|
|
|
# Test 5: Test website analysis
|
|
logger.info("5. Testing website analysis...")
|
|
website_analysis = await website_analyzer.analyze_website(
|
|
url=target_url,
|
|
industry="technology"
|
|
)
|
|
|
|
if website_analysis:
|
|
logger.info(f"✅ Website analysis completed: {website_analysis.get('content_analysis', {}).get('total_pages', 0)} pages analyzed")
|
|
else:
|
|
logger.warning("⚠️ Website analysis returned empty results")
|
|
|
|
# Test 6: Test AI engine
|
|
logger.info("6. Testing AI engine...")
|
|
analysis_summary = {
|
|
'target_url': target_url,
|
|
'industry': 'technology',
|
|
'serp_opportunities': 5,
|
|
'expanded_keywords_count': 25,
|
|
'competitors_analyzed': 2,
|
|
'dominant_themes': ['content strategy', 'digital marketing', 'seo']
|
|
}
|
|
|
|
ai_insights = await ai_engine.analyze_content_gaps(analysis_summary)
|
|
|
|
if ai_insights:
|
|
logger.info(f"✅ AI insights generated: {len(ai_insights.get('strategic_insights', []))} insights")
|
|
else:
|
|
logger.warning("⚠️ AI insights returned empty results")
|
|
|
|
# Test 7: Test content quality analysis
|
|
logger.info("7. Testing content quality analysis...")
|
|
content_quality = await website_analyzer.analyze_content_quality(target_url)
|
|
|
|
if content_quality:
|
|
logger.info(f"✅ Content quality analysis completed: Score {content_quality.get('overall_quality_score', 0)}/10")
|
|
else:
|
|
logger.warning("⚠️ Content quality analysis returned empty results")
|
|
|
|
# Test 8: Test user experience analysis
|
|
logger.info("8. Testing user experience analysis...")
|
|
ux_analysis = await website_analyzer.analyze_user_experience(target_url)
|
|
|
|
if ux_analysis:
|
|
logger.info(f"✅ UX analysis completed: Score {ux_analysis.get('overall_ux_score', 0)}/10")
|
|
else:
|
|
logger.warning("⚠️ UX analysis returned empty results")
|
|
|
|
# Test 9: Test keyword expansion
|
|
logger.info("9. Testing keyword expansion...")
|
|
seed_keywords = ["content planning", "digital marketing"]
|
|
expanded_keywords = await keyword_researcher.expand_keywords(
|
|
seed_keywords=seed_keywords,
|
|
industry="technology"
|
|
)
|
|
|
|
if expanded_keywords:
|
|
logger.info(f"✅ Keyword expansion completed: {len(expanded_keywords.get('expanded_keywords', []))} keywords generated")
|
|
else:
|
|
logger.warning("⚠️ Keyword expansion returned empty results")
|
|
|
|
# Test 10: Test search intent analysis
|
|
logger.info("10. Testing search intent analysis...")
|
|
keywords = ["content planning guide", "digital marketing tips", "seo best practices"]
|
|
intent_analysis = await keyword_researcher.analyze_search_intent(keywords)
|
|
|
|
if intent_analysis:
|
|
logger.info(f"✅ Search intent analysis completed: {len(intent_analysis.get('keyword_intents', {}))} keywords analyzed")
|
|
else:
|
|
logger.warning("⚠️ Search intent analysis returned empty results")
|
|
|
|
logger.info("🎉 All content planning services tested successfully!")
|
|
return True
|
|
|
|
except Exception as e:
|
|
logger.error(f"❌ Error testing content planning services: {str(e)}")
|
|
return False
|
|
|
|
async def test_ai_engine_features():
|
|
"""Test specific AI engine features."""
|
|
logger.info("🤖 Testing AI Engine Features")
|
|
|
|
try:
|
|
ai_engine = AIEngineService()
|
|
|
|
# Test market position analysis
|
|
market_data = {
|
|
'competitors_analyzed': 3,
|
|
'avg_content_count': 150,
|
|
'avg_quality_score': 8.5,
|
|
'frequency_distribution': {'3x/week': 2, '2x/week': 1},
|
|
'industry': 'technology'
|
|
}
|
|
|
|
market_position = await ai_engine.analyze_market_position(market_data)
|
|
if market_position:
|
|
logger.info("✅ Market position analysis completed")
|
|
else:
|
|
logger.warning("⚠️ Market position analysis failed")
|
|
|
|
# Test content recommendations
|
|
analysis_data = {
|
|
'target_url': 'https://alwrity.com',
|
|
'industry': 'technology',
|
|
'keywords': ['content planning', 'digital marketing'],
|
|
'competitors': ['competitor1.com', 'competitor2.com']
|
|
}
|
|
|
|
recommendations = await ai_engine.generate_content_recommendations(analysis_data)
|
|
if recommendations:
|
|
logger.info(f"✅ Content recommendations generated: {len(recommendations)} recommendations")
|
|
else:
|
|
logger.warning("⚠️ Content recommendations failed")
|
|
|
|
# Test performance predictions
|
|
content_data = {
|
|
'content_type': 'blog_post',
|
|
'target_keywords': ['content planning'],
|
|
'industry': 'technology',
|
|
'content_length': 1500
|
|
}
|
|
|
|
predictions = await ai_engine.predict_content_performance(content_data)
|
|
if predictions:
|
|
logger.info("✅ Performance predictions generated")
|
|
else:
|
|
logger.warning("⚠️ Performance predictions failed")
|
|
|
|
# Test competitive intelligence
|
|
competitor_data = {
|
|
'competitors': ['competitor1.com', 'competitor2.com'],
|
|
'industry': 'technology',
|
|
'analysis_depth': 'comprehensive'
|
|
}
|
|
|
|
competitive_intelligence = await ai_engine.analyze_competitive_intelligence(competitor_data)
|
|
if competitive_intelligence:
|
|
logger.info("✅ Competitive intelligence analysis completed")
|
|
else:
|
|
logger.warning("⚠️ Competitive intelligence analysis failed")
|
|
|
|
# Test strategic insights
|
|
analysis_data = {
|
|
'industry': 'technology',
|
|
'target_audience': 'marketing professionals',
|
|
'business_goals': ['increase traffic', 'improve conversions'],
|
|
'current_performance': 'moderate'
|
|
}
|
|
|
|
strategic_insights = await ai_engine.generate_strategic_insights(analysis_data)
|
|
if strategic_insights:
|
|
logger.info(f"✅ Strategic insights generated: {len(strategic_insights)} insights")
|
|
else:
|
|
logger.warning("⚠️ Strategic insights failed")
|
|
|
|
# Test content quality analysis
|
|
content_data = {
|
|
'content_text': 'Sample content for analysis',
|
|
'target_keywords': ['content planning'],
|
|
'industry': 'technology'
|
|
}
|
|
|
|
quality_analysis = await ai_engine.analyze_content_quality(content_data)
|
|
if quality_analysis:
|
|
logger.info(f"✅ Content quality analysis completed: Score {quality_analysis.get('overall_quality_score', 0)}/10")
|
|
else:
|
|
logger.warning("⚠️ Content quality analysis failed")
|
|
|
|
logger.info("🎉 All AI engine features tested successfully!")
|
|
return True
|
|
|
|
except Exception as e:
|
|
logger.error(f"❌ Error testing AI engine features: {str(e)}")
|
|
return False
|
|
|
|
async def main():
|
|
"""Main test function."""
|
|
logger.info("🚀 Starting Content Planning Services Test Suite")
|
|
|
|
# Test 1: Basic services
|
|
services_result = await test_content_planning_services()
|
|
|
|
# Test 2: AI engine features
|
|
ai_result = await test_ai_engine_features()
|
|
|
|
if services_result and ai_result:
|
|
logger.info("🎉 All tests passed! Content Planning Services are ready for Phase 1 implementation.")
|
|
else:
|
|
logger.error("❌ Some tests failed. Please check the logs above.")
|
|
|
|
logger.info("🏁 Test suite completed")
|
|
|
|
if __name__ == "__main__":
|
|
asyncio.run(main()) |