From d90d4410196a6ecdeae656f1cc2f8fcff873de75 Mon Sep 17 00:00:00 2001 From: ajaysi Date: Fri, 12 Jun 2026 20:32:03 +0530 Subject: [PATCH] chore: push all remaining changes - Blog writer enhancements and bug fixes - Wix integration improvements - Frontend UI updates - GSC dashboard docs cleanup - Image studio assets - LinkedIn requirements file - Various dependency updates --- GSC_DASHBOARD_COMPLETION_SUMMARY.md | 449 ------------ GSC_DASHBOARD_IMPLEMENTATION_CHECKLIST.md | 481 ------------- GSC_DASHBOARD_INTEGRATION_GUIDE.md | 622 ----------------- backend/api/blog_writer/router.py | 88 ++- backend/api/blog_writer/seo_analysis.py | 6 +- backend/api/linkedin_image_generation.py | 205 ++++-- backend/api/wix_routes.py | 90 ++- ...am_of_a_digital_marketing_fun_5db260a4.png | Bin 0 -> 205285 bytes ...tration_of_a_central_AI_brain_ce81867b.png | Bin 0 -> 313972 bytes ...ographic_style_visual_with_fo_f6143820.png | Bin 0 -> 386053 bytes backend/middleware/auth_middleware.py | 23 +- backend/models/blog_models.py | 2 + backend/requirements-linkedin.txt | 74 ++ backend/requirements.txt | 2 + .../content/enhanced_content_generator.py | 196 +++++- .../blog_writer/content/flow_analyzer.py | 38 +- .../content/introduction_generator.py | 54 +- .../blog_writer/core/blog_writer_service.py | 52 +- .../blog_writer/outline/grounding_engine.py | 16 +- .../blog_writer/outline/outline_generator.py | 48 +- .../blog_writer/outline/outline_optimizer.py | 52 +- .../blog_writer/outline/outline_service.py | 4 +- .../blog_writer/outline/parallel_processor.py | 18 +- .../blog_writer/outline/prompt_builder.py | 69 +- .../blog_writer/outline/response_processor.py | 25 +- .../blog_writer/outline/source_mapper.py | 185 ++++- .../research/competitor_analyzer.py | 2 +- .../research/content_angle_generator.py | 2 +- .../blog_writer/research/exa_provider.py | 125 +++- .../blog_writer/research/keyword_analyzer.py | 2 +- .../blog_writer/research/research_service.py | 82 ++- .../seo/blog_content_seo_analyzer.py | 659 ++++++++++++------ .../seo/blog_seo_metadata_generator.py | 285 ++++++-- .../seo/blog_seo_recommendation_applier.py | 213 ++++-- backend/services/integrations/wix/auth.py | 7 +- backend/services/integrations/wix/blog.py | 40 +- .../integrations/wix/blog_publisher.py | 107 ++- backend/services/integrations/wix/content.py | 138 +++- backend/services/integrations/wix/logger.py | 5 +- backend/services/integrations/wix/media.py | 35 +- backend/services/integrations/wix/seo.py | 10 +- backend/services/today_workflow_service.py | 282 +++++--- .../services/video_studio/platform_specs.py | 11 + backend/services/wix_service.py | 43 +- docs-site/mkdocs.yml | 2 + frontend/package.json | 3 +- frontend/src/api/client.ts | 15 + .../src/components/BlogWriter/BlogWriter.tsx | 70 +- .../BlogWriterLandingSection.tsx | 3 + .../BlogWriterUtils/PhaseContent.tsx | 8 + .../BlogWriterUtils/PublishContent.tsx | 289 +++++++- .../BlogWriterUtils/useBlogWriterPolling.ts | 16 +- .../BlogWriterUtils/usePhaseActionHandlers.ts | 8 +- .../BlogWriterUtils/usePhaseRestoration.ts | 7 +- .../BlogWriterUtils/useSEOManager.ts | 115 ++- .../DiffPreviewModal/DiffPreviewModal.tsx | 130 +++- .../BlogWriter/ManualResearchForm.tsx | 5 +- .../components/BlogWriter/PhaseNavigation.tsx | 12 +- .../BlogWriter/ResearchProgressModal.tsx | 295 +++----- .../SEO/MetadataDisplay/CoreMetadataTab.tsx | 101 ++- .../SEO/MetadataDisplay/PreviewCard.tsx | 54 +- .../SEO/MetadataDisplay/SocialMediaTab.tsx | 42 ++ .../SEO/MetadataDisplay/StructuredDataTab.tsx | 76 +- .../BlogWriter/SEOAnalysisModal.tsx | 22 +- .../BlogWriter/SEOMetadataModal.tsx | 105 ++- .../BlogWriter/SectionGenerator.tsx | 6 +- .../tabs/CalendarTab.tsx | 44 +- .../components/EnhancedTodayModal.tsx | 58 +- .../shared/CopilotKit/PlatformPersonaChat.tsx | 8 +- .../PlatformPersonaProvider.tsx | 384 ++++++---- frontend/src/hooks/useBlogWriterState.ts | 61 +- frontend/src/hooks/usePhaseNavigation.ts | 6 +- frontend/src/hooks/usePhaseNavigationCore.ts | 15 +- frontend/src/hooks/useWixPublish.ts | 33 +- frontend/src/services/blogWriterApi.ts | 5 +- frontend/src/services/blogWriterCache.ts | 12 +- frontend/src/types/workflow.ts | 2 +- frontend/src/utils/getSectionDiffs.ts | 3 +- 78 files changed, 3963 insertions(+), 2899 deletions(-) delete mode 100644 GSC_DASHBOARD_COMPLETION_SUMMARY.md delete mode 100644 GSC_DASHBOARD_IMPLEMENTATION_CHECKLIST.md delete mode 100644 GSC_DASHBOARD_INTEGRATION_GUIDE.md create mode 100644 backend/image_studio_images/img_Conceptual_diagram_of_a_digital_marketing_fun_5db260a4.png create mode 100644 backend/image_studio_images/img_Conceptual_illustration_of_a_central_AI_brain_ce81867b.png create mode 100644 backend/image_studio_images/img_Professional_infographic_style_visual_with_fo_f6143820.png create mode 100644 backend/requirements-linkedin.txt diff --git a/GSC_DASHBOARD_COMPLETION_SUMMARY.md b/GSC_DASHBOARD_COMPLETION_SUMMARY.md deleted file mode 100644 index c1731e0e..00000000 --- a/GSC_DASHBOARD_COMPLETION_SUMMARY.md +++ /dev/null @@ -1,449 +0,0 @@ -# GSC Dashboard Adaptation - Completion Summary - -**Date**: May 27, 2026 -**Phase**: SEO Dashboard Integration - Backend & API Complete -**Status**: โœ… PHASE 1 & 2 COMPLETE - Ready for Frontend - ---- - -## ๐ŸŽฏ What We Accomplished - -### Phase 1: Analysis & Planning โœ… -- Analyzed SEO Dashboard structure and current GSC features -- Identified key differences between Blog Writer and Dashboard use cases -- Designed service architecture for dashboard-specific needs -- Created comprehensive adaptation plan - -### Phase 2: Backend Implementation โœ… -- **Service**: Created `GSCStrategyInsightsService` (700+ lines) -- **API**: Added 4 new endpoints to router -- **Models**: Created request/response data classes -- **Integration**: Imported and wired into router -- **Documentation**: Comprehensive integration guide - ---- - -## ๐Ÿ“ฆ Deliverables - -### 1. Backend Service Class -**File**: `backend/services/seo_tools/gsc_strategy_insights_service.py` - -**What It Does**: -- Reuses existing GSCBrainstormService (no code duplication) -- Adds dashboard-specific analysis -- ROI-weighted opportunity ranking -- Health metrics calculation -- Quick summary generation -- Framework for trend and competitive analysis (Phase 2) - -**Key Features**: -``` -Ranking Metrics: - - ROI Score (weighted: 40% traffic + 30% ease + 20% competitive + 10% momentum) - - Severity Levels (CRITICAL, HIGH, MEDIUM, LOW, WATCH) - - Priority Scoring (1-10 scale) - - Implementation effort estimates - - Timeline to impact - - Actionable recommendations - -Health Metrics: - - Composite health score (0-100) - - Keyword position distribution - - CTR vs 3.1% industry benchmark - - Growth trends - - Overall assessment -``` - -### 2. API Endpoints -**File**: `backend/routers/seo_tools.py` - -**4 New Endpoints**: - -#### Endpoint 1: Strategy Insights (Main) -``` -POST /api/seo/gsc/strategy-insights -โ†’ Returns: opportunities, health_metrics, quick_summary -โ†’ Time: 4-8 seconds -``` - -#### Endpoint 2: Opportunity Ranking -``` -POST /api/seo/gsc/opportunity-ranking -โ†’ Returns: ROI-ranked opportunities (sortable, filterable) -โ†’ Time: 4-8 seconds -``` - -#### Endpoint 3: Health Metrics -``` -POST /api/seo/gsc/health-metrics -โ†’ Returns: health score, distribution, metrics -โ†’ Time: 2-4 seconds -``` - -#### Endpoint 4: Trend Analysis -``` -POST /api/seo/gsc/trend-analysis -โ†’ Returns: trend data (Phase 2) -โ†’ Time: 3-6 seconds (when implemented) -``` - -### 3. Documentation -**Files Created**: -- `GSC_DASHBOARD_ADAPTATION_PLAN.md` (4,000 words) -- `GSC_DASHBOARD_INTEGRATION_GUIDE.md` (6,000 words) - -**Content**: -- Architecture overview -- API reference with examples -- Data models and formulas -- Frontend integration guide -- Component specifications -- Testing strategy -- Deployment checklist - ---- - -## ๐Ÿ”„ Architecture Highlights - -### Service Inheritance -``` -GSCBrainstormService (Blog Writer focused) - โ†“ reused -GSCStrategyInsightsService (Dashboard focused) - โ†“ -New analysis methods (ROI ranking, health, summary) -``` - -### Data Flow -``` -SEO Dashboard - โ†“ -useGSCStrategyInsights() [Frontend hook - TO BUILD] - โ†“ -POST /api/seo/gsc/strategy-insights - โ†“ -GSCStrategyInsightsService.get_dashboard_strategy() - โ”œโ”€ Reuses GSCBrainstormService.brainstorm_topics() - โ”œโ”€ _get_ranked_opportunities() [ROI ranking] - โ”œโ”€ _calculate_health_metrics() [Health score] - โ””โ”€ _generate_quick_summary() [Text summary] - โ†“ -Dashboard Components: - - StrategyInsightsPanel - - HealthMetricsWidget - - OpportunitiesList - - TrendChart [Phase 2] -``` - ---- - -## ๐Ÿ’ก Key Design Decisions - -### 1. Service Reuse, Not Duplication -- GSCStrategyInsightsService wraps GSCBrainstormService -- Reuses existing opportunity detection logic -- Adds dashboard-specific analysis on top -- Single source of truth for GSC analysis - -### 2. ROI-Based Prioritization -- Formula balances 4 factors: traffic, ease, competitive, momentum -- Severity levels align with project priority -- Clear framework for "what matters most" -- Flexible sorting (by ROI, effort, impact, timeline) - -### 3. Health Score Transparency -- Formula: 60% position + 30% CTR + 10% growth -- Benchmarked against 3.1% industry average -- Comparable over time (track improvement) -- Interpretable (0-100 scale with descriptions) - -### 4. Phased Implementation -- Phase 1: Core ranking and health metrics -- Phase 2: Trend analysis and competitive positioning -- Phase 3: Alerts, forecasting, exports -- Each phase adds value independently - ---- - -## ๐Ÿ“Š API Summary - -| Endpoint | Status | Response Time | Key Data | -|----------|--------|---------------|----------| -| `/gsc/strategy-insights` | โœ… Ready | 4-8s | Opportunities, health, summary | -| `/gsc/opportunity-ranking` | โœ… Ready | 4-8s | Ranked opps, filterable | -| `/gsc/health-metrics` | โœ… Ready | 2-4s | Health score, distribution | -| `/gsc/trend-analysis` | ๐Ÿ“‹ Framework | 3-6s | Trends (Phase 2) | - -**Total Lines of Code Added**: -- Service: ~700 lines -- Router endpoints: ~400 lines -- Request models: ~50 lines -- **Total: ~1,150 lines** - ---- - -## ๐ŸŽจ Dashboard Layout (Planned) - -``` -SEO Dashboard โ†’ GSC Insights Tab -โ”œโ”€ Quick Stats Row -โ”‚ โ”œโ”€ Health Score: 68/100 (โ†“ 5%) -โ”‚ โ”œโ”€ Opportunities: 23 total (3 CRITICAL) -โ”‚ โ”œโ”€ Page 1 Keywords: 145 of 250 (58%) -โ”‚ โ””โ”€ Avg Position: 7.2 -โ”‚ -โ”œโ”€ Quick Wins Panel (Positions 4-10) -โ”‚ โ”œโ”€ Python productivity tools (ROI: 87, Effort: 2h) -โ”‚ โ”œโ”€ FastAPI tutorial (ROI: 84, Effort: 3h) -โ”‚ โ””โ”€ JavaScript promises (ROI: 72, Effort: 4h) -โ”‚ -โ”œโ”€ Keyword Gaps Panel (Positions 11-20) -โ”‚ โ”œโ”€ Machine learning basics (ROI: 76, Effort: 12h) -โ”‚ โ””โ”€ Python concurrency (ROI: 58, Effort: 20h) -โ”‚ -โ””โ”€ Trend Chart (Phase 2) - โ””โ”€ Position, Impressions, Clicks, CTR trends -``` - ---- - -## โœ… Ready For - -### Frontend Development -- Hook created and working -- API contracts finalized -- Request/response formats documented -- Error handling in place -- Rate limiting configured - -### Integration Testing -- All endpoints callable -- Data models validated -- Error scenarios handled -- Response times verified - -### User Testing -- UI components ready to build -- Data structure understood -- Use cases documented -- Examples provided - ---- - -## ๐Ÿš€ Next Steps (Frontend Phase) - -### Immediate (This Sprint) -1. **Create Frontend Hook** - - `useGSCStrategyInsights()` hook (100-150 lines) - - State management with Zustand or React Context - - localStorage caching for performance - - Auto-refresh timer configuration - -2. **Build Core Components** - - StrategyInsightsPanel (main container) - - HealthMetricsWidget (score + trend) - - OpportunitiesList (opportunities display) - - Severity badge and formatting - -3. **Integrate with SEO Dashboard** - - Add "GSC Insights" tab - - Wire hook to components - - Add to dashboard navigation - - Mobile-responsive layout - -### Testing Phase -- Integration tests (frontend โ†” backend) -- Performance tests (load times) -- Error scenario tests -- User acceptance testing - -### Phase 2 Enhancements -- TrendChart component (historical data) -- Competitive analysis panel -- Alert/notification system -- Export functionality - ---- - -## ๐Ÿ“ˆ Success Metrics - -| Metric | Target | Notes | -|--------|--------|-------| -| Dashboard Load | <2s | Initial data fetch | -| API Response | <8s | Strategy insights | -| User Engagement | >60% | Using insights feature | -| Rank Improvement | +15-25% | 3-month impact | -| Click Growth | +12-18% | 3-month impact | - ---- - -## ๐Ÿ”’ Production Readiness - -### Backend โœ… READY -- Error handling comprehensive -- Input validation in place -- Rate limiting configured -- Logging in place -- Security checks integrated - -### API โœ… READY -- Endpoints defined and tested -- Request/response contracts clear -- Documentation complete -- Examples provided -- Error responses formatted - -### Data Models โœ… READY -- All models defined -- Validation rules applied -- Optional fields specified -- Default values configured - -### Code Quality โœ… READY -- No syntax errors -- Follows existing patterns -- Type hints included -- Comments added -- Imports verified - ---- - -## ๐Ÿ“š Documentation - -**Files Created**: -1. `GSC_DASHBOARD_ADAPTATION_PLAN.md` (4,000 words) - - High-level overview - - Architecture design - - Phase planning - - Success metrics - -2. `GSC_DASHBOARD_INTEGRATION_GUIDE.md` (6,000 words) - - Detailed API reference - - Component specifications - - Data models - - Testing strategy - - Usage examples - -3. Session memory notes - - Progress tracking - - Implementation status - - Remaining work - ---- - -## ๐Ÿ’ฌ Key Concepts Explained - -### ROI Score -The ROI score (0-100) combines 4 factors to determine opportunity priority: -- **40% Traffic Impact**: How many clicks can you gain? -- **30% Ease**: How hard is this to implement? -- **20% Competitive**: Is this a unique advantage? -- **10% Momentum**: Are keywords trending up/down? - -### Health Score -The health score (0-100) shows overall SEO status: -- **60% Keywords**: % of keywords ranking on page 1 -- **30% CTR**: Click-through rate vs 3.1% benchmark -- **10% Growth**: Are metrics improving? - -### Severity Levels -Severity guides when to prioritize work: -- **CRITICAL** (80-100 ROI): Do this now (next 0-2 weeks) -- **HIGH** (60-79 ROI): Do this soon (1-4 weeks) -- **MEDIUM** (40-59 ROI): Do this eventually (2-8 weeks) -- **LOW** (20-39 ROI): Do this when you have time -- **WATCH** (<20 ROI): Just monitor - ---- - -## ๐Ÿ“ฆ Project Artifacts - -### Code Files -``` -backend/services/seo_tools/gsc_strategy_insights_service.py - โ””โ”€ 700+ lines, fully tested - -backend/routers/seo_tools.py - โ””โ”€ 400+ lines added (4 new endpoints) -``` - -### Documentation Files -``` -GSC_DASHBOARD_ADAPTATION_PLAN.md - โ””โ”€ 4,000+ words - -GSC_DASHBOARD_INTEGRATION_GUIDE.md - โ””โ”€ 6,000+ words - -/memories/session/gsc-dashboard-adaptation-progress.md - โ””โ”€ Progress tracking -``` - ---- - -## ๐ŸŽ“ What We Learned - -### Architectural Insights -1. **Service Reuse**: Wrapping existing services is cleaner than duplication -2. **Context Matters**: Same data, different contexts = different analysis -3. **Transparency Matters**: Clear formulas build user trust - -### Design Patterns -1. **Separation of Concerns**: Service handles logic, router handles HTTP -2. **Composition Over Inheritance**: GSCStrategyInsights wraps, not extends -3. **Progressive Enhancement**: Phase 1 โ†’ 2 โ†’ 3 adds value at each step - -### Technical Excellence -1. **Type Safety**: Pydantic models ensure data quality -2. **Error Handling**: Graceful degradation for all failure scenarios -3. **Documentation**: Clear contracts make integration easy - ---- - -## โฑ๏ธ Time Investment - -| Phase | Task | Time | Status | -|-------|------|------|--------| -| 1 | Planning & design | 30 min | โœ… | -| 1 | Service creation | 60 min | โœ… | -| 2 | API endpoints | 30 min | โœ… | -| 2 | Documentation | 90 min | โœ… | -| 3 | Frontend hook | 60-90 min | โญ๏ธ | -| 3 | Frontend components | 60-90 min | โญ๏ธ | -| 3 | Integration & testing | 45-60 min | โญ๏ธ | - -**Total Phase 1-2**: ~4.5 hours -**Remaining (Phase 3)**: ~3.5-4 hours -**Total Project**: ~8 hours - ---- - -## ๐Ÿ Final Status - -### โœ… COMPLETE -- Backend service -- API endpoints -- Data models -- Documentation -- Error handling -- Input validation - -### โญ๏ธ NEXT -- Frontend hook -- Dashboard components -- Integration testing -- User acceptance testing - -### ๐Ÿ“‹ READY -- Production deployment -- User training -- Analytics setup -- Monitoring configuration - ---- - -**Backend & API Implementation**: โœ… COMPLETE -**Ready for Frontend Development**: โœ… YES -**Production Deployment**: โœ… READY - -Next milestone: Frontend Hook & Components Implementation diff --git a/GSC_DASHBOARD_IMPLEMENTATION_CHECKLIST.md b/GSC_DASHBOARD_IMPLEMENTATION_CHECKLIST.md deleted file mode 100644 index 08c52108..00000000 --- a/GSC_DASHBOARD_IMPLEMENTATION_CHECKLIST.md +++ /dev/null @@ -1,481 +0,0 @@ -# GSC Dashboard Adaptation - Implementation Checklist - -## โœ… Phase 1 & 2 Complete - Ready for Phase 3 - ---- - -## ๐Ÿ“‹ PHASE 1: Analysis & Planning โœ… - -- [x] **Understand SEO Dashboard Structure** - - Located main dashboard component - - Identified tab-based layout - - Found Zustand store integration - - Reviewed existing GSC tools - -- [x] **Analyze Requirements** - - Difference from Blog Writer use case - - Dashboard-specific data needs - - Performance requirements - - User expectations - -- [x] **Design Architecture** - - Service composition model - - ROI scoring formula - - Health metrics calculation - - Data flow diagram - - Component hierarchy - -- [x] **Plan Implementation** - - Phased approach (3 phases) - - Time estimates - - Dependencies mapping - - Resource allocation - ---- - -## ๐Ÿ› ๏ธ PHASE 2: Backend Implementation โœ… - -### Service Creation โœ… -- [x] Create `GSCStrategyInsightsService` class -- [x] Implement `get_dashboard_strategy()` entry point -- [x] Implement `_get_ranked_opportunities()` with ROI scoring -- [x] Implement `_calculate_health_metrics()` with formula -- [x] Implement `_generate_quick_summary()` for text insights -- [x] Implement `_analyze_performance_trends()` framework (Phase 2) -- [x] Implement `_analyze_competitive_positioning()` framework (Phase 2) -- [x] Add `_calculate_roi_score()` formula (40/30/20/10 weighted) -- [x] Add `_get_severity()` classification method -- [x] Define error handling and logging -- [x] Add service initialization with dependency injection - -### Data Models โœ… -- [x] Create `StrategyOpportunity` dataclass -- [x] Create `TrendMetric` dataclass -- [x] Create `HealthMetrics` dataclass -- [x] Create `StrategyType` enum -- [x] Create `OpportunitySeverity` enum -- [x] Add field validation and documentation -- [x] Define type hints for all fields - -### API Integration โœ… -- [x] Create `GSCStrategyInsightsRequest` model -- [x] Create `GSCOpportunityRankingRequest` model -- [x] Create `GSCHealthMetricsRequest` model -- [x] Create `GSCTrendAnalysisRequest` model -- [x] Add import statement to seo_tools.py -- [x] Implement `POST /api/seo/gsc/strategy-insights` endpoint -- [x] Implement `POST /api/seo/gsc/opportunity-ranking` endpoint -- [x] Implement `POST /api/seo/gsc/health-metrics` endpoint -- [x] Implement `POST /api/seo/gsc/trend-analysis` endpoint -- [x] Add error handling to all endpoints -- [x] Add logging and monitoring -- [x] Add request validation -- [x] Add response formatting - -### Code Quality โœ… -- [x] All syntax valid (no errors) -- [x] Type hints on all functions -- [x] Docstrings on all methods -- [x] Imports verified and correct -- [x] Error handling comprehensive -- [x] Logging in place -- [x] Comments where needed -- [x] Follows existing patterns - ---- - -## ๐Ÿ“š PHASE 2: Documentation โœ… - -- [x] **Create GSC_DASHBOARD_ADAPTATION_PLAN.md** - - Current state analysis - - Architecture overview - - Endpoint specifications - - Frontend component design - - Data model details - - Implementation roadmap - - Success metrics - -- [x] **Create GSC_DASHBOARD_INTEGRATION_GUIDE.md** - - Comprehensive API reference - - Data model documentation - - ROI formula explanation - - Frontend hook specification - - Component specifications - - Dashboard layout diagrams - - Data flow diagrams - - Testing strategy - - Usage examples - - Deployment checklist - -- [x] **Create GSC_DASHBOARD_COMPLETION_SUMMARY.md** - - What was accomplished - - Deliverables list - - Architecture highlights - - Key design decisions - - API summary - - Success metrics - - Next steps - - Time investment breakdown - -- [x] **Create Session Memory Notes** - - Progress tracking - - Key formulas - - Implementation status - - Remaining work - ---- - -## ๐Ÿš€ PHASE 3: Frontend Implementation (NEXT) - -### Frontend Hook โญ๏ธ -- [ ] Create `useGSCStrategyInsights()` hook - - [ ] Define hook interface and return types - - [ ] State management (opportunities, health, trends, loading, error) - - [ ] API call methods (fetchStrategyInsights, fetchOpportunities, etc.) - - [ ] Caching logic (localStorage with TTL) - - [ ] Auto-refresh functionality - - [ ] Error handling and retry logic - - [ ] Type definitions (.ts) - - [ ] JSDoc documentation - -### Dashboard Components โญ๏ธ -- [ ] Create `GSCStrategyPanel.tsx` - - [ ] Main container component - - [ ] Tab navigation (quick wins, gaps, etc.) - - [ ] Integration with useGSCStrategyInsights hook - - [ ] Loading and error states - - [ ] Mobile responsive layout - - [ ] Styling (matches dashboard theme) - -- [ ] Create `HealthMetricsWidget.tsx` - - [ ] Health score display (large number) - - [ ] Score trend indicator (โ†‘/โ†“/โ†’) - - [ ] Keyword distribution chart - - [ ] CTR vs benchmark comparison - - [ ] Color-coded status - - [ ] Responsive design - -- [ ] Create `OpportunitiesList.tsx` - - [ ] Table/list view of opportunities - - [ ] Sortable by ROI, effort, impact, timeline - - [ ] Filterable by severity - - [ ] Expandable rows for details - - [ ] Severity badges (color coded) - - [ ] Action buttons (view, edit, etc.) - - [ ] Pagination for large lists - -- [ ] Create `TrendChart.tsx` (Phase 2B) - - [ ] Recharts integration - - [ ] Multiple metric selection - - [ ] Time range picker - - [ ] Trend visualization - - [ ] Data point tooltips - -### Integration โญ๏ธ -- [ ] Update SEODashboard.tsx - - [ ] Add "GSC Insights" tab - - [ ] Import and render components - - [ ] Pass props from dashboard - - [ ] Handle data updates - - [ ] Mobile view optimization - -- [ ] Add to Navigation - - [ ] Update dashboard tabs - - [ ] Add icons/labels - - [ ] Update URL routing if needed - -### Styling โญ๏ธ -- [ ] Apply dashboard theme colors -- [ ] Responsive breakpoints (mobile, tablet, desktop) -- [ ] Accessibility (ARIA labels, keyboard nav) -- [ ] Loading states and animations -- [ ] Error state displays - ---- - -## ๐Ÿงช PHASE 3: Testing (Concurrent with Implementation) - -### Unit Tests โญ๏ธ -- [ ] Hook tests - - [ ] Test state initialization - - [ ] Test API calls - - [ ] Test caching logic - - [ ] Test error handling - -- [ ] Component tests - - [ ] Render tests - - [ ] Props handling - - [ ] Event handlers - - [ ] State updates - - [ ] Error states - -### Integration Tests โญ๏ธ -- [ ] End-to-end flow - - [ ] Dashboard load โ†’ API call โ†’ Component render - - [ ] Data refresh and caching - - [ ] Filter and sort functionality - - [ ] Navigation between tabs - -- [ ] API tests - - [ ] All 4 endpoints respond correctly - - [ ] Data validation passes - - [ ] Error responses formatted - - [ ] Response times acceptable - -### Performance Tests โญ๏ธ -- [ ] Dashboard load time <2s -- [ ] API response time <8s -- [ ] Component rendering smooth -- [ ] No memory leaks -- [ ] Caching effective - ---- - -## ๐ŸŽฏ Testing Scenarios - -### Happy Path โœ… -- [x] Backend service implemented and testable -- [ ] User opens SEO Dashboard โ†’ GSC Insights tab loads -- [ ] Dashboard fetches strategy insights -- [ ] Components render with data -- [ ] User filters/sorts opportunities -- [ ] User views details - -### Error Handling โญ๏ธ -- [ ] API error โ†’ show error message -- [ ] Invalid site URL โ†’ show validation error -- [ ] Timeout โ†’ show retry button -- [ ] No data โ†’ show empty state -- [ ] Network error โ†’ show offline message - -### Edge Cases โญ๏ธ -- [ ] Empty results (no opportunities) -- [ ] Very large results (1000+ keywords) -- [ ] Slow connection (simulate 5G) -- [ ] Concurrent requests -- [ ] Session timeout/re-auth - ---- - -## ๐Ÿ“Š PHASE 4: Testing & Documentation (Final) - -### Integration Testing -- [ ] All components working together -- [ ] Data consistency across views -- [ ] Navigation works correctly -- [ ] Authentication flow -- [ ] Error recovery - -### Performance Testing -- [ ] Load time with 100 keywords -- [ ] Load time with 1000 keywords -- [ ] Load time with 10000 keywords -- [ ] API response times -- [ ] Memory usage - -### User Acceptance Testing -- [ ] SEO manager acceptance -- [ ] Content team acceptance -- [ ] Executive stakeholder approval -- [ ] Accessibility compliance -- [ ] Cross-browser testing - -### Documentation -- [ ] User guide (how to use dashboard) -- [ ] Strategy guide (how to act on insights) -- [ ] API documentation (for future integrations) -- [ ] Troubleshooting guide -- [ ] Training materials - ---- - -## ๐Ÿ“ Files to Create/Modify - -### New Files to Create -``` -frontend/src/hooks/ - โ””โ”€ useGSCStrategyInsights.ts [PHASE 3] - -frontend/src/components/SEODashboard/ - โ””โ”€ GSCStrategyPanel.tsx [PHASE 3] - โ””โ”€ HealthMetricsWidget.tsx [PHASE 3] - โ””โ”€ OpportunitiesList.tsx [PHASE 3] - โ””โ”€ TrendChart.tsx [PHASE 3] - -frontend/src/types/ - โ””โ”€ gsc-dashboard.types.ts [PHASE 3] -``` - -### Files Already Modified -``` -backend/services/seo_tools/gsc_strategy_insights_service.py โœ… CREATED -backend/routers/seo_tools.py โœ… MODIFIED -``` - -### Documentation Files Created -``` -GSC_DASHBOARD_ADAPTATION_PLAN.md โœ… CREATED -GSC_DASHBOARD_INTEGRATION_GUIDE.md โœ… CREATED -GSC_DASHBOARD_COMPLETION_SUMMARY.md โœ… CREATED -/memories/session/gsc-dashboard-adaptation-progress.md โœ… CREATED -``` - ---- - -## ๐Ÿ” Code Review Checklist - -### Backend Service โœ… -- [x] Proper error handling -- [x] Type hints on all functions -- [x] Docstrings present -- [x] Imports organized -- [x] Follows existing patterns -- [x] No hardcoded values -- [x] Logging in place -- [x] No duplicate code - -### API Routes โœ… -- [x] Request models validated -- [x] Response models correct -- [x] Error handling in place -- [x] Logging added -- [x] Authentication checked -- [x] Rate limiting considered -- [x] Docstrings present -- [x] Consistent with existing endpoints - -### Documentation โœ… -- [x] Architecture clear -- [x] API contracts defined -- [x] Examples provided -- [x] Formulas explained -- [x] Data models detailed -- [x] Error cases covered -- [x] Testing strategy outlined -- [x] Deployment ready - ---- - -## ๐Ÿšข Deployment Readiness - -### Backend โœ… READY -- [x] Code complete -- [x] Error handling complete -- [x] Logging in place -- [x] Type hints added -- [x] Documentation done -- [ ] Database migrations (if needed) -- [ ] Environment variables configured -- [ ] Tests passing - -### Frontend โญ๏ธ READY (After Phase 3) -- [ ] Code complete -- [ ] Components tested -- [ ] Styling complete -- [ ] Accessibility verified -- [ ] Mobile responsive -- [ ] Error handling -- [ ] Documentation done -- [ ] Tests passing - -### Production -- [ ] Staging deployment successful -- [ ] Performance verified -- [ ] Security review passed -- [ ] Load testing passed -- [ ] UAT sign-off -- [ ] Monitoring configured -- [ ] Runbooks created -- [ ] Team trained - ---- - -## ๐Ÿ“ˆ Success Criteria - -### Dashboard Metrics -- [x] ROI formula mathematically sound -- [x] Health score calculation correct -- [x] Severity levels appropriate -- [ ] Dashboard loads <2s -- [ ] API responds <8s -- [ ] Components render smoothly -- [ ] Error rates <0.1% -- [ ] User engagement >60% - -### User Satisfaction -- [ ] Insights are actionable -- [ ] Priorities are clear -- [ ] Data is accurate -- [ ] UI is intuitive -- [ ] Load times acceptable -- [ ] Mobile experience good -- [ ] Help documentation clear -- [ ] Support tickets minimal - -### Business Impact -- [ ] Rank improvement +15-25% -- [ ] Click growth +12-18% -- [ ] Content quality improved -- [ ] Team efficiency +20% -- [ ] Time to insight <5 min -- [ ] Decision confidence increased - ---- - -## ๐Ÿ“ž Contact & Support - -**Backend Service** -Location: `backend/services/seo_tools/gsc_strategy_insights_service.py` -Status: โœ… COMPLETE & TESTED - -**API Endpoints** -Location: `backend/routers/seo_tools.py` -Status: โœ… COMPLETE & READY - -**Documentation** -- Architecture: `GSC_DASHBOARD_ADAPTATION_PLAN.md` -- Integration: `GSC_DASHBOARD_INTEGRATION_GUIDE.md` -- Summary: `GSC_DASHBOARD_COMPLETION_SUMMARY.md` - ---- - -## โฑ๏ธ Timeline - -**Phase 1-2 (COMPLETED)**: 4.5 hours โœ… -- Analysis: 30 min โœ… -- Service creation: 60 min โœ… -- API endpoints: 30 min โœ… -- Documentation: 90 min โœ… -- QA/refinement: 30 min โœ… - -**Phase 3 (NEXT)**: 3-4 hours โญ๏ธ -- Frontend hook: 60 min โญ๏ธ -- Dashboard components: 90 min โญ๏ธ -- Integration: 30 min โญ๏ธ -- Testing: 30 min โญ๏ธ - -**Phase 4 (FINAL)**: 2-3 hours โญ๏ธ -- Integration testing: 45 min โญ๏ธ -- Performance testing: 30 min โญ๏ธ -- Documentation: 30 min โญ๏ธ -- Deployment: 15 min โญ๏ธ - -**Total Project**: ~10 hours - ---- - -## โœจ Final Status - -**Backend & API Implementation**: โœ… **COMPLETE** -**Documentation**: โœ… **COMPLETE** -**Code Quality**: โœ… **EXCELLENT** -**Ready for Frontend**: โœ… **YES** -**Production Ready**: โœ… **YES (Backend)** - ---- - -**Next Action**: Begin Phase 3 - Frontend Hook & Components Implementation - -*Last Updated: May 27, 2026* -*Current Phase: 3 (Frontend Integration)* -*Next Milestone: useGSCStrategyInsights() Hook Creation* diff --git a/GSC_DASHBOARD_INTEGRATION_GUIDE.md b/GSC_DASHBOARD_INTEGRATION_GUIDE.md deleted file mode 100644 index 8f3e5512..00000000 --- a/GSC_DASHBOARD_INTEGRATION_GUIDE.md +++ /dev/null @@ -1,622 +0,0 @@ -# GSC Strategy Insights Service - SEO Dashboard Integration Guide - -**Date**: May 27, 2026 -**Phase**: SEO Dashboard Integration (Post-Blog Writer) -**Status**: โœ… Core Service & API Endpoints Complete - ---- - -## ๐Ÿ“š Overview - -The **GSC Strategy Insights Service** adapts the GSC Brainstorm technology for SEO Dashboard use cases. While Blog Writer focuses on "What should I blog about?", the dashboard focuses on "What's my overall SEO status and what should I prioritize?" - -### Key Difference from Blog Writer - -| Aspect | Blog Writer (GSCBrainstormService) | SEO Dashboard (GSCStrategyInsightsService) | -|--------|-----------------------------------|------------------------------------------| -| Question | "What blog post should I write?" | "What should I prioritize for SEO?" | -| Context | Content creation focus | Strategic monitoring focus | -| Time Horizon | Next post (0-2 weeks) | Ongoing (3-12 months) | -| Audience | Writers | SEO managers, strategists | -| Primary Output | 5 categories of suggestions | ROI-ranked opportunities + health metrics | -| Integration | Modal in Blog Writer | Dashboard panels & widgets | -| Refresh | On-demand | Automated (hourly/daily) | - ---- - -## ๐Ÿ—๏ธ Architecture - -### Service Layer - -**File**: `backend/services/seo_tools/gsc_strategy_insights_service.py` - -**Main Class**: `GSCStrategyInsightsService` - -**Key Methods**: - -1. **`get_dashboard_strategy(user_id, site_url, ...)`** - - Main entry point for dashboard - - Orchestrates all analysis tasks - - Returns: Comprehensive strategy data - -2. **`_get_ranked_opportunities(site_url, top_n)`** - - Returns ROI-weighted ranked opportunities - - Uses formula: 40% traffic + 30% ease + 20% competitive + 10% momentum - - Severity levels: CRITICAL, HIGH, MEDIUM, LOW, WATCH - -3. **`_calculate_health_metrics(site_url)`** - - Health score (0-100) - - Position distribution - - CTR benchmarking - - Growth indicators - -4. **`_generate_quick_summary(site_url)`** - - Text summary for dashboard display - - Key metric highlights - - One-liner insights - -5. **`_analyze_performance_trends(site_url)`** [Phase 2] - - Historical trend analysis - - Seasonal pattern detection - - Momentum scoring - -6. **`_analyze_competitive_positioning(site_url)`** [Phase 2] - - Competitor keyword analysis - - Market gap identification - - Competitive benchmarks - -### API Layer - -**File**: `backend/routers/seo_tools.py` - -**New Endpoints**: - -#### 1. `POST /api/seo/gsc/strategy-insights` -```json -Request: -{ - "site_url": "https://example.com", - "include_trends": true, - "include_competitive": false, - "top_n": 20 -} - -Response: -{ - "status": "success", - "data": { - "opportunities": [...], - "health_metrics": {...}, - "quick_summary": "..." - } -} -``` - -**Purpose**: Get comprehensive dashboard strategy - -#### 2. `POST /api/seo/gsc/opportunity-ranking` -```json -Request: -{ - "site_url": "https://example.com", - "ranking_metric": "roi_score", - "severity_filter": "critical", - "limit": 20 -} - -Response: -{ - "status": "success", - "data": { - "opportunities": [ - { - "type": "quick_win", - "keyword": "Python async", - "roi_score": 87.5, - "priority": 1, - "effort_hours": 2, - "timeline_weeks": 1, - "severity": "critical", - ... - } - ], - "total_opportunities": 45 - } -} -``` - -**Purpose**: Get ROI-ranked opportunities (filterable by severity/metric) - -#### 3. `POST /api/seo/gsc/health-metrics` -```json -Request: -{ - "site_url": "https://example.com", - "include_distribution": true, - "include_trends": true -} - -Response: -{ - "status": "success", - "data": { - "health_score": 68, - "health_trend": "stable", - "total_keywords": 250, - "page_1_keywords": 145, - "avg_position": 7.2, - "avg_ctr": 2.8, - "ctr_vs_benchmark": -0.3, - ... - } -} -``` - -**Purpose**: Get health metrics for dashboard widget - -#### 4. `POST /api/seo/gsc/trend-analysis` -```json -Request: -{ - "site_url": "https://example.com", - "metric": "all", - "days_back": 90 -} - -Response: -{ - "status": "pending", - "message": "Trend analysis requires historical data collection", - "note": "To be implemented in Phase 2" -} -``` - -**Purpose**: Analyze performance trends (Phase 2 feature) - ---- - -## ๐Ÿ“Š Data Models - -### Request Models - -```python -class GSCStrategyInsightsRequest(BaseModel): - site_url: HttpUrl - include_trends: bool = True - include_competitive: bool = False - top_n: int = 20 # 5-100 - -class GSCOpportunityRankingRequest(BaseModel): - site_url: HttpUrl - ranking_metric: str = "roi_score" # roi_score/effort/impact/timeline - severity_filter: Optional[str] = None # critical/high/medium/low/watch - limit: int = 20 # 5-100 - -class GSCHealthMetricsRequest(BaseModel): - site_url: HttpUrl - include_distribution: bool = True - include_trends: bool = True - -class GSCTrendAnalysisRequest(BaseModel): - site_url: HttpUrl - metric: str = "all" # position/impressions/clicks/ctr/all - days_back: int = 90 # 7-365 -``` - -### Response Models - -```python -@dataclass -class StrategyOpportunity: - type: StrategyType # quick_win, keyword_gap, content_opportunity, etc. - keyword: str - description: str - roi_score: float # 0-100 - priority: int # 1-10 - effort_hours: float - timeline_weeks: int - current_position: float - impressions: int - current_ctr: float - estimated_impact: float # Monthly clicks gained - severity: OpportunitySeverity # CRITICAL, HIGH, MEDIUM, LOW, WATCH - recommendations: List[str] - related_keywords: List[str] - timestamp: datetime - -@dataclass -class HealthMetrics: - health_score: int # 0-100 - score_trend: str # up/down/stable - score_change: float # Percentage - total_keywords: int - page_1_keywords: int - avg_position: float - avg_ctr: float - total_impressions: int - total_clicks: int - opportunities_count: int - timestamp: datetime -``` - ---- - -## ๐ŸŽฏ ROI Scoring Formula - -``` -ROI_Score = 0.40 ร— traffic_impact + - 0.30 ร— ease_of_implementation + - 0.20 ร— competitive_advantage + - 0.10 ร— momentum_score - -where: - traffic_impact = (estimated_clicks_gained / max_possible) ร— 100 - ease_of_implementation = 100 ร— (inverse of effort hours) - competitive_advantage = keyword relevance to market gaps - momentum_score = current_trend direction and acceleration -``` - -### Severity Levels - -| Severity | ROI Score | Priority | Timeline | -|----------|-----------|----------|----------| -| CRITICAL | 80-100 | 1-2 (immediate) | 0-2 weeks | -| HIGH | 60-79 | 3-4 (high) | 1-4 weeks | -| MEDIUM | 40-59 | 5-6 (medium) | 2-8 weeks | -| LOW | 20-39 | 7-8 (low) | 1-3 months | -| WATCH | <20 | 9-10 (monitoring) | 3+ months | - ---- - -## ๐Ÿ”Œ Frontend Integration - -### Hook: `useGSCStrategyInsights()` - -```typescript -const { - // State - strategyInsights, - healthMetrics, - opportunities, - isLoading, - error, - - // Methods - fetchStrategyInsights, - fetchOpportunities, - fetchHealthMetrics, - refetchInsights, - - // Helpers - getOpportunitiesBySeverity, - filterByMetric, - calculateROI, -} = useGSCStrategyInsights({ - siteUrl: 'https://example.com', - autoRefresh: true, - refreshInterval: 3600000, // 1 hour -}); -``` - -### Components - -#### 1. StrategyInsightsPanel -```typescript - navigateToDetails(opp)} - isLoading={isLoading} -/> -``` - -#### 2. HealthMetricsWidget -```typescript - -``` - -#### 3. OpportunitiesList -```typescript - showDetails(opp)} -/> -``` - -#### 4. TrendChart -```typescript - updateChart(period)} -/> -``` - ---- - -## ๐Ÿ“ˆ Dashboard Layout - -### SEO Dashboard - GSC Insights Tab - -``` -โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” -โ”‚ GSC Strategy Insights ๐Ÿ”„ Refresh | โš™๏ธ Filter โ”‚ -โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค -โ”‚ โ”‚ -โ”‚ โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” โ”‚ -โ”‚ โ”‚ Health Score โ”‚ Opportunities โ”‚ Top Keywords โ”‚ โ”‚ -โ”‚ โ”‚ โ”‚ CRITICAL: 3 โ”‚ 1. Python async โ”‚ โ”‚ -โ”‚ โ”‚ 68/100 โ”‚ HIGH: 7 โ”‚ 2. FastAPI โ”‚ โ”‚ -โ”‚ โ”‚ โ†“ 5% (was 73) โ”‚ MEDIUM: 12 โ”‚ 3. Async/await โ”‚ โ”‚ -โ”‚ โ”‚ โ”‚ LOW: 8 โ”‚ 4. LLM tutorial โ”‚ โ”‚ -โ”‚ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ โ”‚ -โ”‚ โ”‚ -โ”‚ โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” โ”‚ -โ”‚ โ”‚ Quick Wins (Positions 4-10) - Click to expand โ”‚ โ”‚ -โ”‚ โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค โ”‚ -โ”‚ โ”‚ ๐Ÿ”ด CRITICAL - Python productivity tools (Pos 7) โ”‚ โ”‚ -โ”‚ โ”‚ ROI: 87 | Effort: 2h | Impact: +45/mo โ”‚ โ”‚ -โ”‚ โ”‚ โ†’ Update title & meta description โ”‚ โ”‚ -โ”‚ โ”‚ โ”‚ โ”‚ -โ”‚ โ”‚ ๐Ÿ”ด CRITICAL - FastAPI tutorial (Pos 6) โ”‚ โ”‚ -โ”‚ โ”‚ ROI: 84 | Effort: 3h | Impact: +32/mo โ”‚ โ”‚ -โ”‚ โ”‚ โ†’ Improve content depth โ”‚ โ”‚ -โ”‚ โ”‚ โ”‚ โ”‚ -โ”‚ โ”‚ ๐ŸŸ  HIGH - JavaScript promises (Pos 5) โ”‚ โ”‚ -โ”‚ โ”‚ ROI: 72 | Effort: 4h | Impact: +28/mo โ”‚ โ”‚ -โ”‚ โ”‚ โ†’ Enhance examples and explanations โ”‚ โ”‚ -โ”‚ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ โ”‚ -โ”‚ โ”‚ -โ”‚ โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” โ”‚ -โ”‚ โ”‚ Keyword Gaps (Positions 11-20) - Click to expand โ”‚ โ”‚ -โ”‚ โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค โ”‚ -โ”‚ โ”‚ ๐ŸŸ  HIGH - Machine learning basics (Pos 15) โ”‚ โ”‚ -โ”‚ โ”‚ ROI: 76 | Effort: 12h | Impact: +120/mo โ”‚ โ”‚ -โ”‚ โ”‚ โ†’ Create comprehensive beginner's guide โ”‚ โ”‚ -โ”‚ โ”‚ โ”‚ โ”‚ -โ”‚ โ”‚ ๐ŸŸก MEDIUM - Python concurrency (Pos 18) โ”‚ โ”‚ -โ”‚ โ”‚ ROI: 58 | Effort: 20h | Impact: +85/mo โ”‚ โ”‚ -โ”‚ โ”‚ โ†’ Build topical authority โ”‚ โ”‚ -โ”‚ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ โ”‚ -โ”‚ โ”‚ -โ”‚ โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” โ”‚ -โ”‚ โ”‚ Performance Trend (Last 90 days) [Phase 2] โ”‚ โ”‚ -โ”‚ โ”‚ [Chart: Position trend, Impressions, Clicks, CTR] โ”‚ โ”‚ -โ”‚ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ โ”‚ -โ”‚ โ”‚ -โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ -``` - -### Color Coding - -- ๐Ÿ”ด CRITICAL (80-100 ROI): Red, highest priority -- ๐ŸŸ  HIGH (60-79 ROI): Orange, important -- ๐ŸŸก MEDIUM (40-59 ROI): Yellow, should do -- ๐ŸŸข LOW (20-39 ROI): Green, nice to have -- โšช WATCH (<20 ROI): Gray, monitoring - ---- - -## ๐Ÿ”„ Data Flow - -``` -User Opens SEO Dashboard (GSC Insights Tab) - โ†“ -useGSCStrategyInsights() Hook - โ†“ -POST /api/seo/gsc/strategy-insights - โ†“ -GSCStrategyInsightsService.get_dashboard_strategy() - โ”œโ”€ GSCBrainstormService.brainstorm_topics() [reuse existing] - โ”œโ”€ _get_ranked_opportunities() [ROI ranking] - โ”œโ”€ _calculate_health_metrics() [Health score] - โ””โ”€ _generate_quick_summary() [Text summary] - โ†“ -Response with: - - Ranked opportunities - - Health metrics - - Quick summary - โ†“ -Frontend Components Update: - - StrategyInsightsPanel - - HealthMetricsWidget - - OpportunitiesList - โ†“ -User selects opportunity or filters - โ†“ -Frontend state updates or new API call -``` - ---- - -## โœ… Implementation Status - -### Phase 1: Core Service โœ… COMPLETE - -- [x] GSCStrategyInsightsService class -- [x] ROI scoring formula -- [x] Opportunity ranking -- [x] Health metrics calculation -- [x] Service initialization & error handling -- [x] API endpoint integration -- [x] Request/response models - -### Phase 2: Frontend (This Sprint) - -- [ ] useGSCStrategyInsights() hook -- [ ] StrategyInsightsPanel component -- [ ] HealthMetricsWidget component -- [ ] OpportunitiesList component -- [ ] TrendChart component (Phase 2B) -- [ ] Mobile responsive views -- [ ] Integration with SEO Dashboard tabs - -### Phase 3: Advanced Features (Future) - -- [ ] Trend analysis with historical data -- [ ] Competitive positioning analysis -- [ ] Impact forecasting -- [ ] Smart alerts & notifications -- [ ] Export functionality -- [ ] Scheduled reports - ---- - -## ๐Ÿงช Testing - -### Unit Tests -```python -# Test ROI scoring formula -def test_roi_score_calculation(): - service = GSCStrategyInsightsService() - roi = service._calculate_roi_score( - traffic_impact=80, - ease=70, - competitive=60, - momentum=50 - ) - assert 0 <= roi <= 100 - assert roi == expected_value - -# Test severity classification -def test_severity_classification(): - assert service._get_severity(85) == OpportunitySeverity.CRITICAL - assert service._get_severity(70) == OpportunitySeverity.HIGH - assert service._get_severity(50) == OpportunitySeverity.MEDIUM - assert service._get_severity(25) == OpportunitySeverity.LOW - assert service._get_severity(10) == OpportunitySeverity.WATCH -``` - -### Integration Tests -```python -# Test full strategy insights flow -async def test_get_dashboard_strategy(): - service = GSCStrategyInsightsService() - result = await service.get_dashboard_strategy( - user_id="test_user", - site_url="https://example.com", - top_n=20 - ) - assert result['status'] == 'success' - assert 'opportunities' in result['data'] - assert 'health_metrics' in result['data'] -``` - -### API Tests -```python -# Test endpoint -def test_strategy_insights_endpoint(client): - response = client.post( - "/api/seo/gsc/strategy-insights", - json={"site_url": "https://example.com"} - ) - assert response.status_code == 200 - assert response.json()['success'] == True -``` - ---- - -## ๐Ÿ“‹ API Reference - -### Endpoints Summary - -| Endpoint | Method | Purpose | Response Time | -|----------|--------|---------|----------------| -| `/gsc/strategy-insights` | POST | Dashboard strategy | 4-8s | -| `/gsc/opportunity-ranking` | POST | ROI-ranked opportunities | 4-8s | -| `/gsc/health-metrics` | POST | Health metrics | 2-4s | -| `/gsc/trend-analysis` | POST | Trend analysis (Phase 2) | 3-6s | - -### Error Responses - -```json -{ - "success": false, - "message": "Error in get_gsc_strategy_insights: ...", - "error_type": "ValueError", - "error_details": "Site URL not valid", - "timestamp": "2026-05-27T10:30:45.123Z" -} -``` - ---- - -## ๐ŸŽ“ Usage Examples - -### Example 1: Get Strategy Insights - -```bash -curl -X POST http://localhost:8000/api/seo/gsc/strategy-insights \ - -H "Authorization: Bearer $TOKEN" \ - -H "Content-Type: application/json" \ - -d '{ - "site_url": "https://example.com", - "include_trends": true, - "top_n": 20 - }' -``` - -### Example 2: Filter Critical Opportunities - -```bash -curl -X POST http://localhost:8000/api/seo/gsc/opportunity-ranking \ - -H "Authorization: Bearer $TOKEN" \ - -H "Content-Type: application/json" \ - -d '{ - "site_url": "https://example.com", - "severity_filter": "critical", - "limit": 10 - }' -``` - -### Example 3: Get Health Metrics - -```bash -curl -X POST http://localhost:8000/api/seo/gsc/health-metrics \ - -H "Authorization: Bearer $TOKEN" \ - -H "Content-Type: application/json" \ - -d '{ - "site_url": "https://example.com", - "include_distribution": true - }' -``` - ---- - -## ๐Ÿš€ Deployment Checklist - -- [x] Service class created -- [x] API endpoints implemented -- [x] Request/response models defined -- [ ] Frontend hook created -- [ ] Frontend components built -- [ ] Integration tests written -- [ ] Documentation complete -- [ ] Performance tested -- [ ] Error handling verified -- [ ] Deployed to staging -- [ ] User acceptance testing -- [ ] Deployed to production - ---- - -## ๐Ÿ“ž Support & Questions - -**Service Location**: `backend/services/seo_tools/gsc_strategy_insights_service.py` -**Router Location**: `backend/routers/seo_tools.py` -**Documentation**: [This file] - ---- - -**Status**: โœ… Core Implementation Complete -**Next Step**: Frontend Hook & Components Development diff --git a/backend/api/blog_writer/router.py b/backend/api/blog_writer/router.py index e3e7e5af..c8d592a8 100644 --- a/backend/api/blog_writer/router.py +++ b/backend/api/blog_writer/router.py @@ -71,6 +71,7 @@ class SEOApplyRecommendationsRequest(BaseModel): outline: List[Dict[str, Any]] = Field(default_factory=list, description="Outline structure for context") research: Dict[str, Any] = Field(default_factory=dict, description="Research data used for the blog") recommendations: List[RecommendationItem] = Field(..., description="Actionable recommendations to apply") + competitive_advantage: str | None = Field(default=None, description="Selected competitive advantage for emphasis") persona: Dict[str, Any] = Field(default_factory=dict, description="Persona settings if available") tone: str | None = Field(default=None, description="Desired tone override") audience: str | None = Field(default=None, description="Target audience override") @@ -688,9 +689,11 @@ async def get_section_continuity(section_id: str) -> Dict[str, Any]: @router.post("/flow-analysis/basic") -async def analyze_flow_basic(request: Dict[str, Any]) -> Dict[str, Any]: +async def analyze_flow_basic(request: Dict[str, Any], current_user: Dict[str, Any] = Depends(get_current_user)) -> Dict[str, Any]: """Analyze flow metrics for entire blog using single AI call (cost-effective).""" try: + user_id = str(current_user.get('id', '')) if current_user else None + request['user_id'] = user_id result = await service.analyze_flow_basic(request) return result except Exception as e: @@ -699,9 +702,11 @@ async def analyze_flow_basic(request: Dict[str, Any]) -> Dict[str, Any]: @router.post("/flow-analysis/advanced") -async def analyze_flow_advanced(request: Dict[str, Any]) -> Dict[str, Any]: +async def analyze_flow_advanced(request: Dict[str, Any], current_user: Dict[str, Any] = Depends(get_current_user)) -> Dict[str, Any]: """Analyze flow metrics for each section individually (detailed but expensive).""" try: + user_id = str(current_user.get('id', '')) if current_user else None + request['user_id'] = user_id result = await service.analyze_flow_advanced(request) return result except Exception as e: @@ -808,9 +813,12 @@ async def seo_metadata( # Publishing Endpoints +# NOTE: Real publishing bypasses this stub. Frontend calls platform-specific +# endpoints directly: /api/wix/publish and /api/wordpress/publish. +# This endpoint is kept as a placeholder for the future unified publish flow. @router.post("/publish", response_model=BlogPublishResponse) async def publish(request: BlogPublishRequest) -> BlogPublishResponse: - """Publish the blog post to the specified platform.""" + """Publish the blog post to the specified platform. [STUB - see note above]""" try: return await service.publish(request) except Exception as e: @@ -1209,6 +1217,9 @@ async def generate_introductions( class SaveCompleteBlogAssetRequest(BaseModel): title: str content: str + platform: Optional[str] = None + post_url: Optional[str] = None + post_id: Optional[str] = None seo_title: Optional[str] = None meta_description: Optional[str] = None focus_keyword: Optional[str] = None @@ -1233,6 +1244,19 @@ async def save_complete_blog_asset( full_content = f"# {request.title}\n\n{request.content}" + asset_metadata = { + "status": "published", + "focus_keyword": request.focus_keyword, + "categories": request.categories, + "word_count": len(full_content.split()), + } + if request.platform: + asset_metadata["platform"] = request.platform + if request.post_url: + asset_metadata["post_url"] = request.post_url + if request.post_id: + asset_metadata["post_id"] = request.post_id + asset_id = save_and_track_text_content( db=db, user_id=user_id, @@ -1242,12 +1266,7 @@ async def save_complete_blog_asset( description=request.meta_description or f"Complete published blog post: {request.title}", prompt=f"SEO Title: {request.seo_title or request.title}\nFocus Keyword: {request.focus_keyword or ''}", tags=["blog", "published"] + [t for t in (request.tags or []) if t], - asset_metadata={ - "status": "published", - "focus_keyword": request.focus_keyword, - "categories": request.categories, - "word_count": len(full_content.split()), - }, + asset_metadata=asset_metadata, subdirectory="published", file_extension=".md" ) @@ -1266,6 +1285,57 @@ async def save_complete_blog_asset( raise HTTPException(status_code=500, detail=str(e)) +@router.get("/publish-history") +async def get_publish_history( + current_user: Dict[str, Any] = Depends(get_current_user), + db: Session = Depends(get_db), + limit: int = 50, + offset: int = 0, +) -> Dict[str, Any]: + """Get publish history for the current user from the asset library.""" + try: + if not current_user: + raise HTTPException(status_code=401, detail="Authentication required") + + user_id = str(current_user.get('id', '')) + if not user_id: + raise HTTPException(status_code=401, detail="Invalid user ID in authentication token") + + svc = ContentAssetService(db) + assets, total = svc.get_user_assets( + user_id=user_id, + tags=["published"], + source_module=AssetSource.BLOG_WRITER, + sort_by="created_at", + sort_order="desc", + limit=limit, + offset=offset, + ) + + entries = [] + for a in assets: + meta = a.asset_metadata or {} + entries.append({ + "asset_id": a.id, + "title": a.title, + "platform": meta.get("platform", "unknown"), + "post_url": meta.get("post_url"), + "post_id": meta.get("post_id"), + "word_count": meta.get("word_count", 0), + "focus_keyword": meta.get("focus_keyword"), + "categories": meta.get("categories", []), + "published_at": a.created_at.isoformat() if a.created_at else None, + }) + + return {"success": True, "entries": entries, "total": total} + + except HTTPException: + raise + except Exception as e: + logger.error(f"Failed to get publish history: {e}") + raise HTTPException(status_code=500, detail=str(e)) + + # --------------------------------------- # Blog Asset API (phase-by-phase saving via ContentAsset) # --------------------------------------- diff --git a/backend/api/blog_writer/seo_analysis.py b/backend/api/blog_writer/seo_analysis.py index d9f3aa35..7d5a5b8e 100644 --- a/backend/api/blog_writer/seo_analysis.py +++ b/backend/api/blog_writer/seo_analysis.py @@ -28,6 +28,8 @@ class SEOAnalysisRequest(BaseModel): blog_content: str blog_title: Optional[str] = None research_data: Dict[str, Any] + outline: Optional[List[Dict[str, Any]]] = None + competitive_advantage: Optional[str] = None user_id: Optional[str] = None session_id: Optional[str] = None @@ -109,7 +111,9 @@ async def analyze_blog_seo( blog_content=request.blog_content, research_data=request.research_data, blog_title=request.blog_title, - user_id=user_id + user_id=user_id, + outline=request.outline, + competitive_advantage=request.competitive_advantage, ) # Check for errors diff --git a/backend/api/linkedin_image_generation.py b/backend/api/linkedin_image_generation.py index 1848c0bf..90246832 100644 --- a/backend/api/linkedin_image_generation.py +++ b/backend/api/linkedin_image_generation.py @@ -1,7 +1,9 @@ +import os from fastapi import APIRouter, HTTPException, UploadFile, File, Depends +from fastapi.responses import FileResponse from pydantic import BaseModel from typing import List, Optional, Dict, Any -import json +import base64 # Import our LinkedIn image generation services from services.linkedin.image_generation import LinkedInImageGenerator, LinkedInImageStorage @@ -51,6 +53,23 @@ class ImageGenerationResponse(BaseModel): aspect_ratio: Optional[str] = None error: Optional[str] = None +class ImageEditRequest(BaseModel): + image_base64: Optional[str] = None + image_id: Optional[str] = None + prompt: str + content_context: Dict[str, Any] + +class ImageEditResponse(BaseModel): + success: bool + image_data: Optional[str] = None + image_id: Optional[str] = None + image_url: Optional[str] = None + width: Optional[int] = None + height: Optional[int] = None + provider: Optional[str] = None + model: Optional[str] = None + error: Optional[str] = None + @router.post("/generate-image-prompts", response_model=List[ImagePromptResponse]) async def generate_image_prompts(request: ImagePromptRequest): """ @@ -89,7 +108,8 @@ async def generate_linkedin_image( # Use our LinkedIn image generator service image_result = await image_generator.generate_image( prompt=request.prompt, - content_context=request.content_context + content_context=request.content_context, + user_id=user_id ) if image_result and image_result.get('success'): @@ -131,6 +151,99 @@ async def generate_linkedin_image( error=f"Failed to generate image: {str(e)}" ) +@router.post("/edit-image", response_model=ImageEditResponse) +async def edit_linkedin_image( + request: ImageEditRequest, + current_user: Dict[str, Any] = Depends(get_current_user) +): + """ + Edit a LinkedIn-optimized image using natural language. + Provide the image as base64 and describe the desired edits. + """ + try: + user_id = current_user.get("id") + if not user_id: + raise HTTPException(status_code=401, detail="Authentication required") + + if not request.prompt or not request.prompt.strip(): + raise HTTPException(status_code=400, detail="Prompt is required for image editing") + + logger.info(f"Editing LinkedIn image with prompt: {request.prompt[:100]}... for user {user_id}") + + # Get input image bytes โ€” from image_id (fetch from storage) or image_base64 (direct decode) + input_image_bytes = None + if request.image_id: + stored = await image_storage.retrieve_image(request.image_id, user_id) + if not stored or not stored.get('success'): + raise HTTPException(status_code=404, detail=f"Image not found: {request.image_id}") + input_image_bytes = stored['image_data'] + logger.info(f"Fetched image {request.image_id} from storage ({len(input_image_bytes)} bytes)") + elif request.image_base64: + input_image_bytes = base64.b64decode(request.image_base64) + else: + raise HTTPException(status_code=400, detail="Either image_id or image_base64 is required") + + # Use LinkedIn image generator with common editing infrastructure + image_result = await image_generator.edit_image( + input_image_bytes=input_image_bytes, + edit_prompt=request.prompt, + content_context=request.content_context, + user_id=user_id, + ) + + if image_result and image_result.get('success'): + image_b64 = base64.b64encode(image_result['image_data']).decode("utf-8") + + # Store the edited image โ€” log but don't fail if storage has issues + new_image_id = None + stored_result = await image_storage.store_image( + image_data=image_result['image_data'], + metadata={ + 'prompt': request.prompt, + 'style': request.content_context.get('style', 'Edited'), + 'content_type': request.content_context.get('content_type'), + 'topic': request.content_context.get('topic'), + 'industry': request.content_context.get('industry'), + 'is_edit': True, + 'original_prompt': request.prompt, + 'source_image_id': request.image_id, + }, + user_id=user_id + ) + if stored_result and stored_result.get('success'): + new_image_id = stored_result.get('image_id') + logger.info(f"Edited image stored with ID: {new_image_id}") + else: + logger.warning(f"Edited image not stored: {stored_result.get('error', 'unknown reason')}") + + return ImageEditResponse( + success=True, + image_data=image_b64, + image_id=new_image_id, + image_url=image_result.get('image_url'), + width=image_result.get('width'), + height=image_result.get('height'), + provider=image_result.get('provider'), + model=image_result.get('model'), + ) + else: + error_msg = image_result.get('error', 'Unknown error during image editing') + logger.error(f"Image editing failed: {error_msg}") + return ImageEditResponse( + success=False, + error=error_msg + ) + + except HTTPException: + raise + except Exception as e: + logger.error(f"Error editing LinkedIn image: {str(e)}", exc_info=True) + return ImageEditResponse( + success=False, + error=f"Failed to edit image: {str(e)}" + ) + + @router.get("/image-status/{image_id}") async def get_image_status( image_id: str, @@ -169,42 +282,23 @@ async def get_generated_image( current_user: Dict[str, Any] = Depends(get_current_user) ): """ - Retrieve a generated image by ID + Retrieve a generated image by ID. + Returns the image file directly as a PNG response. """ try: user_id = current_user.get("id") image_result = await image_storage.retrieve_image(image_id, user_id) - if image_result.get('success') and 'image_data' in image_result: - # Return as streaming response or raw bytes depending on frontend needs - # For now returning the structure as before but image_data is bytes - # Ideally this should be a Response object with image/png content type - # But keeping consistency with existing return type structure for now if it was returning dict - # Wait, retrieve_image returns dict with 'image_data' as bytes. - # The original code returned: {"success": True, "image_data": image_data} - # FastAPI handles bytes in JSON? No, it will fail serialization. - # The previous implementation of retrieve_image (lines 190-195) returned bytes in a dict. - # Unless FastAPI response model handles it, this might have been broken or handled specially. - # Let's check imports. - # It uses APIRouter. - # If I return a dict with bytes, json serialization fails. - # Maybe the original code expected base64 or it was just broken? - # Or maybe image_data was not bytes? - # In retrieve_image: with open(..., 'rb') as f: image_data = f.read() -> bytes. - # So returning it in a dict will definitely fail JSON serialization. - # I should probably return a Response or FileResponse, or base64 encode it. - # But for now, I will just match the signature and pass user_id. - # If it was broken before, I'm not fixing that unless asked, but I suspect it might be base64 in usage? - # Let's look at `generate_linkedin_image` which returns `ImageGenerationResponse` with `image_url`. - # `get_generated_image` returns a dict. - # I will stick to passing user_id. - - return { - "success": True, - "image_data": image_result['image_data'] # This might need base64 encoding if it's for JSON - } + if image_result.get('success') and image_result.get('image_path'): + return FileResponse( + path=image_result['image_path'], + media_type="image/png", + filename=f"{image_id}.png" + ) else: raise HTTPException(status_code=404, detail="Image not found") + except HTTPException: + raise except Exception as e: logger.error(f"Error retrieving image: {str(e)}") raise HTTPException(status_code=500, detail=f"Failed to retrieve image: {str(e)}") @@ -232,25 +326,42 @@ async def delete_generated_image( @router.get("/image-generation-health") async def health_check(): """ - Health check for image generation services + Lightweight health check for image generation services. + Verifies configuration and service availability without making API calls. """ try: - # Test basic service functionality - test_prompts = await prompt_generator.generate_three_prompts({ - 'content_type': 'post', - 'topic': 'Test', - 'industry': 'Technology', - 'content': 'Test content for health check' - }) - + services = {} + all_healthy = True + + # Check API key configuration (no actual API call) + image_api_key = api_key_manager.get_api_key("image_generation") or os.getenv("WAVESPEED_API_KEY") or os.getenv("HF_TOKEN") + services["image_api_key_configured"] = bool(image_api_key) + + # Check storage accessibility + stats = await image_storage.get_storage_stats() + storage_ok = stats.get('success', False) + services["image_storage"] = "operational" if storage_ok else "unavailable" + if storage_ok: + services["storage_stats"] = { + "total_images": stats.get('total_files', 0), + "total_size_gb": stats.get('total_size_gb', 0), + "limit_gb": stats.get('storage_limit_gb', 0), + } + + # Check prompt generator initialization + prompt_ok = prompt_generator is not None and hasattr(prompt_generator, 'generate_three_prompts') + services["prompt_generator"] = "operational" if prompt_ok else "unavailable" + + # Check image generator initialization + gen_ok = image_generator is not None and hasattr(image_generator, 'generate_image') + services["image_generator"] = "operational" if gen_ok else "unavailable" + + if not all(v == "operational" or v is True for v in services.values()): + all_healthy = False + return { - "status": "healthy", - "services": { - "prompt_generator": "operational", - "image_generator": "operational", - "image_storage": "operational" - }, - "test_prompts_generated": len(test_prompts) + "status": "healthy" if all_healthy else "degraded", + "services": services } except Exception as e: logger.error(f"Health check failed: {str(e)}") diff --git a/backend/api/wix_routes.py b/backend/api/wix_routes.py index f932d98d..6dde46bb 100644 --- a/backend/api/wix_routes.py +++ b/backend/api/wix_routes.py @@ -16,6 +16,7 @@ import time from services.wix_service import WixService from services.integrations.wix_oauth import WixOAuthService +from services.integrations.wix.utils import extract_meta_from_token from services.integrations.oauth_callback_utils import ( build_oauth_callback_html, sanitize_error, @@ -102,6 +103,38 @@ def _map_wix_error(exc: Exception, fallback: str = "Wix API request failed") -> detail="Network error connecting to Wix. Please check your connection and try again." ) + # Handle WixAPIError from our retry/API layer + from services.integrations.wix.retry import WixAPIError + if isinstance(exc, WixAPIError): + status = exc.status_code + msg = exc.response_body or str(exc) + if status == 401: + return HTTPException( + status_code=401, + detail="Wix authorization failed. Please reconnect your Wix account." + ) + if status == 403: + return HTTPException( + status_code=403, + detail="Wix permission denied. Ensure your OAuth app has blog permissions (BLOG.CREATE-DRAFT)." + ) + if status == 404: + return HTTPException( + status_code=502, + detail="Wix API endpoint not found. Ensure the site ID is correct and the blog feature is enabled." + ) + if status == 429: + return HTTPException( + status_code=429, + detail="Wix rate limit exceeded. Please wait a moment and try again." + ) + if status in (500, 502, 503, 504): + return HTTPException( + status_code=502, + detail="Wix service temporarily unavailable. Please try again in a moment." + ) + return HTTPException(status_code=status or 502, detail=msg or fallback) + # For validation errors from blog_publisher error_str = str(exc) if "validation failed" in error_str.lower(): @@ -150,12 +183,16 @@ def _resolve_valid_wix_token(current_user: dict) -> Dict[str, Any]: expires_in=refreshed.get("expires_in"), token_id=token_id, ) + site_id = candidate.get("site_id") + if not site_id: + meta_info = extract_meta_from_token(refreshed.get("access_token")) + site_id = meta_info.get('metaSiteId') or site_id logger.info(f"Wix token refreshed successfully on attempt {attempt} for user {user_id[:8]}...") return { "access_token": refreshed.get("access_token"), "refresh_token": refreshed.get("refresh_token", refresh_token), "member_id": candidate.get("member_id"), - "site_id": candidate.get("site_id"), + "site_id": site_id, } raise HTTPException(status_code=401, detail="Wix token expired and cannot be refreshed") @@ -315,6 +352,9 @@ async def handle_oauth_callback(request: WixAuthRequest, current_user: dict = De try: site_info = wix_service.get_site_info(access_token) site_id = site_info.get('siteId') or site_info.get('site_id') + if not site_id and site_info.get('_no_site'): + meta_info = extract_meta_from_token(access_token) + site_id = meta_info.get('metaSiteId') except Exception as e: logger.warning(f"get_site_info failed (non-fatal): {e}") try: @@ -322,7 +362,7 @@ async def handle_oauth_callback(request: WixAuthRequest, current_user: dict = De except Exception: pass try: - permissions = wix_service.check_blog_permissions(access_token) + permissions = wix_service.check_blog_permissions(access_token, site_id=site_id) except Exception as e: logger.warning(f"check_blog_permissions failed (non-fatal): {e}") @@ -351,11 +391,14 @@ async def handle_oauth_callback(request: WixAuthRequest, current_user: dict = De try: site_info = wix_service.get_site_info(access_token) site_id = site_info.get('siteId') or site_info.get('site_id') + if not site_id and site_info.get('_no_site'): + meta_info = extract_meta_from_token(access_token) + site_id = meta_info.get('metaSiteId') or site_id except Exception as e: logger.warning(f"get_site_info failed (non-fatal): {e}") try: - from services.integrations.wix.utils import extract_meta_from_token - site_id = extract_meta_from_token(access_token) or site_id + meta_info = extract_meta_from_token(access_token) + site_id = meta_info.get('metaSiteId') or site_id except Exception: pass try: @@ -363,7 +406,7 @@ async def handle_oauth_callback(request: WixAuthRequest, current_user: dict = De except Exception: pass try: - permissions = wix_service.check_blog_permissions(access_token) + permissions = wix_service.check_blog_permissions(access_token, site_id=site_id) except Exception as e: logger.warning(f"check_blog_permissions failed (non-fatal): {e}") else: @@ -425,10 +468,13 @@ async def handle_oauth_callback_get(code: str, state: Optional[str] = None, requ try: site_info = wix_service.get_site_info(tokens['access_token']) site_id = site_info.get('siteId') or site_info.get('site_id') + if not site_id and site_info.get('_no_site'): + meta_info = extract_meta_from_token(tokens['access_token']) + site_id = meta_info.get('metaSiteId') except Exception as e: logger.warning(f"GET callback: get_site_info non-fatal: {e}") try: - permissions = wix_service.check_blog_permissions(tokens['access_token']) + permissions = wix_service.check_blog_permissions(tokens['access_token'], site_id=site_id) except Exception as e: logger.warning(f"GET callback: check_blog_permissions non-fatal: {e}") @@ -499,17 +545,34 @@ async def get_connection_status(current_user: dict = Depends(get_current_user)) try: token_info = _resolve_valid_wix_token(current_user) access_token = token_info["access_token"] + site_id = token_info.get("site_id") + + # Check site info โ€” distinguish "no site" from "token expired" site_info = wix_service.get_site_info(access_token) - permissions = wix_service.check_blog_permissions(access_token) + if site_info.get("_auth_failed"): + return { + "connected": False, + "has_permissions": False, + "error": "Wix token expired โ€” please reconnect", + "reconnect_required": True + } + + # If get_site_info returned _no_site, try extracting metaSiteId from token + if site_info.get("_no_site") and not site_id: + meta_info = extract_meta_from_token(access_token) + site_id = meta_info.get('metaSiteId') + + permissions = wix_service.check_blog_permissions(access_token, site_id=site_id) return { "connected": True, "has_permissions": permissions.get("has_permissions", False), "site_info": site_info, - "permissions": permissions + "permissions": permissions, + "site_id": site_id, } except HTTPException as e: if e.status_code == 401: - return {"connected": False, "has_permissions": False, "error": "Wix account not connected"} + return {"connected": False, "has_permissions": False, "error": "Wix account not connected", "reconnect_required": True} raise except Exception as e: logger.error(f"Failed to check connection status: {e}") @@ -557,6 +620,9 @@ async def publish_to_wix(request: WixPublishRequest, current_user: dict = Depend access_token = token_info["access_token"] if not site_id: site_id = token_info.get("site_id") + if not site_id: + meta_info = extract_meta_from_token(access_token) + site_id = meta_info.get('metaSiteId') logger.info(f"Wix publish: using backend DB token for user {_get_current_user_id(current_user)[:8]}...") except HTTPException: access_token = None @@ -641,12 +707,14 @@ async def publish_to_wix(request: WixPublishRequest, current_user: dict = Depend post_url = raw_url else: post_url = None + publish_warnings = result.get("_warnings", []) + all_warnings = [w for w in [content_warning] + publish_warnings if w] return { "success": True, "post_id": str(post.get("id", "")), "url": post_url, "publish_state": "PUBLISHED" if request.publish else "DRAFT", - **({"warning": content_warning} if content_warning else {}), + **({"warning": " | ".join(all_warnings)} if all_warnings else {}), } except Exception as e: logger.error(f"Failed to publish to Wix: {e}") @@ -930,11 +998,13 @@ async def test_publish_real(payload: Dict[str, Any], _: Dict[str, Any] = Depends seo_metadata=seo_metadata, ) + publish_warnings = result.get("_warnings", []) return { "success": True, "post_id": (result.get("draftPost") or result.get("post") or {}).get("id"), "url": (result.get("draftPost") or result.get("post") or {}).get("url"), "message": "Blog post published to Wix", + **({"warning": " | ".join(publish_warnings)} if publish_warnings else {}), } except HTTPException: raise diff --git a/backend/image_studio_images/img_Conceptual_diagram_of_a_digital_marketing_fun_5db260a4.png b/backend/image_studio_images/img_Conceptual_diagram_of_a_digital_marketing_fun_5db260a4.png new file mode 100644 index 0000000000000000000000000000000000000000..dc4dca674e4557fd2535f4454b6a684de37eca44 GIT binary patch literal 205285 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

Z1|bw@_j!6L`&2Q3NP7W4s2c`detjSQ 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�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�BFS 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 literal 0 HcmV?d00001 diff --git a/backend/image_studio_images/img_Professional_infographic_style_visual_with_fo_f6143820.png b/backend/image_studio_images/img_Professional_infographic_style_visual_with_fo_f6143820.png new file mode 100644 index 0000000000000000000000000000000000000000..a29006f0090b43ea046f33ee4e31daccd9099d5c GIT binary patch literal 386053 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%0AW0!A0D`B{g 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%0D0T$6OM~m*^Z_%+7Rg($hUc)xq}^b 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⪼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


croi1DW8RA|=Gei2#7eyl&CEKhR;N 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

w7l$D7A?%=Qv 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 literal 0 HcmV?d00001 diff --git a/backend/middleware/auth_middleware.py b/backend/middleware/auth_middleware.py index 16a30899..3134f81d 100644 --- a/backend/middleware/auth_middleware.py +++ b/backend/middleware/auth_middleware.py @@ -1,6 +1,7 @@ """Authentication middleware for ALwrity backend.""" import os +import base64 import inspect from typing import Optional, Dict, Any from fastapi import HTTPException, Depends, status, Request, Query @@ -61,12 +62,23 @@ class ClerkAuthMiddleware: if self.clerk_secret_key and self.clerk_publishable_key: # Extract instance from publishable key for JWKS URL and issuer validation # Format: pk_test_. or pk_live_. + # Production keys may have base64-encoded instance IDs parts = self.clerk_publishable_key.replace('pk_test_', '').replace('pk_live_', '').split('.') if len(parts) >= 1: - # Extract the domain from publishable key or use default - # Clerk URLs are typically: https://.clerk.accounts.dev - instance = parts[0] - issuer_url = f"https://{instance}.clerk.accounts.dev" + # Attempt base64 decode (production Clerk keys encode the instance) + raw_instance = parts[0] + try: + padded = raw_instance + '=' * (4 - len(raw_instance) % 4) if len(raw_instance) % 4 else raw_instance + decoded_bytes = base64.b64decode(padded) + instance = decoded_bytes.decode('utf-8').rstrip('\x00 $\n\r\t') + except Exception: + instance = raw_instance + + # If decoded value contains a dot, it's already a full domain path + if '.' in instance: + issuer_url = f"https://{instance}" + else: + issuer_url = f"https://{instance}.clerk.accounts.dev" jwks_url = f"{issuer_url}/.well-known/jwks.json" # Create Clerk configuration with JWKS URL @@ -288,7 +300,7 @@ async def get_current_user( user_agent = request.headers.get('user-agent', 'unknown') if hasattr(request.headers, 'items'): - all_headers = {k: v[:50] if len(v) > 50 else v for k, v in request.headers.items()} + all_headers = {k: (v[:50] if len(v) > 50 else v) for k, v in request.headers.items() if k.lower() != 'authorization'} except: pass @@ -300,7 +312,6 @@ async def get_current_user( f"๐Ÿ”’ AUTHENTICATION ERROR: No credentials provided for authenticated endpoint: {endpoint_path} " f"(client_ip={request.client.host if request.client else 'unknown'}, " f"auth_header_received={'YES' if auth_header else 'NO'}, " - f"auth_header_value={auth_header[:50] + '...' if auth_header and len(auth_header) > 50 else (auth_header or 'None')}, " f"all_headers={list(all_headers.keys())}, " f"user_agent={user_agent})" ) diff --git a/backend/models/blog_models.py b/backend/models/blog_models.py index e03e7d82..476f08b9 100644 --- a/backend/models/blog_models.py +++ b/backend/models/blog_models.py @@ -220,6 +220,8 @@ class BlogSectionRequest(BaseModel): tone: Optional[str] = None persona: Optional[PersonaInfo] = None mode: Optional[str] = "polished" # 'draft' | 'polished' + research: Optional[BlogResearchResponse] = None + competitive_advantage: Optional[str] = None class BlogSectionResponse(BaseModel): diff --git a/backend/requirements-linkedin.txt b/backend/requirements-linkedin.txt new file mode 100644 index 00000000..41445f20 --- /dev/null +++ b/backend/requirements-linkedin.txt @@ -0,0 +1,74 @@ +# ===================================================== +# ALwrity LinkedIn-Only Requirements +# Lean subset for linkedin-only demo mode +# ===================================================== + +# Core Web Server +fastapi>=0.115.14 +starlette>=0.40.0,<0.47.0 +sse-starlette<3.0.0 +uvicorn>=0.24.0 +uvicorn[standard]>=0.24.0 +gunicorn>=21.0.0 + +# Server utilities +python-multipart>=0.0.6 +python-dotenv>=1.0.0 +loguru>=0.7.2 +tenacity>=8.2.3 +pydantic>=2.5.2,<3.0.0 +typing-extensions>=4.8.0 +setuptools>=65.0.0 + +# Auth & Database +fastapi-clerk-auth>=0.0.7 +PyJWT>=2.8.0 +cryptography>=41.0.0 +sqlalchemy>=2.0.25 + +# Payment +stripe>=8.0.0 + +# HTTP clients +httpx>=0.28.1 +aiohttp>=3.9.0 +requests>=2.31.0 + +# AI - needed for content generation and image prompts +openai>=1.3.0 +google-genai>=1.0.0 +exa-py==1.9.1 + +# Text processing +markdown>=3.5.0 +beautifulsoup4>=4.12.0 + +# Data processing +numpy>=1.24.0 +pandas>=2.0.0 + +# Image processing - needed for LinkedIn image generation/editing +Pillow>=10.0.0 + +# Testing +pytest>=7.4.0 +pytest-asyncio>=0.21.0 + +# Task scheduling - needed for content calendar +apscheduler>=3.10.0 + +# Utilities +redis>=5.0.0 +schedule>=1.2.0 +aiofiles>=23.2.0 +psutil>=5.9.0 + +# Google APIs +google-api-python-client>=2.100.0 +google-auth>=2.23.0 +google-auth-oauthlib>=1.0.0 + +# Other utilities +python-dateutil>=2.8.0 +jinja2>=3.1.0 +pydantic-settings>=2.0.0 \ No newline at end of file diff --git a/backend/requirements.txt b/backend/requirements.txt index 61930958..07582a2d 100644 --- a/backend/requirements.txt +++ b/backend/requirements.txt @@ -12,6 +12,8 @@ tenacity>=8.2.3 pydantic>=2.5.2,<3.0.0 typing-extensions>=4.8.0 +reportlab-4.5.1 + # Auth PyJWT>=2.8.0 cryptography>=41.0.0 diff --git a/backend/services/blog_writer/content/enhanced_content_generator.py b/backend/services/blog_writer/content/enhanced_content_generator.py index 6fadebe7..5d0edfcf 100644 --- a/backend/services/blog_writer/content/enhanced_content_generator.py +++ b/backend/services/blog_writer/content/enhanced_content_generator.py @@ -6,7 +6,7 @@ Provider parity: - No direct provider coupling here; Google grounding remains in research only """ -from typing import Any, Dict +from typing import Any, Dict, List from services.llm_providers.main_text_generation import llm_text_gen from .source_url_manager import SourceURLManager @@ -22,11 +22,12 @@ class EnhancedContentGenerator: self.transitioner = TransitionGenerator() self.flow = FlowAnalyzer() - async def generate_section(self, section: Any, research: Any, mode: str = "polished", user_id: str = None) -> Dict[str, Any]: + async def generate_section(self, section: Any, research: Any = None, mode: str = "polished", user_id: str = None, competitive_advantage: str = "") -> Dict[str, Any]: prev_summary = self.memory.build_previous_sections_summary(limit=2) - urls = self.url_manager.pick_relevant_urls(section, research) - prompt = self._build_prompt(section, research, prev_summary, urls) - # Provider-agnostic text generation (respect GPT_PROVIDER & circuit-breaker) + research_context, section_sources = self._build_research_context(section) + urls = self.url_manager.pick_relevant_urls(section, research) if not research_context else [] + global_research_context = self._build_global_research_context(research, competitive_advantage) + prompt = self._build_prompt(section, prev_summary, research_context, urls, global_research_context) content_text: str = "" try: ai_resp = llm_text_gen( @@ -40,29 +41,22 @@ class EnhancedContentGenerator: elif isinstance(ai_resp, str): content_text = ai_resp else: - # Fallback best-effort extraction content_text = str(ai_resp or "") except Exception as e: content_text = "" result = { "content": content_text, - "sources": [{"title": u.get("title", ""), "url": u.get("url", "")} for u in urls] if urls else [], + "sources": section_sources, } - # Generate transition and compute intelligent flow metrics previous_text = prev_summary current_text = result.get("content", "") transition = self.transitioner.generate_transition(previous_text, getattr(section, 'heading', 'This section'), use_llm=True) metrics = self.flow.assess_flow(previous_text, current_text, use_llm=True) - - # Update memory for subsequent sections and store continuity snapshot if current_text: self.memory.update_with_section(getattr(section, 'id', 'unknown'), current_text, use_llm=True) - - # Return enriched result result["transition"] = transition result["continuity_metrics"] = metrics - # Persist a lightweight continuity snapshot for API access try: sid = getattr(section, 'id', 'unknown') if not hasattr(self, "_last_continuity"): @@ -72,22 +66,188 @@ class EnhancedContentGenerator: pass return result - def _build_prompt(self, section: Any, research: Any, prev_summary: str, urls: list) -> str: + def _build_research_context(self, section: Any) -> tuple: + """Build a rich research context block from the section's mapped sources. + + Returns (context_string, sources_list) where context_string is the + formatted research context for the prompt, and sources_list contains + {title, url} dicts for downstream use. + + When section.references is empty, returns ("", []) โ€” the caller should + handle this as a research gap and avoid generating unsupported claims. + """ + references = getattr(section, 'references', []) or [] + if not references: + return ("", []) + + context_parts = [] + sources_out = [] + for i, ref in enumerate(references, 1): + if isinstance(ref, dict): + title = ref.get('title', '') + excerpt = ref.get('excerpt', '') + highlights = ref.get('highlights', []) or [] + summary = ref.get('summary', '') + url = ref.get('url', '') + content = ref.get('content', '') or '' + author = ref.get('author', '') or '' + source_type = ref.get('source_type', '') or '' + credibility_score = ref.get('credibility_score') + published_at = ref.get('published_at', '') or '' + else: + title = getattr(ref, 'title', '') + excerpt = getattr(ref, 'excerpt', '') + highlights = getattr(ref, 'highlights', []) or [] + summary = getattr(ref, 'summary', '') + url = getattr(ref, 'url', '') + content = getattr(ref, 'content', '') or '' + author = getattr(ref, 'author', '') or '' + source_type = getattr(ref, 'source_type', '') or '' + credibility_score = getattr(ref, 'credibility_score', None) + published_at = getattr(ref, 'published_at', '') or '' + + sources_out.append({"title": title, "url": url}) + + attribution_parts = [] + if author: + attribution_parts.append(f"by {author}") + if source_type: + attribution_parts.append(f"[{source_type}]") + attribution = " ".join(attribution_parts) + credibility_tag = "" + if credibility_score is not None: + try: + score = float(credibility_score) + if score >= 0.9: + credibility_tag = " (high-credibility)" + elif score >= 0.75: + credibility_tag = " (credible)" + except (ValueError, TypeError): + pass + recency_tag = "" + if published_at: + recency_tag = f" (published {published_at[:10]})" if len(published_at) >= 10 else f" (published {published_at})" + + header = f"Source {i}: {title}" + if attribution: + header += f" {attribution}" + header += f"{credibility_tag}{recency_tag}" + part = header + "\n" + if summary: + part += f" Summary: {summary[:1000]}\n" + if excerpt: + part += f" Key excerpt: {excerpt[:1000]}\n" + if content and not summary and not excerpt: + part += f" Content: {content[:800]}\n" + if highlights: + part += " Key findings:\n" + for h in highlights[:3]: + h_text = h[:500] if h else '' + if h_text: + part += f" - {h_text}\n" + + context_parts.append(part) + + return ("\n".join(context_parts), sources_out) + + def _build_global_research_context(self, research: Any, competitive_advantage: str = "") -> str: + """Build global research context from the full BlogResearchResponse object. + + Extracts keyword_analysis, competitor_analysis, search_queries, + and competitive_advantage into a compact context block that provides + the LLM with strategic direction beyond per-section sources. + """ + if research is None: + return "" + parts = [] + + ka = getattr(research, 'keyword_analysis', None) or {} + if ka: + primary = ka.get('primary', []) + secondary = ka.get('secondary', []) + search_intent = ka.get('search_intent', '') + kw_lines = [] + if primary: + kw_lines.append(f"Primary keywords: {', '.join(primary[:10])}") + if secondary: + kw_lines.append(f"Secondary keywords: {', '.join(secondary[:10])}") + if search_intent: + kw_lines.append(f"Search intent: {search_intent}") + if kw_lines: + parts.append("=== KEYWORD & SEARCH STRATEGY ===\n" + "\n".join(kw_lines)) + + ca = getattr(research, 'competitor_analysis', None) or {} + if ca: + ca_lines = [] + content_gaps = ca.get('content_gaps', []) + if content_gaps: + ca_lines.append(f"Content gaps (address these): {', '.join(content_gaps[:5])}") + industry_leaders = ca.get('industry_leaders', []) + if industry_leaders: + ca_lines.append(f"Industry leaders: {', '.join(industry_leaders[:5])}") + opportunities = ca.get('opportunities', []) + if opportunities: + ca_lines.append(f"Opportunities: {', '.join(opportunities[:5])}") + if ca_lines: + parts.append("=== COMPETITIVE LANDSCAPE ===\n" + "\n".join(ca_lines)) + + sq = getattr(research, 'search_queries', None) or [] + if sq: + parts.append(f"=== SEARCH INTENT SIGNALS ===\nOriginal search queries: {', '.join(sq[:8])}") + + if competitive_advantage: + parts.append(f"=== COMPETITIVE ADVANTAGE ===\nEmphasize this differentiator: {competitive_advantage}") + + return "\n\n".join(parts) if parts else "" + + def _build_prompt(self, section: Any, prev_summary: str, research_context: str, urls: list, global_research_context: str = "") -> str: heading = getattr(section, 'heading', 'Section') key_points = getattr(section, 'key_points', []) keywords = getattr(section, 'keywords', []) + subheadings = getattr(section, 'subheadings', []) or [] target_words = getattr(section, 'target_words', 300) - url_block = "\n".join([f"- {u.get('title','')} ({u.get('url','')})" for u in urls]) if urls else "(no specific URLs provided)" - return ( + prompt = ( f"You are writing the blog section '{heading}'.\n\n" f"Context summary (previous sections): {prev_summary}\n\n" f"Authoring requirements:\n" f"- Target word count: ~{target_words}\n" f"- Use the following key points: {', '.join(key_points)}\n" f"- Include these keywords naturally: {', '.join(keywords)}\n" - f"- Cite insights from these sources when relevant (do not output raw URLs):\n{url_block}\n\n" - "Write engaging, well-structured markdown with clear paragraphs (2-4 sentences each) separated by double line breaks." ) + if subheadings: + prompt += f"- Cover these subtopics: {', '.join(subheadings)}\n" + + if global_research_context: + prompt += f"\n{global_research_context}\n\n" + + if research_context: + prompt += ( + f"\nResearch sources for this section (use these facts, statistics, " + f"and insights to support your writing):\n{research_context}\n\n" + "IMPORTANT: Base your writing on the research sources above. " + "Use specific facts, statistics, and data from these sources. " + "Do not invent numbers, statistics, or claims not supported by the research.\n" + ) + elif urls: + import logging + logging.getLogger('content_generator').warning( + f"No research context for section '{heading}' โ€” falling back to bare URLs" + ) + url_lines = [] + for u in urls: + if isinstance(u, dict): + url_lines.append(f"- {u.get('title','')} ({u.get('url','')})") + else: + url_lines.append(f"- {u}") + prompt += f"\nReference URLs (consult for additional context):\n" + "\n".join(url_lines) + "\n" + + prompt += ( + "\nWrite engaging, well-structured markdown with clear paragraphs " + "(2-4 sentences each) separated by double line breaks." + ) + + return prompt + diff --git a/backend/services/blog_writer/content/flow_analyzer.py b/backend/services/blog_writer/content/flow_analyzer.py index dc933451..bbaada8a 100644 --- a/backend/services/blog_writer/content/flow_analyzer.py +++ b/backend/services/blog_writer/content/flow_analyzer.py @@ -7,10 +7,9 @@ Uses Gemini API for intelligent analysis while minimizing API calls through cach from typing import Dict, Optional from loguru import logger import hashlib -import json -# Import the common gemini provider -from services.llm_providers.gemini_provider import gemini_structured_json_response +# Provider-agnostic LLM dispatcher (respects GPT_PROVIDER env var) +from services.llm_providers.main_text_generation import llm_text_gen class FlowAnalyzer: @@ -21,7 +20,7 @@ class FlowAnalyzer: self._rule_cache: Dict[str, Dict[str, float]] = {} logger.info("โœ… FlowAnalyzer initialized with LLM-based analysis") - def assess_flow(self, previous_text: str, current_text: str, use_llm: bool = True) -> Dict[str, float]: + def assess_flow(self, previous_text: str, current_text: str, use_llm: bool = True, user_id: str = None) -> Dict[str, float]: """ Return flow metrics in range 0..1. @@ -29,6 +28,7 @@ class FlowAnalyzer: previous_text: Previous section content current_text: Current section content use_llm: Whether to use LLM analysis (default: True for significant content) + user_id: Clerk user ID for subscription checking """ if not current_text: return {"flow": 0.0, "consistency": 0.0, "progression": 0.0} @@ -46,7 +46,7 @@ class FlowAnalyzer: if should_use_llm: try: - metrics = self._llm_flow_analysis(previous_text, current_text) + metrics = self._llm_flow_analysis(previous_text, current_text, user_id=user_id) self._cache[cache_key] = metrics logger.info("LLM-based flow analysis completed") return metrics @@ -71,8 +71,8 @@ class FlowAnalyzer: # Use LLM if: substantial content (>100 words) OR has meaningful previous context return word_count > 100 or has_previous - def _llm_flow_analysis(self, previous_text: str, current_text: str) -> Dict[str, float]: - """Use Gemini API for intelligent flow analysis.""" + def _llm_flow_analysis(self, previous_text: str, current_text: str, user_id: str = None) -> Dict[str, float]: + """Use LLM for intelligent flow analysis (provider-agnostic).""" # Truncate content to minimize tokens while keeping context prev_truncated = (previous_text[-300:] if previous_text else "") if previous_text else "" @@ -103,22 +103,20 @@ Return ONLY a JSON object with these exact keys: flow, consistency, progression } try: - result = gemini_structured_json_response( + result = llm_text_gen( prompt=prompt, - schema=schema, - temperature=0.2, # Low temperature for consistent scoring - max_tokens=1000 # Increased tokens for better analysis + json_struct=schema, + system_prompt=None, + user_id=user_id, + temperature=0.2, + max_tokens=1000 ) - if result.parsed: - return { - "flow": float(result.parsed.get("flow", 0.6)), - "consistency": float(result.parsed.get("consistency", 0.6)), - "progression": float(result.parsed.get("progression", 0.6)) - } - else: - logger.warning("LLM response parsing failed, using fallback") - return self._rule_based_analysis(previous_text, current_text) + return { + "flow": float(result.get("flow", 0.6)), + "consistency": float(result.get("consistency", 0.6)), + "progression": float(result.get("progression", 0.6)) + } except Exception as e: logger.error(f"LLM flow analysis error: {e}") diff --git a/backend/services/blog_writer/content/introduction_generator.py b/backend/services/blog_writer/content/introduction_generator.py index 14451d27..b8f84f34 100644 --- a/backend/services/blog_writer/content/introduction_generator.py +++ b/backend/services/blog_writer/content/introduction_generator.py @@ -28,18 +28,17 @@ class IntroductionGenerator: ) -> str: """Build a prompt for generating blog introductions.""" - # Extract key research insights keyword_analysis = research.keyword_analysis or {} content_angles = research.suggested_angles or [] + competitor_analysis = research.competitor_analysis or {} + search_queries = research.search_queries or [] - # Get a summary of the first few sections for context section_summaries = [] for i, section in enumerate(outline[:3], 1): section_id = section.id content = sections_content.get(section_id, '') if content: - # Take first 200 chars as summary - summary = content[:200] + '...' if len(content) > 200 else content + summary = content[:300] + '...' if len(content) > 300 else content section_summaries.append(f"{i}. {section.heading}: {summary}") sections_text = '\n'.join(section_summaries) if section_summaries else "Content sections are being generated." @@ -47,13 +46,56 @@ class IntroductionGenerator: primary_kw_text = ', '.join(primary_keywords) if primary_keywords else "the topic" content_angle_text = ', '.join(content_angles[:3]) if content_angles else "General insights" - return f"""Generate exactly 3 varied blog introductions for the following blog post. + # Build keyword strategy block from actual keyword_analysis + keyword_block = "" + all_keywords = [] + if keyword_analysis: + primary_kw = keyword_analysis.get('primary', []) + secondary_kw = keyword_analysis.get('secondary', []) + if primary_kw: + all_keywords.extend(primary_kw[:5]) + if secondary_kw: + all_keywords.extend(secondary_kw[:5]) + si = keyword_analysis.get('search_intent', '') + if si: + keyword_block += f"\nSearch intent: {si}" + if all_keywords: + keyword_block = f"Target keywords: {', '.join(all_keywords)}" + keyword_block + + # Build competitive landscape block + competitive_block = "" + if competitor_analysis: + gaps = competitor_analysis.get('content_gaps', []) + leaders = competitor_analysis.get('industry_leaders', []) + opportunities = competitor_analysis.get('opportunities', []) + advantages = competitor_analysis.get('competitive_advantages', []) + comp_lines = [] + if advantages: + comp_lines.append(f"Key differentiators: {', '.join(advantages[:3])}") + if gaps: + comp_lines.append(f"Content gaps to address: {', '.join(gaps[:3])}") + if leaders: + comp_lines.append(f"Industry leaders: {', '.join(leaders[:3])}") + if opportunities: + comp_lines.append(f"Opportunities: {', '.join(opportunities[:3])}") + if comp_lines: + competitive_block = "\n".join(comp_lines) + + # Build search intent context + search_block = "" + if search_queries: + search_block = f"Original search queries: {', '.join(search_queries[:5])}" + + prompt = f"""Generate exactly 3 varied blog introductions for the following blog post. BLOG TITLE: {blog_title} PRIMARY KEYWORDS: {primary_kw_text} SEARCH INTENT: {search_intent} CONTENT ANGLES: {content_angle_text} +{keyword_block} +{f"COMPETITIVE LANDSCAPE:\n{competitive_block}" if competitive_block else ""} +{f"SEARCH CONTEXT:\n{search_block}" if search_block else ""} BLOG CONTENT SUMMARY: {sections_text} @@ -69,6 +111,7 @@ REQUIREMENTS FOR EACH INTRODUCTION: 3. Third: Story/statistic-focused (use a compelling fact or narrative hook) - Maintain a professional yet engaging tone - Avoid generic phrases - be specific and benefit-driven +- Where possible, incorporate specific insights from the competitive landscape and search intent above Return ONLY a JSON array of exactly 3 introductions: [ @@ -76,6 +119,7 @@ Return ONLY a JSON array of exactly 3 introductions: "Second introduction (80-120 words, benefit-focused)", "Third introduction (80-120 words, story/statistic-focused)" ]""" + return prompt def get_introduction_schema(self) -> Dict[str, Any]: """Get the JSON schema for introduction generation.""" diff --git a/backend/services/blog_writer/core/blog_writer_service.py b/backend/services/blog_writer/core/blog_writer_service.py index 2ed76f29..98a7e127 100644 --- a/backend/services/blog_writer/core/blog_writer_service.py +++ b/backend/services/blog_writer/core/blog_writer_service.py @@ -129,9 +129,9 @@ class BlogWriterService: """Enhance a section using AI.""" return await self.outline_service.enhance_section_with_ai(section, focus) - async def optimize_outline_with_ai(self, outline: List[BlogOutlineSection], focus: str = "general optimization") -> List[BlogOutlineSection]: + async def optimize_outline_with_ai(self, outline: List[BlogOutlineSection], focus: str = "general optimization", research_context: str = "") -> List[BlogOutlineSection]: """Optimize entire outline for better flow and SEO.""" - return await self.outline_service.optimize_outline_with_ai(outline, focus) + return await self.outline_service.optimize_outline_with_ai(outline, focus, research_context=research_context) def rebalance_word_counts(self, outline: List[BlogOutlineSection], target_words: int) -> List[BlogOutlineSection]: """Rebalance word count distribution across sections.""" @@ -140,14 +140,15 @@ class BlogWriterService: # Content Generation Methods async def generate_section(self, request: BlogSectionRequest, user_id: str = None) -> BlogSectionResponse: """Generate section content from outline.""" - # Compose research-lite object with minimal continuity summary if available - research_ctx: Any = getattr(request, 'research', None) + research_ctx = request.research + competitive_advantage = request.competitive_advantage try: ai_result = await self.content_generator.generate_section( section=request.section, research=research_ctx, mode=(request.mode or "polished"), - user_id=user_id + user_id=user_id, + competitive_advantage=competitive_advantage, ) markdown = ai_result.get('content') or ai_result.get('markdown') or '' citations = [] @@ -339,8 +340,19 @@ class BlogWriterService: ) async def publish(self, request: BlogPublishRequest) -> BlogPublishResponse: - """Publish content to specified platform.""" - # TODO: Move to content module + """Publish content to specified platform. + + NOTE: This endpoint is a STUB / placeholder. The actual publish flow + bypasses this method entirely โ€” the frontend calls platform-specific + endpoints directly: + - Wix: POST /api/wix/publish (wix_routes.py) + - WordPress: POST /api/wordpress/publish (routers/wordpress.py) + + TODO: Either remove this stub or wire it as a unified dispatcher that + routes to the correct platform service. Keep alive until the new + unified publish flow (pre-publish checklist + schedule + history) is + built and this becomes the single entry point for all publishing. + """ return BlogPublishResponse(success=True, platform=request.platform, url="https://example.com/post") async def generate_medium_blog_with_progress(self, req: MediumBlogGenerateRequest, task_id: str, user_id: str, db: Session = None) -> MediumBlogGenerateResult: @@ -359,9 +371,11 @@ class BlogWriterService: async def analyze_flow_basic(self, request: Dict[str, Any]) -> Dict[str, Any]: """Analyze flow metrics for entire blog using single AI call (cost-effective).""" try: + import asyncio # Extract blog content from request sections = request.get("sections", []) title = request.get("title", "Untitled Blog") + user_id = request.get("user_id") if not sections: return {"error": "No sections provided for analysis"} @@ -397,8 +411,7 @@ class BlogWriterService: Provide detailed analysis with specific, actionable suggestions for improvement. """ - # Use Gemini for structured analysis - from services.llm_providers.gemini_provider import gemini_structured_json_response + from services.llm_providers.main_text_generation import llm_text_gen schema = { "type": "object", @@ -440,12 +453,17 @@ class BlogWriterService: "required": ["overall_flow_score", "overall_consistency_score", "overall_progression_score", "overall_coherence_score", "sections", "overall_suggestions"] } - result = gemini_structured_json_response( - prompt=analysis_prompt, - schema=schema, - temperature=0.3, - max_tokens=4096, - system_prompt=system_prompt + result = await asyncio.to_thread( + llm_text_gen, + analysis_prompt, + system_prompt, + schema, + user_id, + None, # preferred_hf_models + None, # preferred_provider + None, # flow_type + 4096, # max_tokens + 0.3 # temperature ) if result and not result.get("error"): @@ -466,6 +484,7 @@ class BlogWriterService: # Use the existing enhanced content generator for detailed analysis sections = request.get("sections", []) title = request.get("title", "Untitled Blog") + user_id = request.get("user_id") if not sections: return {"error": "No sections provided for analysis"} @@ -485,7 +504,8 @@ class BlogWriterService: flow_metrics = self.content_generator.flow.assess_flow( prev_section_content, section_content, - use_llm=True + use_llm=True, + user_id=user_id ) results.append({ diff --git a/backend/services/blog_writer/outline/grounding_engine.py b/backend/services/blog_writer/outline/grounding_engine.py index 5915998a..aa9c9c83 100644 --- a/backend/services/blog_writer/outline/grounding_engine.py +++ b/backend/services/blog_writer/outline/grounding_engine.py @@ -241,9 +241,23 @@ class GroundingContextEngine: else: authority_distribution['low'] += 1 + # Extract actual high-authority sources from chunks + high_authority_sources = [] + for chunk in grounding_metadata.grounding_chunks: + chunk_authority = self._calculate_chunk_authority(chunk) + if chunk_authority >= 0.8: + high_authority_sources.append({ + 'title': chunk.title if chunk.title else 'Unknown Source', + 'url': chunk.url if chunk.url else '', + 'score': round(chunk_authority, 3) + }) + # Sort by authority score descending, keep top 5 + high_authority_sources.sort(key=lambda x: x['score'], reverse=True) + high_authority_sources = high_authority_sources[:5] + return { 'average_authority_score': sum(authority_scores) / len(authority_scores) if authority_scores else 0.0, - 'high_authority_sources': [{'title': 'High Authority Source', 'url': 'example.com', 'score': 0.9}], # Placeholder + 'high_authority_sources': high_authority_sources, 'authority_distribution': dict(authority_distribution) } diff --git a/backend/services/blog_writer/outline/outline_generator.py b/backend/services/blog_writer/outline/outline_generator.py index 3ddaf083..208c517d 100644 --- a/backend/services/blog_writer/outline/outline_generator.py +++ b/backend/services/blog_writer/outline/outline_generator.py @@ -52,6 +52,44 @@ class OutlineGenerator: raw_analysis = research.keyword_analysis if research else {} return self.keyword_curator.curate(raw_analysis) + def _build_optimization_context(self, research) -> str: + """Build a compact research context for the outline optimizer. + Provides keywords, competitor data, and top source summaries so + the optimizer doesn't run blind to the research.""" + if not research: + return "" + parts = [] + kw = research.keyword_analysis if research.keyword_analysis else {} + primary = kw.get('primary', []) + if primary: + parts.append(f"Primary keywords: {', '.join(primary[:5])}") + search_intent = kw.get('search_intent', '') + if search_intent: + parts.append(f"Search intent: {search_intent}") + comp = research.competitor_analysis if research.competitor_analysis else {} + top_competitors = comp.get('top_competitors', []) + if top_competitors: + parts.append(f"Top competitors: {', '.join(str(c) for c in top_competitors[:5])}") + content_gaps = kw.get('content_gaps', []) + if content_gaps: + parts.append(f"Content gaps: {'; '.join(str(g) for g in content_gaps[:5])}") + opportunities = comp.get('opportunities', []) + if opportunities: + parts.append(f"Opportunities: {'; '.join(str(o) for o in opportunities[:5])}") + sources = research.sources if research.sources else [] + if sources: + top_sources = sorted(sources, key=lambda s: s.credibility_score or 0.8, reverse=True)[:5] + source_lines = [] + for s in top_sources: + line = f"- {s.title}" + if s.summary: + line += f": {s.summary[:150]}" + elif s.excerpt: + line += f": {s.excerpt[:150]}" + source_lines.append(line) + parts.append("Key research sources:\n" + "\n".join(source_lines)) + return "\n".join(parts) + async def generate(self, request: BlogOutlineRequest, user_id: str) -> BlogOutlineResponse: """ Generate AI-powered outline using research results. @@ -102,7 +140,7 @@ class OutlineGenerator: # Run parallel processing for speed optimization (user_id required) mapped_sections, grounding_insights = await self.parallel_processor.run_parallel_processing_async( - outline_sections, research, user_id + outline_sections, research, user_id, competitive_advantage=selected_competitive_advantage or "" ) # Enhance sections with grounding insights @@ -113,7 +151,8 @@ class OutlineGenerator: # Optimize outline for better flow, SEO, and engagement (user_id required) logger.info("Optimizing outline for better flow and engagement...") - optimized_sections = await self.outline_optimizer.optimize(grounding_enhanced_sections, "comprehensive optimization", user_id) + optimization_context = self._build_optimization_context(research) + optimized_sections = await self.outline_optimizer.optimize(grounding_enhanced_sections, "comprehensive optimization", user_id, research_context=optimization_context) # Rebalance word counts for optimal distribution target_words = request.word_count or 1500 @@ -202,7 +241,7 @@ class OutlineGenerator: # Run parallel processing for speed optimization (user_id required for subscription checks) mapped_sections, grounding_insights = await self.parallel_processor.run_parallel_processing( - outline_sections, research, user_id, task_id + outline_sections, research, user_id, task_id, competitive_advantage=selected_competitive_advantage or "" ) # Enhance sections with grounding insights (depends on both previous tasks) @@ -213,7 +252,8 @@ class OutlineGenerator: # Optimize outline for better flow, SEO, and engagement (user_id required for subscription checks) await task_manager.update_progress(task_id, "๐ŸŽฏ Optimizing outline for better flow and engagement...") - optimized_sections = await self.outline_optimizer.optimize(grounding_enhanced_sections, "comprehensive optimization", user_id) + optimization_context = self._build_optimization_context(research) + optimized_sections = await self.outline_optimizer.optimize(grounding_enhanced_sections, "comprehensive optimization", user_id, research_context=optimization_context) # Rebalance word counts for optimal distribution await task_manager.update_progress(task_id, "โš–๏ธ Rebalancing word count distribution...") diff --git a/backend/services/blog_writer/outline/outline_optimizer.py b/backend/services/blog_writer/outline/outline_optimizer.py index 8fa36e2a..31281715 100644 --- a/backend/services/blog_writer/outline/outline_optimizer.py +++ b/backend/services/blog_writer/outline/outline_optimizer.py @@ -4,7 +4,7 @@ Outline Optimizer - AI-powered outline optimization and rebalancing. Optimizes outlines for better flow, SEO, and engagement. """ -from typing import List +from typing import List, Dict, Any, Optional from loguru import logger from models.blog_models import BlogOutlineSection @@ -13,13 +13,14 @@ from models.blog_models import BlogOutlineSection class OutlineOptimizer: """Optimizes outlines for better flow, SEO, and engagement.""" - async def optimize(self, outline: List[BlogOutlineSection], focus: str, user_id: str) -> List[BlogOutlineSection]: + async def optimize(self, outline: List[BlogOutlineSection], focus: str, user_id: str, research_context: str = "") -> List[BlogOutlineSection]: """Optimize entire outline for better flow, SEO, and engagement. Args: outline: List of outline sections to optimize focus: Optimization focus (e.g., "general optimization") user_id: User ID (required for subscription checks and usage tracking) + research_context: Optional research context to ground optimization Returns: List of optimized outline sections @@ -40,19 +41,28 @@ Current Outline: Optimization Focus: {focus} Goals: Improve narrative flow, enhance SEO, increase engagement, ensure comprehensive coverage. +""" + if research_context: + optimization_prompt += f""" +Research Context (use this to ground your optimization in real data): +{research_context} +Ensure the optimized outline reflects the research insights above โ€” headings should address the key topics, keywords should align with search intent, and sections should cover the most important angles from the research. +""" + + optimization_prompt += """ Return JSON format: -{{ +{ "outline": [ - {{ + { "heading": "Optimized heading", "subheadings": ["subheading 1", "subheading 2"], "key_points": ["point 1", "point 2"], "target_words": 300, "keywords": ["keyword1", "keyword2"] - }} + } ] -}}""" +}""" try: from services.llm_providers.main_text_generation import llm_text_gen @@ -112,26 +122,34 @@ Return JSON format: return outline def rebalance_word_counts(self, outline: List[BlogOutlineSection], target_words: int) -> List[BlogOutlineSection]: - """Rebalance word count distribution across sections.""" + """Rebalance word count distribution across sections, weighting by source count.""" total_sections = len(outline) if total_sections == 0: return outline - # Calculate target distribution - intro_words = int(target_words * 0.12) # 12% for intro - conclusion_words = int(target_words * 0.12) # 12% for conclusion + intro_words = int(target_words * 0.12) + conclusion_words = int(target_words * 0.12) main_content_words = target_words - intro_words - conclusion_words - # Distribute main content words across sections - words_per_section = main_content_words // total_sections - remainder = main_content_words % total_sections + # Weight sections by research density (sections with more sources get more words) + main_sections = outline[1:-1] if total_sections > 2 else outline + source_weights = [] + for section in main_sections: + ref_count = len(getattr(section, 'references', []) or []) + source_weights.append(1.0 + ref_count * 0.5) + + total_weight = sum(source_weights) if source_weights else len(main_sections) for i, section in enumerate(outline): - if i == 0: # First section (intro) + if i == 0 and total_sections > 2: section.target_words = intro_words - elif i == total_sections - 1: # Last section (conclusion) + elif i == total_sections - 1 and total_sections > 2: section.target_words = conclusion_words - else: # Main content sections - section.target_words = words_per_section + (1 if i < remainder else 0) + else: + main_idx = i - 1 if total_sections > 2 else i + if main_idx < len(source_weights): + section.target_words = int(main_content_words * source_weights[main_idx] / total_weight) + else: + section.target_words = main_content_words // max(len(main_sections), 1) return outline diff --git a/backend/services/blog_writer/outline/outline_service.py b/backend/services/blog_writer/outline/outline_service.py index 1118b3de..0af1c585 100644 --- a/backend/services/blog_writer/outline/outline_service.py +++ b/backend/services/blog_writer/outline/outline_service.py @@ -233,9 +233,9 @@ class OutlineService: """Enhance a section using AI with research context.""" return await self.section_enhancer.enhance(section, focus) - async def optimize_outline_with_ai(self, outline: List[BlogOutlineSection], focus: str = "general optimization") -> List[BlogOutlineSection]: + async def optimize_outline_with_ai(self, outline: List[BlogOutlineSection], focus: str = "general optimization", research_context: str = "") -> List[BlogOutlineSection]: """Optimize entire outline for better flow, SEO, and engagement.""" - return await self.outline_optimizer.optimize(outline, focus) + return await self.outline_optimizer.optimize(outline, focus, research_context=research_context) def rebalance_word_counts(self, outline: List[BlogOutlineSection], target_words: int) -> List[BlogOutlineSection]: """Rebalance word count distribution across sections.""" diff --git a/backend/services/blog_writer/outline/parallel_processor.py b/backend/services/blog_writer/outline/parallel_processor.py index 61e066ed..2c7840e6 100644 --- a/backend/services/blog_writer/outline/parallel_processor.py +++ b/backend/services/blog_writer/outline/parallel_processor.py @@ -17,7 +17,7 @@ class ParallelProcessor: self.source_mapper = source_mapper self.grounding_engine = grounding_engine - async def run_parallel_processing(self, outline_sections, research, user_id: str, task_id: str = None) -> Tuple[Any, Any]: + async def run_parallel_processing(self, outline_sections, research, user_id: str, task_id: str = None, competitive_advantage: str = "") -> Tuple[Any, Any]: """ Run source mapping and grounding insights extraction in parallel. @@ -26,6 +26,7 @@ class ParallelProcessor: research: Research data object user_id: User ID (required for subscription checks and usage tracking) task_id: Optional task ID for progress updates + competitive_advantage: Selected competitive advantage for preferential source matching Returns: Tuple of (mapped_sections, grounding_insights) @@ -44,7 +45,7 @@ class ParallelProcessor: # Run these tasks in parallel to save time source_mapping_task = asyncio.create_task( - self._run_source_mapping(outline_sections, research, task_id, user_id) + self._run_source_mapping(outline_sections, research, task_id, user_id, competitive_advantage) ) grounding_insights_task = asyncio.create_task( @@ -59,7 +60,7 @@ class ParallelProcessor: return mapped_sections, grounding_insights - async def run_parallel_processing_async(self, outline_sections, research, user_id: str) -> Tuple[Any, Any]: + async def run_parallel_processing_async(self, outline_sections, research, user_id: str, competitive_advantage: str = "") -> Tuple[Any, Any]: """ Run parallel processing without progress updates (for non-progress methods). @@ -67,6 +68,7 @@ class ParallelProcessor: outline_sections: List of outline sections to process research: Research data object user_id: User ID (required for subscription checks and usage tracking) + competitive_advantage: Selected competitive advantage for preferential source matching Returns: Tuple of (mapped_sections, grounding_insights) @@ -81,7 +83,7 @@ class ParallelProcessor: # Run these tasks in parallel to save time source_mapping_task = asyncio.create_task( - self._run_source_mapping_async(outline_sections, research, user_id) + self._run_source_mapping_async(outline_sections, research, user_id, competitive_advantage) ) grounding_insights_task = asyncio.create_task( @@ -96,12 +98,12 @@ class ParallelProcessor: return mapped_sections, grounding_insights - async def _run_source_mapping(self, outline_sections, research, task_id, user_id: str): + async def _run_source_mapping(self, outline_sections, research, task_id, user_id: str, competitive_advantage: str = ""): """Run source mapping in parallel.""" if task_id: from api.blog_writer.task_manager import task_manager await task_manager.update_progress(task_id, "๐Ÿ”— Applying intelligent source-to-section mapping...") - return self.source_mapper.map_sources_to_sections(outline_sections, research, user_id) + return self.source_mapper.map_sources_to_sections(outline_sections, research, user_id, competitive_advantage=competitive_advantage) async def _run_grounding_insights_extraction(self, research, task_id): """Run grounding insights extraction in parallel.""" @@ -110,10 +112,10 @@ class ParallelProcessor: await task_manager.update_progress(task_id, "๐Ÿง  Extracting grounding metadata insights...") return self.grounding_engine.extract_contextual_insights(research.grounding_metadata) - async def _run_source_mapping_async(self, outline_sections, research, user_id: str): + async def _run_source_mapping_async(self, outline_sections, research, user_id: str, competitive_advantage: str = ""): """Run source mapping in parallel (async version without progress updates).""" logger.info("Applying intelligent source-to-section mapping...") - return self.source_mapper.map_sources_to_sections(outline_sections, research, user_id) + return self.source_mapper.map_sources_to_sections(outline_sections, research, user_id, competitive_advantage=competitive_advantage) async def _run_grounding_insights_extraction_async(self, research): """Run grounding insights extraction in parallel (async version without progress updates).""" diff --git a/backend/services/blog_writer/outline/prompt_builder.py b/backend/services/blog_writer/outline/prompt_builder.py index 5a4d9d58..d3f16b41 100644 --- a/backend/services/blog_writer/outline/prompt_builder.py +++ b/backend/services/blog_writer/outline/prompt_builder.py @@ -37,27 +37,60 @@ class PromptBuilder: opportunity_text = ', '.join(research.competitor_analysis.get('opportunities', [])) if research and research.competitor_analysis else "Not available" advantages_text = ', '.join(research.competitor_analysis.get('competitive_advantages', [])) if research and research.competitor_analysis else "Not available" competitor_headings_text = ', '.join(research.competitor_analysis.get('competitor_headings', [])[:3]) if research and research.competitor_analysis and research.competitor_analysis.get('competitor_headings') else "" + content_gaps_text = ', '.join(research.competitor_analysis.get('content_gaps', [])) if research and research.competitor_analysis and research.competitor_analysis.get('content_gaps') else "" + industry_leaders_text = ', '.join(research.competitor_analysis.get('industry_leaders', [])) if research and research.competitor_analysis and research.competitor_analysis.get('industry_leaders') else "" # Extract additional UI-mapped context fields analysis_insights_text = (research.keyword_analysis.get('analysis_insights', '') or '') if research and research.keyword_analysis else '' market_positioning_text = (research.competitor_analysis.get('market_positioning', '') or '') if research and research.competitor_analysis else '' difficulty_score = research.keyword_analysis.get('difficulty', None) if research and research.keyword_analysis else None + + # Extract search queries as intent signals + search_queries_text = ', '.join(research.search_queries) if research and hasattr(research, 'search_queries') and research.search_queries else "" - # Extract top 3 authoritative source excerpts as factual data points + # Build numbered source list โ€” all sources with index, title, excerpt, and highlights + # The LLM will reference these indices when assigning sources to sections + source_list_text = "" + if sources: + source_lines = [] + for i, src in enumerate(sources, 1): + title = getattr(src, 'title', '') or '' + excerpt = getattr(src, 'excerpt', '') or '' + highlights = getattr(src, 'highlights', []) or [] + summary = getattr(src, 'summary', '') or '' + source_type = getattr(src, 'source_type', '') or '' + author = getattr(src, 'author', '') or '' + + line = f" [{i}] {title}" + if source_type: + line += f" [{source_type}]" + if author: + line += f" by {author}" + if summary: + line += f" โ€” {summary[:1000]}" + elif excerpt: + line += f" โ€” {excerpt[:1000]}" + if highlights: + line += f" | Key findings: {'; '.join(h[:250] for h in highlights[:3])}" + source_lines.append(line) + if source_lines: + source_list_text = "RESEARCH SOURCES (numbered for reference):\n" + "\n".join(source_lines) + + # Top factual excerpts for depth (keep as supplement) source_excerpts_text = "" if sources: sorted_sources = sorted( [s for s in sources if (s.excerpt or s.summary)], key=lambda s: s.credibility_score or 0.8, reverse=True - )[:3] + )[:5] excerpts = [] for i, src in enumerate(sorted_sources, 1): excerpt = src.excerpt or src.summary or "" - if len(excerpt) > 300: - excerpt = excerpt[:297] + "..." + if len(excerpt) > 500: + excerpt = excerpt[:497] + "..." excerpts.append(f" {i}. \"{src.title}\" โ€” {excerpt}") if excerpts: - source_excerpts_text = "FACTUAL DATA POINTS FROM RESEARCH:\n" + "\n".join(excerpts) + source_excerpts_text = "DETAILED FACTS FROM TOP SOURCES:\n" + "\n".join(excerpts) # Extract recency: newest source publication date newest_date_str = "" @@ -76,12 +109,12 @@ class PromptBuilder: grounding_evidence_text = "" if research and research.grounding_metadata and research.grounding_metadata.grounding_supports: supports = research.grounding_metadata.grounding_supports - top_supports = [s for s in supports if s.segment_text and len(s.segment_text) > 20][:3] + top_supports = [s for s in supports if s.segment_text and len(s.segment_text) > 20][:5] if top_supports: evidence_parts = [] for i, s in enumerate(top_supports, 1): - text = s.segment_text[:250] - if len(s.segment_text) > 250: + text = s.segment_text[:400] + if len(s.segment_text) > 400: text += "..." evidence_parts.append(f" {i}. {text}") grounding_evidence_text = "VERIFIED EVIDENCE (high-confidence snippets):\n" + "\n".join(evidence_parts) @@ -151,8 +184,11 @@ Market Opportunities: {opportunity_text} Competitive Advantages: {advantages_text} {f"Market Positioning: {market_positioning_text}" if market_positioning_text else ""} {f"Competitor Headings (AVOID duplicating): {competitor_headings_text}" if competitor_headings_text else ""} +{f"Content Gaps (MUST address these gaps): {content_gaps_text}" if content_gaps_text else ""} +{f"Industry Leaders: {industry_leaders_text}" if industry_leaders_text else ""} +{f"Search Intent Signals: {search_queries_text}" if search_queries_text else ""} -RESEARCH SOURCES: {len(sources)} authoritative sources available +{source_list_text} {newest_date_str} {source_excerpts_text} @@ -168,8 +204,9 @@ STRATEGIC REQUIREMENTS: - Create SEO-optimized headings with natural keyword integration - Surface the strongest research-backed angles within the outline - Build logical narrative flow from problem to solution -- Include data-driven insights from research sources -- Address content gaps and market opportunities +- Include data-driven insights from research sources โ€” use the numbered sources above +- For each section, assign the most relevant source indices using the [N] numbers above +- Address content gaps and market opportunities โ€” if content gaps are listed, dedicate sections to fill those gaps - Optimize for search intent and user questions - Ensure engaging, actionable content throughout @@ -186,7 +223,8 @@ Return JSON format: "subheadings": ["Subheading 1", "Subheading 2", "Subheading 3"], "key_points": ["Key point 1", "Key point 2", "Key point 3"], "target_words": 300, - "keywords": ["keyword 1", "keyword 2"] + "keywords": ["keyword 1", "keyword 2"], + "source_indices": [1, 3, 5] }} ] }}""" @@ -220,9 +258,14 @@ Return JSON format: "keywords": { "type": "array", "items": {"type": "string"} + }, + "source_indices": { + "type": "array", + "items": {"type": "integer"}, + "description": "Indices of research sources (from the numbered list above) that support this section" } }, - "required": ["heading", "subheadings", "key_points", "target_words", "keywords"] + "required": ["heading", "subheadings", "key_points", "target_words", "keywords", "source_indices"] } } }, diff --git a/backend/services/blog_writer/outline/response_processor.py b/backend/services/blog_writer/outline/response_processor.py index 826d3509..a6d5e1fc 100644 --- a/backend/services/blog_writer/outline/response_processor.py +++ b/backend/services/blog_writer/outline/response_processor.py @@ -100,18 +100,37 @@ class ResponseProcessor: raise ValueError(f"AI outline generation failed: {error_str}") def convert_to_sections(self, outline_data: Dict[str, Any], sources: List) -> List[BlogOutlineSection]: - """Convert outline data to BlogOutlineSection objects.""" + """Convert outline data to BlogOutlineSection objects. + + If the LLM assigned source_indices to sections, populate references + directly from those indices. Indices are 1-based (matching the [N] + labels in the prompt) โ€” converted to 0-based for list access. + Sections without source_indices will be populated by the algorithmic + source mapper in a later step. + """ outline_sections = [] for i, section_data in enumerate(outline_data.get('outline', [])): if not isinstance(section_data, dict) or 'heading' not in section_data: continue - + + # Parse LLM-assigned source indices (1-based) + raw_indices = section_data.get('source_indices', []) + section_refs = [] + if raw_indices and sources: + for idx in raw_indices: + try: + source_idx = int(idx) - 1 # Convert 1-based โ†’ 0-based + if 0 <= source_idx < len(sources): + section_refs.append(sources[source_idx]) + except (ValueError, TypeError): + pass + section = BlogOutlineSection( id=f"s{i+1}", heading=section_data.get('heading', f'Section {i+1}'), subheadings=section_data.get('subheadings', []), key_points=section_data.get('key_points', []), - references=[], # Will be populated by intelligent mapping + references=section_refs, # LLM-assigned if provided, else [] target_words=section_data.get('target_words', 200), keywords=section_data.get('keywords', []) ) diff --git a/backend/services/blog_writer/outline/source_mapper.py b/backend/services/blog_writer/outline/source_mapper.py index 8ff766be..19d4bb60 100644 --- a/backend/services/blog_writer/outline/source_mapper.py +++ b/backend/services/blog_writer/outline/source_mapper.py @@ -41,10 +41,33 @@ class SourceToSectionMapper: 'the', 'a', 'an', 'and', 'or', 'but', 'in', 'on', 'at', 'to', 'for', 'of', 'with', 'by', 'is', 'are', 'was', 'were', 'be', 'been', 'being', 'have', 'has', 'had', 'do', 'does', 'did', 'will', 'would', 'could', 'should', 'may', 'might', 'must', 'can', 'this', 'that', 'these', 'those', - 'how', 'what', 'when', 'where', 'why', 'who', 'which', 'how', 'much', 'many', 'more', 'most', + 'how', 'what', 'when', 'where', 'why', 'who', 'which', 'much', 'many', 'more', 'most', 'some', 'any', 'all', 'each', 'every', 'other', 'another', 'such', 'no', 'not', 'only', 'own', 'same', 'so', 'than', 'too', 'very', 'just', 'now', 'here', 'there', 'up', 'down', 'out', 'off', - 'over', 'under', 'again', 'further', 'then', 'once' + 'over', 'under', 'again', 'further', 'then', 'once', 'also', 'into', 'about', 'between', + 'through', 'during', 'before', 'after', 'above', 'below', 'from', 'since', 'until', 'while', + 'because', 'however', 'therefore', 'thus', 'hence', 'yet', 'still', 'already', 'even' + } + + # Common abbreviation/synonym pairs for fuzzy matching + self._synonym_map = { + 'ai': ['artificial intelligence', 'machine intelligence'], + 'ml': ['machine learning'], + 'dl': ['deep learning'], + 'nlp': ['natural language processing'], + 'iot': ['internet of things'], + 'saas': ['software as a service'], + 'b2b': ['business to business'], + 'b2c': ['business to consumer'], + 'cx': ['customer experience'], + 'ux': ['user experience'], + 'roi': ['return on investment'], + 'kpi': ['key performance indicator'], + 'crm': ['customer relationship management'], + 'erp': ['enterprise resource planning'], + 'seo': ['search engine optimization'], + 'cto': ['chief technology officer'], + 'vp': ['vice president'], } logger.info("โœ… SourceToSectionMapper initialized with intelligent mapping algorithms") @@ -53,15 +76,21 @@ class SourceToSectionMapper: self, sections: List[BlogOutlineSection], research_data: BlogResearchResponse, - user_id: str + user_id: str, + competitive_advantage: str = "" ) -> List[BlogOutlineSection]: """ Map research sources to outline sections using intelligent algorithms. + Sections that already have LLM-assigned references (from source_indices + in the outline prompt) are preserved. Algorithmic mapping fills gaps + for sections without LLM-assigned sources. + Args: sections: List of outline sections to map sources to research_data: Research data containing sources and metadata user_id: User ID (required for subscription checks and usage tracking) + competitive_advantage: Selected competitive advantage to preferentially match Returns: List of outline sections with intelligently mapped sources @@ -76,16 +105,39 @@ class SourceToSectionMapper: logger.warning("No sections or sources to map") return sections - logger.info(f"Mapping {len(research_data.sources)} sources to {len(sections)} sections") + # Separate sections with LLM-assigned references from those without + sections_with_refs = [s for s in sections if s.references] + sections_without_refs = [s for s in sections if not s.references] - # Step 1: Algorithmic mapping - mapping_results = self._algorithmic_source_mapping(sections, research_data) + logger.info( + f"Mapping {len(research_data.sources)} sources to {len(sections)} sections " + f"({len(sections_with_refs)} with LLM-assigned references, " + f"{len(sections_without_refs)} need algorithmic mapping)" + ) - # Step 2: AI validation and improvement (single prompt, user_id required for subscription checks) - validated_mapping = self._ai_validate_mapping(mapping_results, research_data, user_id) + if sections_without_refs: + # Step 1: Algorithmic mapping for sections without LLM-assigned references + mapping_results = self._algorithmic_source_mapping(sections_without_refs, research_data, competitive_advantage) + + # Step 2: AI validation and improvement + validated_mapping = self._ai_validate_mapping(mapping_results, research_data, user_id) + + # Step 3: Apply mapping only to sections that need it + mapped_sections_with = self._apply_mapping_to_sections(sections_without_refs, validated_mapping) + else: + mapped_sections_with = [] - # Step 3: Apply validated mapping to sections - mapped_sections = self._apply_mapping_to_sections(sections, validated_mapping) + # Combine: keep LLM-assigned sections as-is, add algorithmically mapped ones + mapped_sections = list(sections_with_refs) + mapped_sections_with + + # Preserve original ordering + original_ids = [s.id for s in sections] + mapped_sections.sort(key=lambda s: original_ids.index(s.id) if s.id in original_ids else 999) + + # Warn if any section still has zero references + for s in mapped_sections: + if not s.references: + logger.warning(f"Section '{s.heading}' (id={s.id}) has ZERO sources โ€” content generator will use keyword-based fallback") logger.info("โœ… Source-to-section mapping completed successfully") return mapped_sections @@ -93,7 +145,8 @@ class SourceToSectionMapper: def _algorithmic_source_mapping( self, sections: List[BlogOutlineSection], - research_data: BlogResearchResponse + research_data: BlogResearchResponse, + competitive_advantage: str = "" ) -> Dict[str, List[Tuple[ResearchSource, float]]]: """ Perform algorithmic mapping of sources to sections. @@ -101,6 +154,7 @@ class SourceToSectionMapper: Args: sections: List of outline sections research_data: Research data with sources + competitive_advantage: Selected competitive advantage to boost matching Returns: Dictionary mapping section IDs to list of (source, score) tuples @@ -114,7 +168,7 @@ class SourceToSectionMapper: # Calculate multi-dimensional relevance score semantic_score = self._calculate_semantic_similarity(section, source) keyword_score = self._calculate_keyword_relevance(section, source, research_data) - contextual_score = self._calculate_contextual_relevance(section, source, research_data) + contextual_score = self._calculate_contextual_relevance(section, source, research_data, competitive_advantage) # Weighted total score total_score = ( @@ -140,38 +194,54 @@ class SourceToSectionMapper: def _calculate_semantic_similarity(self, section: BlogOutlineSection, source: ResearchSource) -> float: """ Calculate semantic similarity between section and source. - - Args: - section: Outline section - source: Research source - - Returns: - Semantic similarity score (0.0 to 1.0) + Uses word overlap, stem matching, bigram overlap, title-boost, and synonym expansion. """ - # Extract text content for comparison section_text = self._extract_section_text(section) source_text = self._extract_source_text(source) - # Calculate word overlap section_words = self._extract_meaningful_words(section_text) source_words = self._extract_meaningful_words(source_text) if not section_words or not source_words: return 0.0 - # Calculate Jaccard similarity - intersection = len(set(section_words) & set(source_words)) - union = len(set(section_words) | set(source_words)) + section_set = set(section_words) + source_set = set(source_words) - jaccard_similarity = intersection / union if union > 0 else 0.0 + # 1. Jaccard similarity on raw words + intersection = len(section_set & source_set) + union = len(section_set | source_set) + jaccard = intersection / union if union > 0 else 0.0 - # Boost score for exact phrase matches - phrase_boost = self._calculate_phrase_similarity(section_text, source_text) + # 2. Stem matching โ€” catches word variants (e.g., "running" vs "runs") + section_stems = set(self._stem_word(w) for w in section_words) + source_stems = set(self._stem_word(w) for w in source_words) + stem_intersection = len(section_stems & source_stems) + stem_union = len(section_stems | source_stems) + stem_similarity = stem_intersection / stem_union if stem_union > 0 else 0.0 - # Combine Jaccard similarity with phrase boost - semantic_score = min(1.0, jaccard_similarity + phrase_boost) + # 3. Bigram overlap โ€” catches multi-word concepts (e.g., "machine learning") + section_bigrams = set(self._extract_bigrams(section_text)) + source_bigrams = set(self._extract_bigrams(source_text)) + bigram_overlap = len(section_bigrams & source_bigrams) + bigram_score = min(0.3, bigram_overlap * 0.1) if (section_bigrams or source_bigrams) else 0.0 - return semantic_score + # 4. Title-boost โ€” section heading matching source title is a strong signal + heading = (section.heading or '').lower() + source_title = (source.title or '').lower() + heading_words = set(self._extract_meaningful_words(heading)) + title_words = set(self._extract_meaningful_words(source_title)) + title_overlap = len(heading_words & title_words) / len(heading_words | title_words) if (heading_words or title_words) else 0.0 + title_boost = min(0.3, title_overlap * 0.5) + + # 5. Synonym expansion โ€” expand abbreviations and match across synonym pairs + synonym_score = self._calculate_synonym_overlap(section_words, source_words) + + # Combine: Jaccard + stem give base, bigram + title + synonyms boost + base_similarity = max(jaccard, stem_similarity) + combined = min(1.0, base_similarity + bigram_score + title_boost + synonym_score + 0.0) + + return combined def _calculate_keyword_relevance( self, @@ -219,7 +289,8 @@ class SourceToSectionMapper: self, section: BlogOutlineSection, source: ResearchSource, - research_data: BlogResearchResponse + research_data: BlogResearchResponse, + competitive_advantage: str = "" ) -> float: """ Calculate contextual relevance based on section content and source context. @@ -228,6 +299,7 @@ class SourceToSectionMapper: section: Outline section source: Research source research_data: Research data with context + competitive_advantage: Selected competitive advantage to boost matching Returns: Contextual relevance score (0.0 to 1.0) @@ -264,6 +336,15 @@ class SourceToSectionMapper: industry_score = sum(1 for word in industry_words if word in source_text) / len(industry_words) if industry_words else 0.0 contextual_score += industry_score * 0.2 + # 4. Competitive advantage boost โ€” sources that match the advantage get a score lift + if competitive_advantage: + advantage_words = set(self._extract_meaningful_words(competitive_advantage.lower())) + if advantage_words: + advantage_in_section = sum(1 for w in advantage_words if w in section_text) / len(advantage_words) + advantage_in_source = sum(1 for w in advantage_words if w in source_text) / len(advantage_words) + if advantage_in_section > 0.3 and advantage_in_source > 0.3: + contextual_score += 0.25 * (advantage_in_section + advantage_in_source) + return min(1.0, contextual_score) def _ai_validate_mapping( @@ -360,10 +441,15 @@ class SourceToSectionMapper: return " ".join(text_parts) def _extract_source_text(self, source: ResearchSource) -> str: - """Extract all text content from a source.""" + """Extract all text content from a source, including full text for better matching.""" text_parts = [source.title] + if source.summary: + text_parts.append(source.summary) if source.excerpt: text_parts.append(source.excerpt) + content = getattr(source, 'content', '') or '' + if content: + text_parts.append(content[:500]) return " ".join(text_parts) def _extract_meaningful_words(self, text: str) -> List[str]: @@ -382,6 +468,41 @@ class SourceToSectionMapper: return meaningful_words + def _stem_word(self, word: str) -> str: + """Rudimentary suffix-stripping stemmer for English words.""" + if len(word) <= 3: + return word + for suffix in ['ization', 'ation', 'tion', 'sion', 'ment', 'ness', 'ity', 'ing', 'able', 'ible', 'ful', 'less', 'ous', 'ive', 'ally', 'ly', 'er', 'ed', 'es', 's']: + if word.endswith(suffix) and len(word) - len(suffix) >= 3: + return word[:-len(suffix)] + return word + + def _extract_bigrams(self, text: str) -> List[str]: + """Extract meaningful two-word phrases from text.""" + words = self._extract_meaningful_words(text) + if len(words) < 2: + return [] + return [f"{words[i]} {words[i+1]}" for i in range(len(words) - 1)] + + def _calculate_synonym_overlap(self, section_words: List[str], source_words: List[str]) -> float: + """Score overlap via abbreviation/synonym expansion.""" + section_set = set(section_words) + source_set = set(source_words) + extra_matches = 0 + total_terms = len(section_set | source_set) or 1 + + for abbr, expansions in self._synonym_map.items(): + abbr_in_section = abbr in section_set + abbr_in_source = abbr in source_set + for expansion in expansions: + exp_words = set(expansion.split()) + exp_in_section = exp_words.issubset(section_set) + exp_in_source = exp_words.issubset(source_set) + if (abbr_in_section and exp_in_source) or (abbr_in_source and exp_in_section): + extra_matches += 1 + + return min(0.2, extra_matches * 0.05) + def _calculate_phrase_similarity(self, text1: str, text2: str) -> float: """Calculate phrase similarity boost score.""" if not text1 or not text2: diff --git a/backend/services/blog_writer/research/competitor_analyzer.py b/backend/services/blog_writer/research/competitor_analyzer.py index 10f88ccd..243a1bfa 100644 --- a/backend/services/blog_writer/research/competitor_analyzer.py +++ b/backend/services/blog_writer/research/competitor_analyzer.py @@ -18,7 +18,7 @@ class CompetitorAnalyzer: Analyze the following research content and extract competitor insights: Research Content: - {content[:3000]} + {content[:8000]} Extract and analyze: 1. Top competitors mentioned (companies, brands, platforms) diff --git a/backend/services/blog_writer/research/content_angle_generator.py b/backend/services/blog_writer/research/content_angle_generator.py index be2ca7f7..32228975 100644 --- a/backend/services/blog_writer/research/content_angle_generator.py +++ b/backend/services/blog_writer/research/content_angle_generator.py @@ -17,7 +17,7 @@ class ContentAngleGenerator: Analyze the following research content and create strategic content angles for: {topic} in {industry} Research Content: - {content[:3000]} + {content[:8000]} Create 7 compelling content angles that: 1. Leverage current trends and data from the research diff --git a/backend/services/blog_writer/research/exa_provider.py b/backend/services/blog_writer/research/exa_provider.py index 943fd6cd..ce837a13 100644 --- a/backend/services/blog_writer/research/exa_provider.py +++ b/backend/services/blog_writer/research/exa_provider.py @@ -7,6 +7,8 @@ Neural search implementation using Exa API for high-quality, citation-rich resea from exa_py import Exa import os import asyncio +from datetime import datetime +from urllib.parse import urlparse from typing import List, Dict, Any from loguru import logger from models.subscription_models import APIProvider @@ -355,6 +357,125 @@ class ExaResearchProvider(BaseProvider): return None + def _calculate_credibility_score(self, result) -> float: + """Dynamic credibility score based on domain authority, recency, and content substance.""" + scores = [] + weights = [] + + # Domain authority (weight: 3) โ€” most important signal + url = result.url if hasattr(result, 'url') else '' + domain_score = self._score_domain_authority(url) + scores.append(domain_score) + weights.append(3) + + # Recency (weight: 2) โ€” fresher content is more valuable + recency_score = self._score_recency(result) + scores.append(recency_score) + weights.append(2) + + # Content substance (weight: 2) โ€” richer content = more substantive source + substance_score = self._score_substance(result) + scores.append(substance_score) + weights.append(2) + + # Exa relevance score (weight: 2) โ€” Exa's own relevance ranking + exa_score = 0.5 + if hasattr(result, 'score') and result.score is not None: + exa_score = float(result.score) + scores.append(exa_score) + weights.append(2) + + total = sum(s * w for s, w in zip(scores, weights)) + total_weight = sum(weights) + return round(total / total_weight, 3) + + @staticmethod + def _score_domain_authority(url: str) -> float: + if not url: + return 0.5 + try: + domain = urlparse(url).netloc.lower() + except Exception: + return 0.5 + if domain.startswith('www.'): + domain = domain[4:] + + # Tier 1: Government, educational, major research + if domain.endswith('.gov') or domain.endswith('.edu'): + return 0.95 + if domain in ('arxiv.org', 'pubmed.ncbi.nlm.nih.gov', 'ncbi.nlm.nih.gov', + 'scholar.google.com', 'researchgate.net', 'sciencedaily.com', + 'nature.com', 'science.org', 'pnas.org'): + return 0.92 + + # Tier 2: Major established news and professional publications + tier2 = { + 'reuters.com', 'apnews.com', 'bbc.com', 'bbc.co.uk', 'npr.org', + 'wsj.com', 'nytimes.com', 'economist.com', 'bloomberg.com', + 'theguardian.com', 'ft.com', 'washingtonpost.com', + 'forbes.com', 'hbr.org', 'techcrunch.com', 'wired.com', + 'cnn.com', 'nbcnews.com', 'cbsnews.com', 'abcnews.go.com', + } + # Extract base domain + parts = domain.split('.') + base = '.'.join(parts[-2:]) if len(parts) >= 2 else domain + if base in tier2: + return 0.88 + + # Tier 3: Industry research and established .org + tier3 = { + 'statista.com', 'pewresearch.org', 'gartner.com', 'mckinsey.com', + 'deloitte.com', 'pwc.com', 'ey.com', 'kpmg.com', + 'hubspot.com', 'moz.com', 'searchengineland.com', + 'neilpatel.com', 'backlinko.com', 'copyblogger.com', + } + if base in tier3: + return 0.80 + if domain.endswith('.org'): + return 0.75 + + return 0.60 + + def _score_recency(self, result) -> float: + if not hasattr(result, 'publishedDate') or not result.publishedDate: + return 0.70 + try: + published = datetime.strptime(result.publishedDate[:10], '%Y-%m-%d') + days_old = (datetime.now() - published).days + if days_old < 30: + return 1.0 + elif days_old < 180: + return 0.90 + elif days_old < 365: + return 0.80 + elif days_old < 730: + return 0.65 + elif days_old < 1825: + return 0.45 + else: + return 0.25 + except Exception: + return 0.70 + + def _score_substance(self, result) -> float: + total_chars = 0 + if hasattr(result, 'highlights') and result.highlights: + total_chars += sum(len(h or '') for h in result.highlights) + if hasattr(result, 'summary') and result.summary: + total_chars += len(result.summary) + if hasattr(result, 'text') and result.text: + total_chars += len(result.text) + + if total_chars > 2000: + return 0.95 + elif total_chars > 1000: + return 0.85 + elif total_chars > 500: + return 0.75 + elif total_chars > 100: + return 0.60 + return 0.40 + def _transform_sources(self, results): """Transform Exa results to ResearchSource format.""" sources = [] @@ -368,7 +489,7 @@ class ExaResearchProvider(BaseProvider): 'title': result.title if hasattr(result, 'title') else '', 'url': result.url if hasattr(result, 'url') else '', 'excerpt': self._get_excerpt(result), - 'credibility_score': 0.85, # Exa results are high quality + 'credibility_score': self._calculate_credibility_score(result), 'published_at': result.publishedDate if hasattr(result, 'publishedDate') else None, 'index': idx, 'source_type': source_type, @@ -388,7 +509,7 @@ class ExaResearchProvider(BaseProvider): if hasattr(result, 'summary') and result.summary: return result.summary if hasattr(result, 'text') and result.text: - return result.text[:500] + return result.text[:1000] return '' def _determine_source_type(self, url): diff --git a/backend/services/blog_writer/research/keyword_analyzer.py b/backend/services/blog_writer/research/keyword_analyzer.py index 95031a07..1f43ae0e 100644 --- a/backend/services/blog_writer/research/keyword_analyzer.py +++ b/backend/services/blog_writer/research/keyword_analyzer.py @@ -19,7 +19,7 @@ class KeywordAnalyzer: Analyze the following research content and extract comprehensive keyword insights for: {', '.join(original_keywords)} Research Content: - {content[:3000]} # Limit to avoid token limits + {content[:8000]} Extract and analyze: 1. Primary keywords (main topic terms) diff --git a/backend/services/blog_writer/research/research_service.py b/backend/services/blog_writer/research/research_service.py index f8ff9778..ba5de9f9 100644 --- a/backend/services/blog_writer/research/research_service.py +++ b/backend/services/blog_writer/research/research_service.py @@ -250,10 +250,32 @@ class ResearchService: if 'content' not in locals() or 'sources' not in locals(): raise RuntimeError(f"{config.provider.value} research did not return content or sources. Research failed.") + # Build compact all-source summary for richer analysis + analysis_content = self._build_analysis_content(sources) + + # Run dedicated competitor search for richer competitor intelligence + competitor_content = analysis_content + try: + comp_query = f"top {industry} companies or competitors {topic}" + comp_results = await exa_provider.simple_search( + query=comp_query, num_results=5, user_id=user_id, + ) + if comp_results: + comp_lines = ["COMPETITOR SEARCH RESULTS:"] + for r in comp_results: + title = r.get('title', '') + text = (r.get('text', '') or '')[:400] + comp_lines.append(f"- {title}") + if text: + comp_lines.append(f" {text[:200]}") + competitor_content = "\n".join(comp_lines) + "\n\n" + analysis_content + except Exception as e: + logger.warning(f"Competitor search failed (non-critical): {e}") + # Continue with common analysis (same for both providers) - keyword_analysis = self.keyword_analyzer.analyze(content, request.keywords, user_id=user_id) - competitor_analysis = self.competitor_analyzer.analyze(content, user_id=user_id) - suggested_angles = self.content_angle_generator.generate(content, topic, industry, user_id=user_id) + keyword_analysis = self.keyword_analyzer.analyze(analysis_content, request.keywords, user_id=user_id) + competitor_analysis = self.competitor_analyzer.analyze(competitor_content, user_id=user_id) + suggested_angles = self.content_angle_generator.generate(analysis_content, topic, industry, user_id=user_id) logger.info(f"Research completed successfully with {len(sources)} sources and {len(search_queries)} search queries") @@ -586,9 +608,30 @@ class ResearchService: # Continue with common analysis (same for both providers) await task_manager.update_progress(task_id, "๐Ÿ” Analyzing keywords and content angles...") - keyword_analysis = self.keyword_analyzer.analyze(content, request.keywords, user_id=user_id) - competitor_analysis = self.competitor_analyzer.analyze(content, user_id=user_id) - suggested_angles = self.content_angle_generator.generate(content, topic, industry, user_id=user_id) + analysis_content = self._build_analysis_content(sources) + + # Run dedicated competitor search for richer competitor intelligence + competitor_content = analysis_content + try: + comp_query = f"top {industry} companies or competitors {topic}" + comp_results = await exa_provider.simple_search( + query=comp_query, num_results=5, user_id=user_id, + ) + if comp_results: + comp_lines = ["COMPETITOR SEARCH RESULTS:"] + for r in comp_results: + title = r.get('title', '') + text = (r.get('text', '') or '')[:400] + comp_lines.append(f"- {title}") + if text: + comp_lines.append(f" {text[:200]}") + competitor_content = "\n".join(comp_lines) + "\n\n" + analysis_content + except Exception as e: + logger.warning(f"Competitor search failed (non-critical): {e}") + + keyword_analysis = self.keyword_analyzer.analyze(analysis_content, request.keywords, user_id=user_id) + competitor_analysis = self.competitor_analyzer.analyze(competitor_content, user_id=user_id) + suggested_angles = self.content_angle_generator.generate(analysis_content, topic, industry, user_id=user_id) await task_manager.update_progress(task_id, "๐Ÿ’พ Caching results for future use...") logger.info(f"Research completed successfully with {len(sources)} sources and {len(search_queries)} search queries") @@ -780,6 +823,33 @@ class ResearchService: web_search_queries=search_queries or [], ) + def _build_analysis_content(self, sources: List[Dict[str, Any]]) -> str: + """Build compact all-source summary for LLM analysis. + + Each source is distilled to one line with title, key content, and highlights. + This ensures ALL sources are visible to keyword, competitor, and angle + analyzers instead of only the first few (raw content[:3000]). + """ + if not sources: + return "" + lines = [] + for src in sources: + title = src.get('title', '') or '' + summary = src.get('summary', '') or '' + highlights = src.get('highlights', []) or [] + excerpt = src.get('excerpt', '') or '' + part = f"โ€ข {title}" + if summary: + part += f" โ€” {summary[:250]}" + elif excerpt: + part += f" โ€” {excerpt[:250]}" + if highlights: + findings = [h[:120] for h in highlights[:2] if h] + if findings: + part += f" | {'; '.join(findings)}" + lines.append(part) + return "\n".join(lines) + def _normalize_cached_research_data(self, cached_data: Dict[str, Any]) -> Dict[str, Any]: """ Normalize cached research data to fix None values in confidence_scores. diff --git a/backend/services/blog_writer/seo/blog_content_seo_analyzer.py b/backend/services/blog_writer/seo/blog_content_seo_analyzer.py index c3818987..326487b7 100644 --- a/backend/services/blog_writer/seo/blog_content_seo_analyzer.py +++ b/backend/services/blog_writer/seo/blog_content_seo_analyzer.py @@ -6,6 +6,7 @@ Leverages existing non-AI SEO tools and uses single AI prompt for structured ana """ import asyncio +import math import re import textstat from datetime import datetime @@ -34,7 +35,7 @@ class BlogContentSEOAnalyzer: logger.info("BlogContentSEOAnalyzer initialized") - async def analyze_blog_content(self, blog_content: str, research_data: Dict[str, Any], blog_title: Optional[str] = None, user_id: str = None) -> Dict[str, Any]: + async def analyze_blog_content(self, blog_content: str, research_data: Dict[str, Any], blog_title: Optional[str] = None, user_id: str = None, outline: Optional[List[Dict[str, Any]]] = None, competitive_advantage: Optional[str] = None) -> Dict[str, Any]: """ Main analysis method with parallel processing @@ -43,6 +44,8 @@ class BlogContentSEOAnalyzer: research_data: Research data containing keywords and other insights blog_title: Optional blog title user_id: Clerk user ID for subscription checking (required) + outline: Optional outline sections for context-aware analysis + competitive_advantage: Optional competitive advantage for context Returns: Comprehensive SEO analysis results @@ -52,21 +55,24 @@ class BlogContentSEOAnalyzer: try: logger.info("Starting blog content SEO analysis") - # Extract keywords from research data - keywords_data = self._extract_keywords_from_research(research_data) - logger.info(f"Extracted keywords: {keywords_data}") + # Extract research context (keywords + competitor data + search queries) + research_context = self._extract_research_context(research_data) + logger.info(f"Extracted research context with {len(research_context.get('primary', []))} primary keywords") # Phase 1: Run non-AI analyzers in parallel logger.info("Running non-AI analyzers in parallel") - non_ai_results = await self._run_non_ai_analyzers(blog_content, keywords_data) + non_ai_results = await self._run_non_ai_analyzers(blog_content, research_context) - # Phase 2: Single AI analysis for structured insights + # Phase 2: Single AI analysis for structured insights (with outline + competitive context) logger.info("Running AI analysis") - ai_insights = await self._run_ai_analysis(blog_content, keywords_data, non_ai_results, user_id=user_id) + ai_insights = await self._run_ai_analysis( + blog_content, research_context, non_ai_results, user_id=user_id, + outline=outline, competitive_advantage=competitive_advantage + ) # Phase 3: Compile and format results logger.info("Compiling results") - results = self._compile_blog_seo_results(non_ai_results, ai_insights, keywords_data) + results = self._compile_blog_seo_results(non_ai_results, ai_insights, research_context) logger.info(f"SEO analysis completed. Overall score: {results.get('overall_score', 0)}") return results @@ -76,14 +82,19 @@ class BlogContentSEOAnalyzer: # Fail fast - don't return fallback data raise e - def _extract_keywords_from_research(self, research_data: Dict[str, Any]) -> Dict[str, Any]: - """Extract keywords from research data""" + def _extract_research_context(self, research_data: Dict[str, Any]) -> Dict[str, Any]: + """Extract research context from research data including keywords, competitor data, and search queries. + + Previously only extracted keyword_analysis. Now also extracts: + - competitor_analysis (content_gaps, industry_leaders, opportunities, competitive_advantages) + - search_queries + - suggested_angles + """ try: - logger.info(f"Extracting keywords from research data: {research_data}") + logger.info(f"Extracting research context from research data") # Extract keywords from research data structure keyword_analysis = research_data.get('keyword_analysis', {}) - logger.info(f"Found keyword_analysis: {keyword_analysis}") # Handle different possible structures primary_keywords = [] @@ -109,17 +120,37 @@ class BlogContentSEOAnalyzer: 'long_tail': long_tail_keywords, 'semantic': semantic_keywords, 'all_keywords': all_keywords, - 'search_intent': keyword_analysis.get('search_intent', 'informational') + 'search_intent': keyword_analysis.get('search_intent', 'informational'), } - logger.info(f"Extracted keywords: {result}") + # Extract competitor analysis + competitor_analysis = research_data.get('competitor_analysis', {}) + if competitor_analysis: + result['content_gaps'] = competitor_analysis.get('content_gaps', []) + result['industry_leaders'] = competitor_analysis.get('industry_leaders', []) + result['opportunities'] = competitor_analysis.get('opportunities', []) + result['competitive_advantages'] = competitor_analysis.get('competitive_advantages', []) + else: + result['content_gaps'] = [] + result['industry_leaders'] = [] + result['opportunities'] = [] + result['competitive_advantages'] = [] + + # Extract search queries + search_queries = research_data.get('search_queries', []) + result['search_queries'] = search_queries if isinstance(search_queries, list) else [] + + # Extract suggested angles + suggested_angles = research_data.get('suggested_angles', []) + result['suggested_angles'] = suggested_angles if isinstance(suggested_angles, list) else [] + + logger.info(f"Extracted research context: {len(primary_keywords)} primary keywords, {len(result.get('content_gaps', []))} content gaps, {len(result.get('search_queries', []))} search queries") return result except Exception as e: - logger.error(f"Failed to extract keywords from research data: {e}") + logger.error(f"Failed to extract research context from research data: {e}") logger.error(f"Research data structure: {research_data}") - # Fail fast - don't return empty keywords - raise ValueError(f"Keyword extraction failed: {e}") + raise ValueError(f"Research context extraction failed: {e}") async def _run_non_ai_analyzers(self, blog_content: str, keywords_data: Dict[str, Any]) -> Dict[str, Any]: """Run all non-AI analyzers in parallel for maximum performance""" @@ -170,10 +201,24 @@ class BlogContentSEOAnalyzer: sentences = len(re.findall(r'[.!?]+', content)) # Blog-specific structure analysis - has_introduction = any('introduction' in line.lower() or 'overview' in line.lower() - for line in lines[:10]) - has_conclusion = any('conclusion' in line.lower() or 'summary' in line.lower() - for line in lines[-10:]) + content_lower = content.lower() + first_500 = content_lower[:500] if len(content) > 500 else content_lower + last_500 = content_lower[-500:] if len(content) > 500 else content_lower + has_introduction = any('introduction' in line.lower() or 'overview' in line.lower() + for line in lines[:10]) or any( + phrase in first_500 for phrase in [ + 'in this', 'this article', 'this guide', 'this post', + 'we will', "you'll learn", "let's explore", "whether you're", + 'in this section', 'this blog post', 'here we', 'today we', + "we'll explore", "we'll cover", "we'll dive" + ]) + has_conclusion = any('conclusion' in line.lower() or 'summary' in line.lower() + for line in lines[-10:]) or any( + phrase in last_500 for phrase in [ + 'in conclusion', 'to summarize', 'in summary', 'bottom line', + 'key takeaways', 'remember that', "as we've seen", 'wrapping up', + 'final thoughts', 'to conclude', 'in short', 'overall' + ]) has_cta = any('call to action' in line.lower() or 'learn more' in line.lower() for line in lines) @@ -187,7 +232,7 @@ class BlogContentSEOAnalyzer: 'has_conclusion': has_conclusion, 'has_call_to_action': has_cta, 'structure_score': structure_score, - 'recommendations': self._get_structure_recommendations(sections, has_introduction, has_conclusion) + 'recommendations': self._get_structure_recommendations(sections, has_introduction, has_conclusion, content) } except Exception as e: logger.error(f"Content structure analysis failed: {e}") @@ -332,33 +377,36 @@ class BlogContentSEOAnalyzer: raise e # Helper methods for calculations and scoring + + @staticmethod + def _sigmoid(x: float, midpoint: float = 0.0, steepness: float = 1.0) -> float: + """Sigmoid function for smooth scoring curves. Returns 0-1.""" + try: + return 1.0 / (1.0 + math.exp(-steepness * (x - midpoint))) + except OverflowError: + return 0.0 if x < midpoint else 1.0 + def _calculate_structure_score(self, sections: int, paragraphs: int, has_intro: bool, has_conclusion: bool) -> int: - """Calculate content structure score""" - score = 0 - - # Section count (optimal: 3-8 sections) - if 3 <= sections <= 8: - score += 30 - elif sections < 3: - score += 15 - else: - score += 20 - - # Paragraph count (optimal: 8-20 paragraphs) - if 8 <= paragraphs <= 20: - score += 30 - elif paragraphs < 8: - score += 15 - else: - score += 20 - - # Introduction and conclusion - if has_intro: - score += 20 - if has_conclusion: - score += 20 - - return min(score, 100) + """Calculate content structure score using continuous curves instead of rigid brackets. + + Sections: optimal around 5, steep penalties below 3 or above 10. + Paragraphs: optimal around 12, steep penalties below 5 or above 25. + Intro/conclusion: binary bonuses. + """ + # Section score: peaks around 4-6, decays smoothly for low or high counts + section_score = self._sigmoid(sections, midpoint=4, steepness=0.8) * 40 + if sections > 8: + section_score = max(section_score * 0.7, 10) + + # Paragraph score: peaks around 12, decays for low or high counts + para_score = self._sigmoid(paragraphs, midpoint=10, steepness=0.3) * 40 + if paragraphs > 25: + para_score = max(para_score * 0.6, 8) + + intro_score = 10 if has_intro else 0 + conclusion_score = 10 if has_conclusion else 0 + + return int(min(max(section_score + para_score + intro_score + conclusion_score, 5), 100)) def _calculate_keyword_density(self, content: str, keyword: str) -> float: """Calculate keyword density percentage""" @@ -397,21 +445,20 @@ class BlogContentSEOAnalyzer: return total_words / len(paragraphs) def _calculate_readability_score(self, metrics: Dict[str, float]) -> int: - """Calculate overall readability score""" - # Flesch Reading Ease (0-100, higher is better) - flesch_score = metrics.get('flesch_reading_ease', 0) - - # Convert to 0-100 scale - if flesch_score >= 80: - return 90 - elif flesch_score >= 60: - return 80 - elif flesch_score >= 40: - return 70 - elif flesch_score >= 20: - return 60 - else: - return 50 + """Calculate readability score using a continuous sigmoid curve on Flesch Reading Ease. + + Maps Flesch 0-100 to a score that: + - Below 30: 25-45 (hard to read) + - 30-50: 45-65 (moderate) + - 50-70: 65-85 (good range) + - 70-90: 85-95 (excellent) + - Above 90: 95-100 (very easy) + """ + flesch = metrics.get('flesch_reading_ease', 0) + score = self._sigmoid(flesch, midpoint=50, steepness=0.06) * 70 + 25 + if flesch > 80: + score = min(score + 5, 100) + return int(min(max(score, 20), 100)) def _determine_target_audience(self, metrics: Dict[str, float]) -> str: """Determine target audience based on readability metrics""" @@ -427,183 +474,228 @@ class BlogContentSEOAnalyzer: return "Graduate level" def _calculate_content_depth_score(self, word_count: int, vocabulary_diversity: float) -> int: - """Calculate content depth score""" - score = 0 - - # Word count (optimal: 800-2000 words) - if 800 <= word_count <= 2000: - score += 50 - elif word_count < 800: - score += 30 - else: - score += 40 - - # Vocabulary diversity (optimal: 0.4-0.7) - if 0.4 <= vocabulary_diversity <= 0.7: - score += 50 - elif vocabulary_diversity < 0.4: - score += 30 - else: - score += 40 - - return min(score, 100) + """Calculate content depth score using continuous curves. + + Word count: sigmoid peaks around 1200, gentle decay for long content. + Vocabulary diversity: sigmoid peaks around 0.55, decay for low or high diversity. + """ + # Word count score: optimal around 1000-1500, smooth decay below 500 + word_score = self._sigmoid(word_count, midpoint=800, steepness=0.005) * 55 + if word_count > 3000: + word_score = min(word_score, 40) + elif word_count < 300: + word_score = min(word_score, 15) + + # Vocabulary diversity score: optimal around 0.5-0.65, too high is repetitive, too low is shallow + diversity_score = self._sigmoid(vocabulary_diversity, midpoint=0.45, steepness=12) * 45 + if vocabulary_diversity < 0.3: + diversity_score = min(diversity_score, 15) + + return int(min(max(word_score + diversity_score, 5), 100)) def _calculate_flow_score(self, transition_count: int, word_count: int) -> int: - """Calculate content flow score""" + """Calculate content flow score using continuous curve. + + Transition density is typically low (most content has 0.5-3 per 100 words + of the specific transition words we track). The sigmoid midpoint is set at 1.0 + with moderate steepness to produce a reasonable spread. + """ if word_count == 0: - return 0 - + return 15 + transition_density = transition_count / (word_count / 100) - - # Optimal transition density: 1-3 per 100 words - if 1 <= transition_density <= 3: - return 90 - elif transition_density < 1: - return 60 - else: - return 70 + + # Sigmoid centered at 1.0 (decent density), moderate steepness + score = self._sigmoid(transition_density, midpoint=1.0, steepness=2.5) * 50 + 40 + if transition_density > 5: + score = max(score - 10, 35) + return int(min(max(score, 15), 100)) def _calculate_heading_hierarchy_score(self, h1: List[str], h2: List[str], h3: List[str]) -> int: - """Calculate heading hierarchy score""" - score = 0 - - # Should have exactly 1 H1 - if len(h1) == 1: - score += 40 - elif len(h1) == 0: - score += 20 + """Calculate heading hierarchy score using continuous curves. + + H1: 1 is ideal, score decays for 0 or 2+. + H2: 4-6 is ideal, score decays for low or high counts. + H3: presence adds bonus. + """ + # H1 score: clear peak at 1 + h1_count = len(h1) + if h1_count == 1: + h1_score = 40 + elif h1_count == 0: + h1_score = 15 else: - score += 10 - - # Should have 3-8 H2 headings - if 3 <= len(h2) <= 8: - score += 40 - elif len(h2) < 3: - score += 20 - else: - score += 30 - - # H3 headings are optional but good for structure - if len(h3) > 0: - score += 20 - - return min(score, 100) + h1_score = max(40 // h1_count, 8) + + # H2 score: sigmoid peaks around 4-6 + h2_count = len(h2) + h2_score = self._sigmoid(h2_count, midpoint=4, steepness=1.0) * 40 + if h2_count == 0: + h2_score = 5 + elif h2_count > 10: + h2_score = max(h2_score * 0.6, 10) + + # H3 bonus: presence is good, diminishing returns + h3_score = min(len(h3) * 5, 20) + + return int(min(max(h1_score + h2_score + h3_score, 10), 100)) def _calculate_keyword_score(self, keyword_analysis: Dict[str, Any]) -> int: - """Calculate keyword optimization score""" - score = 0 - - # Check keyword density (optimal: 1-3%) + """Calculate keyword optimization score using continuous curves. + + Density: sigmoid centered at 2%, smooth peak. + Heading presence: binary bonus per keyword. + Early occurrence: sigmoid bonus. + Missing/over-optimization: smooth penalties. + """ + density_score = 0 + heading_bonus = 0 + early_bonus = 0 + densities = keyword_analysis.get('keyword_density', {}) + keyword_count = max(len(densities), 1) + for keyword, density in densities.items(): - if 1 <= density <= 3: - score += 30 - elif density < 1: - score += 15 - else: - score += 10 - - # Check keyword distribution + # Density score: smooth peak at 1-3%, sigmoid curve + density_contribution = self._sigmoid(density, midpoint=2.0, steepness=2.0) * 30 + if density > 4: + density_contribution *= 0.5 # penalty for over-optimization + density_score += density_contribution + + density_score = density_score / keyword_count + + # Heading presence bonus distributions = keyword_analysis.get('keyword_distribution', {}) for keyword, dist in distributions.items(): if dist.get('in_headings', False): - score += 20 - if dist.get('first_occurrence', -1) < 100: # Early occurrence - score += 20 - - # Penalize missing keywords - missing = len(keyword_analysis.get('missing_keywords', [])) - score -= missing * 10 - - # Penalize over-optimization - over_opt = len(keyword_analysis.get('over_optimization', [])) - score -= over_opt * 15 - - return max(0, min(score, 100)) + heading_bonus += 15 + first_occ = dist.get('first_occurrence', -1) + if isinstance(first_occ, (int, float)) and 0 <= first_occ < 150: + early_bonus += int(self._sigmoid(first_occ, midpoint=75, steepness=-0.04) * 15) + + # Penalize missing keywords and over-optimization + missing_penalty = len(keyword_analysis.get('missing_keywords', [])) * 8 + over_opt_penalty = len(keyword_analysis.get('over_optimization', [])) * 12 + + raw = density_score + heading_bonus + early_bonus - missing_penalty - over_opt_penalty + return int(min(max(raw, 5), 100)) def _calculate_weighted_score(self, scores: Dict[str, int]) -> int: - """Calculate weighted overall score""" + """Calculate weighted overall score. + + AI insight engagement_score is unreliable (no ground truth) so it's excluded + from the overall score. The remaining 5 categories are re-weighted to sum to 1.0. + AI insights are still reported in category_scores for display but don't affect + the overall score. + """ weights = { - 'structure': 0.2, + 'structure': 0.20, 'keywords': 0.25, - 'readability': 0.2, - 'quality': 0.15, - 'headings': 0.1, - 'ai_insights': 0.1 + 'readability': 0.20, + 'quality': 0.20, + 'headings': 0.15, } - + weighted_sum = sum(scores.get(key, 0) * weight for key, weight in weights.items()) - return int(weighted_sum) + return int(min(max(weighted_sum, 0), 100)) # Recommendation methods - def _get_structure_recommendations(self, sections: int, has_intro: bool, has_conclusion: bool) -> List[str]: - """Get structure recommendations""" + def _get_structure_recommendations(self, sections: int, has_intro: bool, has_conclusion: bool, content: str = '') -> List[str]: + """Get structure recommendations based on actual content analysis""" recommendations = [] - + if sections < 3: - recommendations.append("Add more sections to improve content structure") + recommendations.append("Add more sections to improve content structure and topic coverage") elif sections > 8: - recommendations.append("Consider combining some sections for better flow") - - if not has_intro: - recommendations.append("Add an introduction section to set context") - - if not has_conclusion: - recommendations.append("Add a conclusion section to summarize key points") - + recommendations.append("Consider combining some sections for better flow and readability") + + # More robust intro detection: check first 200 chars for first-person address, + # question, or general hook โ€” not just keyword matching + first_200 = (content[:500] if content else '').lower() + intro_indicators = any([ + has_intro, + '?' in first_200[:200], + any(phrase in first_200 for phrase in ['in this', 'this article', 'this guide', 'this post', 'we will', "you'll learn", "let's explore", "whether you're"]), + first_200.strip().startswith('# '), + ]) + if not intro_indicators: + recommendations.append("Add an introduction that hooks the reader and previews key topics") + + # More robust conclusion detection + last_500 = (content[-500:] if content else '').lower() + conclusion_indicators = any([ + has_conclusion, + any(phrase in last_500 for phrase in ['in conclusion', 'to summarize', 'in summary', 'bottom line', 'key takeaways', 'remember that', 'as we\'ve seen']), + ]) + if not conclusion_indicators: + recommendations.append("Add a conclusion to summarize key points and provide next steps") + return recommendations def _get_readability_recommendations(self, metrics: Dict[str, float], avg_sentence_length: float) -> List[str]: - """Get readability recommendations""" + """Get readability recommendations with specific, actionable guidance""" recommendations = [] - + flesch_score = metrics.get('flesch_reading_ease', 0) - - if flesch_score < 60: - recommendations.append("Simplify language and use shorter sentences") - - if avg_sentence_length > 20: - recommendations.append("Break down long sentences for better readability") - - if flesch_score > 80: - recommendations.append("Consider adding more technical depth for expert audience") - + + if flesch_score < 30: + recommendations.append("Content is very difficult to read โ€” shorten sentences, use simpler words, and break up complex ideas") + elif flesch_score < 50: + recommendations.append("Content is fairly complex โ€” consider simplifying some sentences and adding more plain-language explanations") + + if avg_sentence_length > 25: + recommendations.append(f"Average sentence length is {avg_sentence_length:.0f} words โ€” aim for 15-20 words per sentence for better readability") + elif avg_sentence_length > 20: + recommendations.append("Some sentences may be too long โ€” try breaking a few into shorter ones for easier reading") + + if flesch_score > 80 and flesch_score < 95: + recommendations.append("Readability is very good โ€” consider adding slightly more technical depth for expert credibility") + return recommendations def _get_content_quality_recommendations(self, word_count: int, vocabulary_diversity: float, transition_count: int) -> List[str]: - """Get content quality recommendations""" + """Get content quality recommendations with specific, actionable guidance""" recommendations = [] - - if word_count < 800: - recommendations.append("Expand content with more detailed explanations") - elif word_count > 2000: - recommendations.append("Consider breaking into multiple posts") - - if vocabulary_diversity < 0.4: - recommendations.append("Use more varied vocabulary to improve engagement") - - if transition_count < 3: - recommendations.append("Add more transition words to improve flow") - + + if word_count < 400: + recommendations.append("Content is significantly underdeveloped โ€” expand with detailed explanations, examples, and supporting evidence") + elif word_count < 800: + recommendations.append("Content is thin โ€” add depth with specific examples, data points, and detailed explanations for each section") + elif word_count > 3000: + recommendations.append("Content is very long โ€” consider whether all sections are necessary or if some could be a separate post") + + if vocabulary_diversity < 0.35: + recommendations.append("Vocabulary is highly repetitive โ€” use synonyms and varied phrasing to improve engagement") + elif vocabulary_diversity < 0.45: + recommendations.append("Vocabulary variety could be improved โ€” try rephrasing repeated terms for more natural flow") + + if transition_count < 2: + recommendations.append("Very few transition words found โ€” add connectors like 'however', 'therefore', 'furthermore' between ideas") + elif transition_count < 5: + recommendations.append("Add more transition words to improve the flow between paragraphs and sections") + return recommendations def _get_heading_recommendations(self, h1: List[str], h2: List[str], h3: List[str]) -> List[str]: - """Get heading recommendations""" + """Get heading recommendations with specific, actionable guidance""" recommendations = [] - + if len(h1) == 0: - recommendations.append("Add a main H1 heading") + recommendations.append("Add a main H1 heading โ€” this is the primary title for both readers and search engines") elif len(h1) > 1: - recommendations.append("Use only one H1 heading per post") - + recommendations.append(f"Found {len(h1)} H1 headings โ€” use only one H1 per post for clarity. Convert extras to H2.") + if len(h2) < 3: - recommendations.append("Add more H2 headings to structure content") - elif len(h2) > 8: - recommendations.append("Consider using H3 headings for better hierarchy") - + recommendations.append(f"Only {len(h2)} H2 headings found โ€” add section headings to break up content and improve scanning") + elif len(h2) > 10: + recommendations.append(f"{len(h2)} H2 headings may be too many โ€” consider using H3 subheadings within sections for better hierarchy") + + if len(h2) >= 3 and len(h3) == 0 and len(h2) > 5: + recommendations.append("Consider adding H3 subheadings within longer H2 sections for better content hierarchy") + return recommendations - async def _run_ai_analysis(self, blog_content: str, keywords_data: Dict[str, Any], non_ai_results: Dict[str, Any], user_id: str = None) -> Dict[str, Any]: + async def _run_ai_analysis(self, blog_content: str, keywords_data: Dict[str, Any], non_ai_results: Dict[str, Any], user_id: str = None, outline: Optional[List[Dict[str, Any]]] = None, competitive_advantage: Optional[str] = None) -> Dict[str, Any]: """Run single AI analysis for structured insights (provider-agnostic)""" if not user_id: raise ValueError("user_id is required for subscription checking. Please provide Clerk user ID.") @@ -612,7 +704,9 @@ class BlogContentSEOAnalyzer: context = { 'blog_content': blog_content, 'keywords_data': keywords_data, - 'non_ai_results': non_ai_results + 'non_ai_results': non_ai_results, + 'outline': outline or [], + 'competitive_advantage': competitive_advantage or '', } # Create AI prompt for structured analysis @@ -624,10 +718,18 @@ class BlogContentSEOAnalyzer: "content_quality_insights": { "type": "object", "properties": { - "engagement_score": {"type": "number"}, "value_proposition": {"type": "string"}, "content_gaps": {"type": "array", "items": {"type": "string"}}, - "improvement_suggestions": {"type": "array", "items": {"type": "string"}} + "improvement_suggestions": {"type": "array", "items": {"type": "string"}}, + "content_depth_indicators": { + "type": "object", + "properties": { + "has_specific_data_points": {"type": "boolean"}, + "has_examples_or_illustrations": {"type": "boolean"}, + "has_actionable_takeaways": {"type": "boolean"}, + "depth_assessment": {"type": "string"} + } + } } }, "seo_optimization_insights": { @@ -648,13 +750,12 @@ class BlogContentSEOAnalyzer: "ux_improvements": {"type": "array", "items": {"type": "string"}} } }, - "competitive_analysis": { + "content_strengths": { "type": "object", "properties": { - "content_differentiation": {"type": "string"}, - "unique_value": {"type": "string"}, - "competitive_advantages": {"type": "array", "items": {"type": "string"}}, - "market_positioning": {"type": "string"} + "strongest_sections": {"type": "array", "items": {"type": "string"}}, + "unique_value_points": {"type": "array", "items": {"type": "string"}}, + "reader_value_assessment": {"type": "string"} } } } @@ -675,37 +776,85 @@ class BlogContentSEOAnalyzer: raise e def _create_ai_analysis_prompt(self, context: Dict[str, Any]) -> str: - """Create AI analysis prompt""" + """Create AI analysis prompt with research context and outline awareness""" blog_content = context['blog_content'] keywords_data = context['keywords_data'] non_ai_results = context['non_ai_results'] + outline = context.get('outline', []) + competitive_advantage = context.get('competitive_advantage', '') + + # Build outline context + outline_text = "" + if outline: + section_names = [] + for sec in outline[:8]: + heading = sec.get('heading', '') if isinstance(sec, dict) else getattr(sec, 'heading', '') + subheadings = sec.get('subheadings', []) if isinstance(sec, dict) else getattr(sec, 'subheadings', []) + sub_text = f" (subtopics: {', '.join(subheadings[:4])})" if subheadings else "" + target_words = sec.get('target_words', '') if isinstance(sec, dict) else getattr(sec, 'target_words', '') + word_text = f" [~{target_words} words]" if target_words else "" + section_names.append(f" - {heading}{sub_text}{word_text}") + outline_text = "\n".join(section_names) + + # Build research context block + research_block = "" + content_gaps = keywords_data.get('content_gaps', []) + competitive_advantages = keywords_data.get('competitive_advantages', []) + search_queries = keywords_data.get('search_queries', []) + suggested_angles = keywords_data.get('suggested_angles', []) + industry_leaders = keywords_data.get('industry_leaders', []) + + if content_gaps: + research_block += f"\nCONTENT GAPS (from competitor analysis): {', '.join(content_gaps[:5])}" + if competitive_advantages: + research_block += f"\nOUR COMPETITIVE ADVANTAGES: {', '.join(competitive_advantages[:3])}" + if competitive_advantage: + research_block += f"\nFOCUSED COMPETITIVE ADVANTAGE: {competitive_advantage}" + if search_queries: + research_block += f"\nORIGINAL SEARCH QUERIES: {', '.join(search_queries[:5])}" + if suggested_angles: + research_block += f"\nPLANNED CONTENT ANGLES: {', '.join(suggested_angles[:3])}" + if industry_leaders: + research_block += f"\nINDUSTRY LEADERS: {', '.join(industry_leaders[:3])}" prompt = f""" - Analyze this blog content for SEO optimization and user experience. Provide structured insights based on the content and keyword data. + Analyze this blog content for SEO optimization and user experience. Provide structured insights based ONLY on what is actually present in the content and keyword data. Do NOT fabricate data, statistics, competitor names, or case studies that are not in the content. BLOG CONTENT: - {blog_content[:2000]}... + {blog_content[:3000]}... KEYWORDS DATA: Primary Keywords: {keywords_data.get('primary', [])} Long-tail Keywords: {keywords_data.get('long_tail', [])} Semantic Keywords: {keywords_data.get('semantic', [])} - Search Intent: {keywords_data.get('search_intent', 'informational')} + Search Intent: {keywords_data.get('search_intent', 'informational')}{research_block} - NON-AI ANALYSIS RESULTS: - Structure Score: {non_ai_results.get('content_structure', {}).get('structure_score', 0)} - Readability Score: {non_ai_results.get('readability_analysis', {}).get('readability_score', 0)} - Content Quality Score: {non_ai_results.get('content_quality', {}).get('content_depth_score', 0)} + MEASURED ANALYSIS RESULTS: + Structure Score: {non_ai_results.get('content_structure', {}).get('structure_score', 0)}/100 + Readability Score: {non_ai_results.get('readability_analysis', {}).get('readability_score', 0)}/100 + Content Quality Score: {non_ai_results.get('content_quality', {}).get('content_depth_score', 0)}/100 + Heading Hierarchy Score: {non_ai_results.get('heading_structure', {}).get('heading_hierarchy_score', 0)}/100 + Word Count: {non_ai_results.get('content_quality', {}).get('word_count', 0)} + Sections: {non_ai_results.get('content_structure', {}).get('total_sections', 0)} + Has Introduction: {non_ai_results.get('content_structure', {}).get('has_introduction', False)} + Has Conclusion: {non_ai_results.get('content_structure', {}).get('has_conclusion', False)}{f""" - Please provide: - 1. Content Quality Insights: Assess engagement potential, value proposition, content gaps, and improvement suggestions - 2. SEO Optimization Insights: Evaluate keyword optimization, content relevance, search intent alignment, and SEO improvements - 3. User Experience Insights: Analyze content flow, readability, engagement factors, and UX improvements - 4. Competitive Analysis: Identify content differentiation, unique value, competitive advantages, and market positioning + PLANNED OUTLINE STRUCTURE: +{outline_text}""" if outline_text else ""} +{f""" - Focus on actionable insights that can improve the blog's performance and user engagement. + FOCUSED ADVANTAGE: {competitive_advantage}""" if competitive_advantage else ""} + + IMPORTANT: SEO metadata (title tag, meta description, Open Graph tags, Twitter cards, JSON-LD schema) will be generated in a separate step. Do NOT recommend adding or improving meta descriptions, title tags, OG tags, or structured data markup โ€” focus only on content-level improvements. + + Provide: + 1. Content Quality Insights: Assess the value proposition based on actual content. Identify specific content gaps (what TOPICS from the planned outline or competitor analysis are missing; do NOT suggest adding case studies unless the content references specific studies). Suggest improvements grounded in what the content currently covers. + 2. Content Depth Indicators: Objectively assess whether the content contains specific data points, examples, or actionable takeaways. These are binary assessments based on what's actually in the text. + 3. SEO Optimization Insights: Evaluate keyword optimization based on the provided keyword data. Assess content relevance and search intent alignment relative to the original search queries. + 4. User Experience Insights: Analyze content flow and readability. Identify engagement factors present in the text. + 5. Content Strengths: Identify the strongest sections of the content by heading name. Note unique value points the content provides. Do NOT invent competitive advantages โ€” only describe what makes THIS content valuable based on the competitive advantages and content gaps listed above. """ - + return prompt def _compile_blog_seo_results(self, non_ai_results: Dict[str, Any], ai_insights: Dict[str, Any], keywords_data: Dict[str, Any]) -> Dict[str, Any]: @@ -719,13 +868,28 @@ class BlogContentSEOAnalyzer: raise ValueError("AI insights are missing") # Calculate category scores + # Compute ai_depth_score from measurable content_depth_indicators instead of + # hallucinated engagement_score. If depth_indicators are present, score based on + # boolean flags; otherwise default to 50 (neutral). + ai_quality = ai_insights.get('content_quality_insights', {}) + depth_indicators = ai_quality.get('content_depth_indicators', {}) + if depth_indicators: + depth_flags = [ + depth_indicators.get('has_specific_data_points', False), + depth_indicators.get('has_examples_or_illustrations', False), + depth_indicators.get('has_actionable_takeaways', False), + ] + depth_score = 40 + (sum(depth_flags) * 20) # 40 baseline + 20 per true flag = 40-100 + else: + depth_score = 50 + category_scores = { 'structure': non_ai_results.get('content_structure', {}).get('structure_score', 0), 'keywords': self._calculate_keyword_score(non_ai_results.get('keyword_analysis', {})), 'readability': non_ai_results.get('readability_analysis', {}).get('readability_score', 0), 'quality': non_ai_results.get('content_quality', {}).get('content_depth_score', 0), 'headings': non_ai_results.get('heading_structure', {}).get('heading_hierarchy_score', 0), - 'ai_insights': ai_insights.get('content_quality_insights', {}).get('engagement_score', 0) + 'ai_insights': depth_score } # Calculate overall score @@ -757,7 +921,15 @@ class BlogContentSEOAnalyzer: def _compile_actionable_recommendations(self, non_ai_results: Dict[str, Any], ai_insights: Dict[str, Any]) -> List[Dict[str, Any]]: """Compile actionable recommendations from all sources""" recommendations = [] - + + # Metadata-related keywords to filter out (handled by metadata generator) + metadata_keywords = ['meta description', 'title tag', 'og tag', 'open graph', + 'twitter card', 'json-ld', 'schema markup', 'structured data markup'] + + def _is_metadata_rec(rec_text: str) -> bool: + rec_lower = rec_text.lower() + return any(kw in rec_lower for kw in metadata_keywords) + # Structure recommendations structure_recs = non_ai_results.get('content_structure', {}).get('recommendations', []) for rec in structure_recs: @@ -767,7 +939,7 @@ class BlogContentSEOAnalyzer: 'recommendation': rec, 'impact': 'Improves content organization and user experience' }) - + # Keyword recommendations keyword_recs = non_ai_results.get('keyword_analysis', {}).get('recommendations', []) for rec in keyword_recs: @@ -777,7 +949,7 @@ class BlogContentSEOAnalyzer: 'recommendation': rec, 'impact': 'Improves search engine visibility' }) - + # Readability recommendations readability_recs = non_ai_results.get('readability_analysis', {}).get('recommendations', []) for rec in readability_recs: @@ -787,17 +959,40 @@ class BlogContentSEOAnalyzer: 'recommendation': rec, 'impact': 'Improves user engagement and comprehension' }) - - # AI insights recommendations + + # AI insights recommendations (filter out metadata-related recs) ai_recs = ai_insights.get('content_quality_insights', {}).get('improvement_suggestions', []) for rec in ai_recs: + if not _is_metadata_rec(rec): + recommendations.append({ + 'category': 'Content Quality', + 'priority': 'Medium', + 'recommendation': rec, + 'impact': 'Enhances content value and engagement' + }) + + # SEO improvement recommendations (filter metadata recs) + seo_recs = ai_insights.get('seo_optimization_insights', {}).get('seo_improvements', []) + for rec in seo_recs: + if not _is_metadata_rec(rec): + recommendations.append({ + 'category': 'SEO', + 'priority': 'Medium', + 'recommendation': rec, + 'impact': 'Improves search engine optimization' + }) + + # Content strengths as informational (lower priority) + content_strengths = ai_insights.get('content_strengths', {}) + strong_sections = content_strengths.get('strongest_sections', []) + if strong_sections: recommendations.append({ - 'category': 'Content Quality', - 'priority': 'Medium', - 'recommendation': rec, - 'impact': 'Enhances content value and engagement' + 'category': 'Strengths', + 'priority': 'Low', + 'recommendation': f"Strongest sections: {', '.join(strong_sections[:3])}. Consider expanding these areas further.", + 'impact': 'Leverages existing content strengths' }) - + return recommendations def _create_visualization_data(self, category_scores: Dict[str, int], non_ai_results: Dict[str, Any]) -> Dict[str, Any]: @@ -851,7 +1046,7 @@ class BlogContentSEOAnalyzer: 'weakest_category': weakest_category[0], 'key_strengths': self._identify_key_strengths(category_scores), 'key_weaknesses': self._identify_key_weaknesses(category_scores), - 'ai_summary': ai_insights.get('content_quality_insights', {}).get('value_proposition', '') + 'ai_summary': ai_insights.get('content_quality_insights', {}).get('value_proposition', 'Content analysis completed.') } def _identify_key_strengths(self, category_scores: Dict[str, int]) -> List[str]: diff --git a/backend/services/blog_writer/seo/blog_seo_metadata_generator.py b/backend/services/blog_writer/seo/blog_seo_metadata_generator.py index e431d93a..d671d93c 100644 --- a/backend/services/blog_writer/seo/blog_seo_metadata_generator.py +++ b/backend/services/blog_writer/seo/blog_seo_metadata_generator.py @@ -84,14 +84,14 @@ class BlogSEOMetadataGenerator: raise e def _extract_keywords_from_research(self, research_data: Dict[str, Any]) -> Dict[str, Any]: - """Extract keywords and context from research data""" + """Extract keywords and context from research data, including competitor analysis and content gaps.""" try: keyword_analysis = research_data.get('keyword_analysis', {}) # Handle both 'semantic' and 'semantic_keywords' field names semantic_keywords = keyword_analysis.get('semantic', []) or keyword_analysis.get('semantic_keywords', []) - return { + result = { 'primary_keywords': keyword_analysis.get('primary', []), 'long_tail_keywords': keyword_analysis.get('long_tail', []), 'semantic_keywords': semantic_keywords, @@ -100,6 +100,30 @@ class BlogSEOMetadataGenerator: 'target_audience': research_data.get('target_audience', 'general'), 'industry': research_data.get('industry', 'general') } + + # Extract competitor analysis context + competitor_analysis = research_data.get('competitor_analysis', {}) + if competitor_analysis: + result['content_gaps'] = competitor_analysis.get('content_gaps', []) + result['industry_leaders'] = competitor_analysis.get('industry_leaders', []) + result['opportunities'] = competitor_analysis.get('opportunities', []) + result['competitive_advantages'] = competitor_analysis.get('competitive_advantages', []) + else: + result['content_gaps'] = [] + result['industry_leaders'] = [] + result['opportunities'] = [] + result['competitive_advantages'] = [] + + # Extract search queries + search_queries = research_data.get('search_queries', []) + result['search_queries'] = search_queries if isinstance(search_queries, list) else [] + + # Extract suggested angles + suggested_angles = research_data.get('suggested_angles', []) + result['suggested_angles'] = suggested_angles if isinstance(suggested_angles, list) else [] + + return result + except Exception as e: logger.error(f"Failed to extract keywords from research: {e}") return { @@ -109,7 +133,13 @@ class BlogSEOMetadataGenerator: 'all_keywords': [], 'search_intent': 'informational', 'target_audience': 'general', - 'industry': 'general' + 'industry': 'general', + 'content_gaps': [], + 'industry_leaders': [], + 'opportunities': [], + 'competitive_advantages': [], + 'search_queries': [], + 'suggested_angles': [] } async def _generate_core_metadata( @@ -194,18 +224,20 @@ class BlogSEOMetadataGenerator: # Check if we got a valid response if not ai_response or not isinstance(ai_response, dict): logger.error("Core metadata generation failed: Invalid response from LLM") - # Return fallback response - primary_keywords = ', '.join(keywords_data.get('primary_keywords', ['content'])) + # Return fallback response using content-derived values + primary_kw = keywords_data.get('primary_keywords', ['content']) + primary_kw_first = primary_kw[0] if primary_kw else 'content' word_count = len(blog_content.split()) + slug = re.sub(r'[^a-z0-9]+', '-', blog_title.lower())[:50].strip('-') return { 'seo_title': blog_title, - 'meta_description': f'Learn about {primary_keywords.split(", ")[0] if primary_keywords else "this topic"}.', - 'url_slug': blog_title.lower().replace(' ', '-').replace(':', '').replace(',', '')[:50], - 'blog_tags': primary_keywords.split(', ') if primary_keywords else ['content'], - 'blog_categories': ['Content Marketing', 'Technology'], - 'social_hashtags': ['#content', '#marketing', '#technology'], + 'meta_description': f'Discover insights about {primary_kw_first}. Comprehensive guide with practical tips and expert analysis.', + 'url_slug': slug, + 'blog_tags': primary_kw[:5] if isinstance(primary_kw, list) else [primary_kw_first], + 'blog_categories': [primary_kw_first.title(), 'Guide'], + 'social_hashtags': [f'#{primary_kw_first.replace(" ", "")}', '#guide', '#tips'], 'reading_time': max(1, word_count // 200), - 'focus_keyword': primary_keywords.split(', ')[0] if primary_keywords else 'content' + 'focus_keyword': primary_kw_first } logger.info(f"Core metadata generation completed. Response keys: {list(ai_response.keys())}") @@ -302,36 +334,41 @@ class BlogSEOMetadataGenerator: # Check if we got a valid response if not ai_response or not isinstance(ai_response, dict) or not ai_response.get('open_graph') or not ai_response.get('twitter_card') or not ai_response.get('json_ld_schema'): logger.error("Social metadata generation failed: Invalid or empty response from LLM") - # Return fallback response + # Return fallback response using content-derived values + primary_kw = keywords_data.get('primary_keywords', ['content']) + primary_kw_first = primary_kw[0] if primary_kw else 'content' + slug = re.sub(r'[^a-z0-9]+', '-', blog_title.lower())[:50].strip('-') + word_count = len(blog_content.split()) + current_date = datetime.now().isoformat() return { 'open_graph': { 'title': blog_title, - 'description': f'Learn about {keywords_data.get("primary_keywords", ["this topic"])[0] if keywords_data.get("primary_keywords") else "this topic"}.', - 'image': 'https://example.com/image.jpg', + 'description': f'Discover insights about {primary_kw_first}. Comprehensive guide with practical tips.', + 'image': '', 'type': 'article', - 'site_name': 'Your Website', - 'url': 'https://example.com/blog' + 'site_name': '', + 'url': f'https://example.com/blog/{slug}' }, 'twitter_card': { 'card': 'summary_large_image', 'title': blog_title, - 'description': f'Learn about {keywords_data.get("primary_keywords", ["this topic"])[0] if keywords_data.get("primary_keywords") else "this topic"}.', - 'image': 'https://example.com/image.jpg', - 'site': '@yourwebsite', - 'creator': '@author' + 'description': f'Explore our guide on {primary_kw_first}.', + 'image': '', + 'site': '', + 'creator': '' }, 'json_ld_schema': { '@context': 'https://schema.org', '@type': 'Article', 'headline': blog_title, - 'description': f'Learn about {keywords_data.get("primary_keywords", ["this topic"])[0] if keywords_data.get("primary_keywords") else "this topic"}.', - 'author': {'@type': 'Person', 'name': 'Author Name'}, - 'publisher': {'@type': 'Organization', 'name': 'Your Website'}, - 'datePublished': '2025-01-01T00:00:00Z', - 'dateModified': '2025-01-01T00:00:00Z', - 'mainEntityOfPage': 'https://example.com/blog', - 'keywords': keywords_data.get('primary_keywords', ['content']), - 'wordCount': len(blog_content.split()) + 'description': f'Comprehensive guide about {primary_kw_first}.', + 'author': {'@type': 'Person', 'name': ''}, + 'publisher': {'@type': 'Organization', 'name': ''}, + 'datePublished': current_date, + 'dateModified': current_date, + 'mainEntityOfPage': f'https://example.com/blog/{slug}', + 'keywords': primary_kw[:5] if isinstance(primary_kw, list) else [primary_kw_first], + 'wordCount': word_count } } @@ -408,21 +445,53 @@ OUTLINE STRUCTURE: - Content hierarchy: Well-structured with {len(outline)} main sections """ - # Extract SEO analysis insights + # Extract SEO analysis insights with weakness-aware guidance seo_context = "" if seo_analysis: overall_score = seo_analysis.get('overall_score', seo_analysis.get('seo_score', 0)) category_scores = seo_analysis.get('category_scores', {}) - applied_recs = seo_analysis.get('applied_recommendations', []) + applied_recs = seo_analysis.get('applied_recommendations') or [] + + # Build weakness-specific guidance for metadata + weakness_guidance = [] + kw_score = category_scores.get('keywords', category_scores.get('Keywords', 0)) + if kw_score < 70: + weakness_guidance.append("Keyword optimization is weak โ€” ensure title and description prominently feature primary keywords") + read_score = category_scores.get('readability', category_scores.get('Readability', 0)) + if read_score < 70: + weakness_guidance.append("Readability needs improvement โ€” use clear, accessible language in the meta description") + struct_score = category_scores.get('structure', category_scores.get('Structure', 0)) + if struct_score < 70: + weakness_guidance.append("Content structure needs improvement โ€” the title should clearly signal the content structure") seo_context = f""" SEO ANALYSIS RESULTS: - Overall SEO Score: {overall_score}/100 -- Category Scores: Structure {category_scores.get('structure', category_scores.get('Structure', 0))}, Keywords {category_scores.get('keywords', category_scores.get('Keywords', 0))}, Readability {category_scores.get('readability', category_scores.get('Readability', 0))} +- Category Scores: Structure {struct_score}, Keywords {kw_score}, Readability {read_score} - Applied Recommendations: {len(applied_recs)} SEO optimizations have been applied - Content Quality: Optimized for search engines with keyword focus +{f"- WEAKNESS GUIDANCE: {'; '.join(weakness_guidance)}" if weakness_guidance else ""} """ + # Build research context block + research_block = "" + content_gaps = keywords_data.get('content_gaps', []) + competitive_advantages = keywords_data.get('competitive_advantages', []) + search_queries = keywords_data.get('search_queries', []) + suggested_angles = keywords_data.get('suggested_angles', []) + industry_leaders = keywords_data.get('industry_leaders', []) + + if content_gaps: + research_block += f"\nCONTENT GAPS (from competitor analysis): {', '.join(content_gaps[:5])}" + if competitive_advantages: + research_block += f"\nOUR KEY DIFFERENTIATORS: {', '.join(competitive_advantages[:3])}" + if search_queries: + research_block += f"\nORIGINAL SEARCH QUERIES: {', '.join(search_queries[:5])}" + if suggested_angles: + research_block += f"\nCONTENT ANGLES: {', '.join(suggested_angles[:3])}" + if industry_leaders: + research_block += f"\nINDUSTRY LEADERS: {', '.join(industry_leaders[:3])}" + # Get more content context (key sections instead of just first 1000 chars) content_preview = self._extract_content_highlights(blog_content) @@ -443,6 +512,7 @@ SEMANTIC KEYWORDS: {semantic_keywords} SEARCH INTENT: {search_intent} TARGET AUDIENCE: {target_audience} INDUSTRY: {industry} +{research_block} {seo_context} @@ -525,6 +595,18 @@ Generate metadata that is personalized, compelling, and SEO-optimized. overall_score = seo_analysis.get('overall_score', seo_analysis.get('seo_score', 0)) seo_context = f"\nSEO SCORE: {overall_score}/100 (optimized content)\n" + # Build research context for social metadata + research_block = "" + content_gaps = keywords_data.get('content_gaps', []) + competitive_advantages = keywords_data.get('competitive_advantages', []) + search_queries = keywords_data.get('search_queries', []) + if content_gaps: + research_block += f"\nCONTENT GAPS: {', '.join(content_gaps[:3])}" + if competitive_advantages: + research_block += f"\nDIFFERENTIATORS: {', '.join(competitive_advantages[:3])}" + if search_queries: + research_block += f"\nSEARCH QUERIES: {', '.join(search_queries[:4])}" + content_preview = self._extract_content_highlights(blog_content, 1500) prompt = f""" @@ -539,6 +621,7 @@ KEYWORDS: {primary_keywords} TARGET AUDIENCE: {target_audience} INDUSTRY: {industry} CURRENT DATE: {current_date} +{research_block} === GENERATION REQUIREMENTS === @@ -551,20 +634,20 @@ CURRENT DATE: {current_date} - url: Generate canonical URL structure 2. TWITTER CARD: - - card: "summary_large_image" - - title: 70 chars max, optimized for Twitter audience - - description: 200 chars max with relevant hashtags inline - - image: Match Open Graph image - - site: @yourwebsite (placeholder, user should update) - - creator: @author (placeholder, user should update) + - card: "summary_large_image" + - title: 70 chars max, optimized for Twitter audience + - description: 200 chars max with relevant hashtags inline + - image: Match Open Graph image + - site: Leave empty string (user will add their Twitter handle) + - creator: Leave empty string (user will add author Twitter handle) 3. JSON-LD SCHEMA (Article): - - @context: "https://schema.org" - - @type: "Article" - - headline: Article title (optimized) - - description: Article description (150-200 chars) - - author: {{"@type": "Person", "name": "Author Name"}} (placeholder) - - publisher: {{"@type": "Organization", "name": "Site Name", "logo": {{"@type": "ImageObject", "url": "logo-url"}}}} + - @context: "https://schema.org" + - @type: "Article" + - headline: Article title (optimized) + - description: Article description (150-200 chars) + - author: {{"@type": "Person", "name": ""}} (leave empty, user will add author name) + - publisher: {{"@type": "Organization", "name": ""}} (leave empty, user will add site name) - datePublished: {current_date} - dateModified: {current_date} - mainEntityOfPage: {{"@type": "WebPage", "@id": "canonical-url"}} @@ -633,35 +716,109 @@ Make it engaging, personalized for {target_audience}, and optimized for {industr raise e def _calculate_optimization_score(self, core_metadata: Dict[str, Any], social_metadata: Dict[str, Any]) -> int: - """Calculate overall optimization score for the generated metadata""" + """Calculate metadata quality score based on content relevance and adherence to best practices. + + Unlike the old completeness-based score (which just checked field existence), + this assigns quality-weighted points based on how well each field is optimized. + """ try: score = 0 - # Check core metadata completeness - if core_metadata.get('seo_title'): - score += 15 - if core_metadata.get('meta_description'): - score += 15 - if core_metadata.get('url_slug'): - score += 10 - if core_metadata.get('blog_tags'): - score += 10 - if core_metadata.get('blog_categories'): - score += 10 - if core_metadata.get('social_hashtags'): - score += 10 - if core_metadata.get('focus_keyword'): - score += 10 + # Title quality (0-15): Length in 50-60 chars is optimal + seo_title = core_metadata.get('seo_title', '') + if seo_title: + title_len = len(seo_title) + if 50 <= title_len <= 60: + score += 15 + elif 40 <= title_len <= 70: + score += 10 + elif title_len > 0: + score += 5 - # Check social metadata completeness - if social_metadata.get('open_graph'): + # Meta description quality (0-15): Length in 150-160 chars is optimal, has CTA + meta_desc = core_metadata.get('meta_description', '') + if meta_desc: + desc_len = len(meta_desc) + desc_lower = meta_desc.lower() + has_cta = any(phrase in desc_lower for phrase in ['learn', 'discover', 'find', 'get', 'explore', 'how to', 'why', 'tips', 'guide', 'try', 'start']) + if 150 <= desc_len <= 160 and has_cta: + score += 15 + elif 120 <= desc_len <= 170: + score += 10 if has_cta else 7 + elif desc_len > 0: + score += 4 + + # URL slug quality (0-10): Short, keyword-rich, no stop words + url_slug = core_metadata.get('url_slug', '') + if url_slug: + slug_parts = url_slug.strip('/').split('/') + slug_words = slug_parts[-1].split('-') if slug_parts else [] + if 2 <= len(slug_words) <= 5: + score += 10 + elif len(slug_words) > 0: + score += 5 + + # Tags and categories quality (0-20) + blog_tags = core_metadata.get('blog_tags', []) + blog_categories = core_metadata.get('blog_categories', []) + if blog_tags and len(blog_tags) >= 3: score += 10 - if social_metadata.get('twitter_card'): + elif blog_tags: score += 5 - if social_metadata.get('json_ld_schema'): + if blog_categories and len(blog_categories) >= 1: + score += 10 + elif blog_categories: score += 5 - return min(score, 100) # Cap at 100 + # Social hashtags (0-10): Relevant and non-spammy + social_hashtags = core_metadata.get('social_hashtags', []) + if social_hashtags and 3 <= len(social_hashtags) <= 8: + score += 10 + elif social_hashtags: + score += 5 + + # Focus keyword (0-10): Present and relevant + focus_keyword = core_metadata.get('focus_keyword', '') + if focus_keyword and seo_title and focus_keyword.lower() in seo_title.lower(): + score += 10 + elif focus_keyword: + score += 4 + + # Open Graph quality (0-10): Has title, description, correct type + og = social_metadata.get('open_graph', {}) + if og: + og_score = 0 + if og.get('title') and len(og.get('title', '')) > 10: + og_score += 4 + if og.get('description') and 100 <= len(og.get('description', '')) <= 200: + og_score += 4 + if og.get('type') == 'article': + og_score += 2 + score += og_score + + # Twitter Card quality (0-5) + twitter = social_metadata.get('twitter_card', {}) + if twitter: + tw_score = 0 + if twitter.get('title') and len(twitter.get('title', '')) > 10: + tw_score += 3 + if twitter.get('card') == 'summary_large_image': + tw_score += 2 + score += tw_score + + # JSON-LD quality (0-5): Has headline, description, datePublished + json_ld = social_metadata.get('json_ld_schema', {}) + if json_ld: + jl_score = 0 + if json_ld.get('headline'): + jl_score += 2 + if json_ld.get('description'): + jl_score += 2 + if json_ld.get('datePublished'): + jl_score += 1 + score += jl_score + + return min(score, 100) except Exception as e: logger.error(f"Failed to calculate optimization score: {e}") diff --git a/backend/services/blog_writer/seo/blog_seo_recommendation_applier.py b/backend/services/blog_writer/seo/blog_seo_recommendation_applier.py index 4de34f01..b47e505c 100644 --- a/backend/services/blog_writer/seo/blog_seo_recommendation_applier.py +++ b/backend/services/blog_writer/seo/blog_seo_recommendation_applier.py @@ -2,6 +2,13 @@ Applies actionable SEO recommendations to existing blog content using the provider-agnostic `llm_text_gen` dispatcher. Ensures GPT_PROVIDER parity. + +Key design principles: +- Make TARGETED edits, not full rewrites +- Preserve existing content structure and factual claims +- Only modify sections that have applicable recommendations +- Never fabricate statistics, case studies, or citations +- Ground changes in research sources when available """ import asyncio @@ -15,7 +22,7 @@ logger = get_service_logger("blog_seo_recommendation_applier") class BlogSEORecommendationApplier: - """Apply actionable SEO recommendations to blog content.""" + """Apply actionable SEO recommendations to blog content with targeted edits.""" def __init__(self): logger.debug("Initialized BlogSEORecommendationApplier") @@ -35,6 +42,7 @@ class BlogSEORecommendationApplier: persona = payload.get("persona", {}) tone = payload.get("tone") audience = payload.get("audience") + competitive_advantage = payload.get("competitive_advantage", "") if not sections: return {"success": False, "error": "No sections provided for recommendation application"} @@ -43,16 +51,21 @@ class BlogSEORecommendationApplier: logger.warning("apply_recommendations called without recommendations") return {"success": True, "title": title, "sections": sections, "applied": []} + # Determine which sections actually need changes based on recommendations + sections_to_edit = self._identify_affected_sections(sections, recommendations) + prompt = self._build_prompt( title=title, introduction=introduction, sections=sections, + sections_to_edit=sections_to_edit, outline=outline, research=research, recommendations=recommendations, persona=persona, tone=tone, audience=audience, + competitive_advantage=competitive_advantage, ) schema = { @@ -87,14 +100,14 @@ class BlogSEORecommendationApplier: "required": ["sections"], } - logger.info("Applying SEO recommendations via llm_text_gen") + logger.info("Applying SEO recommendations via llm_text_gen (targeted edit mode)") result = await asyncio.to_thread( llm_text_gen, prompt, None, schema, - user_id, # Pass user_id for subscription checking + user_id, max_tokens=8192, ) @@ -106,14 +119,12 @@ class BlogSEORecommendationApplier: raw_sections = result.get("sections", []) or [] normalized_sections: List[Dict[str, Any]] = [] - # Warn if LLM returned different number of sections (may miss intro/conclusion added as new sections) if len(raw_sections) != len(sections): logger.warning( f"LLM returned {len(raw_sections)} sections but {len(sections)} were sent. " "Extra sections will be ignored; missing sections fall back to original content." ) - # Build lookup table from updated sections using their identifiers updated_map: Dict[str, Dict[str, Any]] = {} for updated in raw_sections: section_id = str( @@ -156,7 +167,6 @@ class BlogSEORecommendationApplier: mapped = updated_map.get(fallback_id) if not mapped and raw_sections: - # Fall back to positional match if identifier lookup failed candidate = raw_sections[index] if index < len(raw_sections) else {} heading = ( candidate.get("heading") @@ -176,7 +186,6 @@ class BlogSEORecommendationApplier: } if not mapped: - # Fallback to original content if nothing else available mapped = { "id": fallback_id, "heading": original.get("heading") or original.get("title") or f"Section {index + 1}", @@ -190,12 +199,11 @@ class BlogSEORecommendationApplier: logger.info("SEO recommendations applied successfully") - # Extract updated introduction from LLM response if available updated_introduction = result.get("introduction") or "" if updated_introduction and updated_introduction != introduction: logger.info(f"Introduction updated: {len(updated_introduction)} chars") elif not updated_introduction: - updated_introduction = introduction # fall back to original + updated_introduction = introduction return { "success": True, @@ -205,37 +213,133 @@ class BlogSEORecommendationApplier: "applied": applied, } + def _identify_affected_sections(self, sections: List[Dict[str, Any]], recommendations: List[Dict[str, Any]]) -> List[str]: + """Identify which section IDs are likely affected by the recommendations. + + Maps recommendation categories to section headings for targeted editing. + Returns a list of section IDs that should be edited. + """ + affected_ids = set() + + for rec in recommendations: + category = (rec.get("category") or "").lower() + rec_text = (rec.get("recommendation") or "").lower() + + # Structure recommendations affect first/last sections or all sections + if category == "structure": + if sections: + affected_ids.add(str(sections[0].get("id", "section_1"))) + affected_ids.add(str(sections[-1].get("id", f"section_{len(sections)}"))) + # "Add more sections" or "too many sections" affects all + if "more section" in rec_text or "combine" in rec_text or "flow" in rec_text: + for s in sections: + affected_ids.add(str(s.get("id", ""))) + continue + + # Keyword recommendations affect all sections (keywords should be spread) + if category == "keywords": + for s in sections: + affected_ids.add(str(s.get("id", ""))) + continue + + # Readability affects all sections + if category == "readability": + for s in sections: + affected_ids.add(str(s.get("id", ""))) + continue + + # Content quality โ€” try to match recommendation to specific section headings + if category in ("content quality", "content", "seo"): + heading_keywords = { + s.get("heading", "").lower(): str(s.get("id", "")) + for s in sections + } + matched = False + for heading_lower, section_id in heading_keywords.items(): + rec_words = rec_text.split() + if any(word in heading_lower for word in rec_words if len(word) > 3): + affected_ids.add(section_id) + matched = True + if not matched: + # Affect first and last sections (intro/conclusion) as common targets + if sections: + affected_ids.add(str(sections[0].get("id", "section_1"))) + affected_ids.add(str(sections[-1].get("id", f"section_{len(sections)}"))) + + # Filter out empty IDs and return + return [sid for sid in affected_ids if sid] + def _build_prompt( self, *, title: str, introduction: str, sections: List[Dict[str, Any]], + sections_to_edit: List[str], outline: List[Dict[str, Any]], research: Dict[str, Any], recommendations: List[Dict[str, Any]], persona: Dict[str, Any], tone: str | None, audience: str | None, + competitive_advantage: str = "", ) -> str: - """Construct prompt for applying recommendations.""" + """Construct prompt for applying targeted recommendations.""" - sections_str = [] + # Build research context block + research_block = "" + keyword_analysis = research.get("keyword_analysis", {}) if research else {} + primary_keywords = ", ".join(keyword_analysis.get("primary", [])[:8]) or "None" + competitor_analysis = research.get("competitor_analysis", {}) if research else {} + search_queries = research.get("search_queries", []) if research else [] + suggested_angles = research.get("suggested_angles", []) if research else [] + content_gaps = competitor_analysis.get("content_gaps", []) if competitor_analysis else [] + competitive_advantages = competitor_analysis.get("competitive_advantages", []) if competitor_analysis else [] + + research_block += f"\nPRIMARY KEYWORDS: {primary_keywords}" + if content_gaps: + research_block += f"\nCONTENT GAPS (address these in your edits): {', '.join(content_gaps[:5])}" + if competitive_advantages: + research_block += f"\nKEY DIFFERENTIATORS (emphasize these): {', '.join(competitive_advantages[:3])}" + if competitive_advantage: + research_block += f"\nPRIMARY ADVANTAGE: {competitive_advantage}" + if search_queries: + research_block += f"\nTARGET SEARCH QUERIES: {', '.join(search_queries[:5])}" + if suggested_angles: + research_block += f"\nCONTENT ANGLES: {', '.join(suggested_angles[:3])}" + + # Build per-section content with edit markers + sections_content = [] for section in sections: - sections_str.append( - f"ID: {section.get('id', 'section')}, Heading: {section.get('heading', 'Untitled')}\n" - f"Current Content:\n{section.get('content', '')}\n" - ) + section_id = str(section.get("id", "section")) + heading = section.get("heading", "Untitled") + content = section.get("content", "") + needs_edit = section_id in sections_to_edit + + section_text = f"--- SECTION (ID: {section_id}, Heading: \"{heading}\")" + if needs_edit: + section_text += " [NEEDS EDITS based on recommendations]" + else: + section_text += " [KEEP AS-IS - no changes needed]" + section_text += f" ---\n{content}\n" + sections_content.append(section_text) + + sections_str = "\n\n".join(sections_content) - outline_str = "\n".join( - [ - f"- {item.get('heading', 'Section')} (Target words: {item.get('target_words', 'N/A')})" - for item in outline - ] - ) - - research_summary = research.get("keyword_analysis", {}) if research else {} - primary_keywords = ", ".join(research_summary.get("primary", [])[:10]) or "None" + # Build outline with subheadings and key points + outline_parts = [] + for item in outline: + heading = item.get("heading", "Section") + target_words = item.get("target_words", "N/A") + subheadings = item.get("subheadings", []) + key_points = item.get("key_points", []) + line = f"- {heading} (Target: {target_words} words)" + if subheadings: + line += f" | Subheadings: {', '.join(subheadings[:4])}" + if key_points: + line += f" | Key points: {', '.join(key_points[:4])}" + outline_parts.append(line) + outline_str = "\n".join(outline_parts) if outline_parts else "No outline supplied" recommendations_str = [] for rec in recommendations: @@ -248,7 +352,7 @@ class BlogSEORecommendationApplier: persona_str = ( f"Persona: {persona}\n" if persona - else "Persona: (not provided)\n" + else "" ) style_guidance = [] @@ -258,44 +362,47 @@ class BlogSEORecommendationApplier: style_guidance.append(f"Target audience: {audience}") style_str = "\n".join(style_guidance) if style_guidance else "Maintain current tone and audience alignment." - prompt = f""" -You are an expert SEO content strategist. Update the blog content to apply the actionable recommendations. + intro_text = introduction if introduction else "(No introduction currently โ€” write one ONLY if a recommendation specifically asks for it)" -Current Title: {title} + prompt = f"""You are a careful SEO content editor making TARGETED edits to an existing blog post. Your job is to apply specific SEO recommendations with PRECISION โ€” not to rewrite the entire post. -Current Introduction: -{introduction if introduction else '(No introduction exists โ€” write a compelling one if the recommendations require it)'} +CRITICAL RULES โ€” YOU MUST FOLLOW THESE: +1. PRESERVE existing content. Only make MINIMAL, targeted changes to address specific recommendations. Do NOT rewrite sections that are working well. +2. NEVER fabricate statistics, case studies, expert quotes, research data, or specific numbers unless they are explicitly stated in the research context below. +3. NEVER add content that contradicts or goes beyond what the research sources support. +4. KEEP the same emotional tone and writing style as the original content. +5. Return EXACTLY the same number of sections with EXACTLY the same IDs. Do NOT add, remove, or rename sections. +6. For sections marked [KEEP AS-IS], return the content UNCHANGED โ€” copy it verbatim. +7. For sections marked [NEEDS EDITS], make ONLY the specific changes needed to address the applicable recommendations. +8. Do NOT add introductions, conclusions, or case studies unless a recommendation EXPLICITLY asks for one. -Primary Keywords (for context): {primary_keywords} +{research_block} -Outline Overview: -{outline_str or 'No outline supplied'} +PLANNED OUTLINE STRUCTURE: +{outline_str} -Existing Sections: -{''.join(sections_str)} +CURRENT TITLE: {title} -Actionable Recommendations to Apply: +CURRENT INTRODUCTION: +{intro_text} + +CURRENT SECTIONS: +{sections_str} + +RECOMMENDATIONS TO APPLY: {''.join(recommendations_str)} +{persona_str}{style_str} -{persona_str} -{style_str} - -Instructions: -1. Carefully apply the recommendations while preserving factual accuracy and research alignment. -2. You MUST return EXACTLY the same number of sections, with EXACTLY the same IDs as provided above. Do NOT add or remove sections. -3. If a recommendation says content is MISSING (e.g. missing introduction or conclusion), incorporate that missing content into the MOST APPROPRIATE existing section: - - Missing introduction โ†’ PREPEND introductory content to the FIRST section's existing content. - - Missing conclusion โ†’ APPEND concluding content to the LAST section's existing content. - - For other missing content, add it to the section whose heading best matches the recommendation. -4. Additionally, if an introduction is missing or weak, write a compelling introduction in the "introduction" field of your response. If the current introduction is adequate, return it unchanged. -5. Improve clarity, flow, and SEO optimization per the guidance. -6. Return updated sections in the requested JSON format. -7. Provide a short summary of which recommendations were addressed. +INSTRUCTIONS: +- For sections marked [KEEP AS-IS]: Copy the content EXACTLY as provided. Do not change a single word. +- For sections marked [NEEDS EDITS]: Make the MINIMUM changes needed to address the recommendations. If a recommendation says "add transition words", add 2-3 transitions โ€” do not rewrite the paragraph. If it says "use more varied vocabulary", replace 2-3 repetitive words โ€” do not rewrite the section. +- If a recommendation asks for an introduction and none exists, write a brief 2-3 sentence introduction that naturally leads into the first section. Do NOT fabricate hooks or statistics. +- If a recommendation asks for a conclusion, append 2-3 sentences summarizing key takeaways to the LAST section. Do NOT fabricate conclusions that don't follow from the actual content. +- Return ALL sections, including the ones you did NOT change. +- Provide a summary of which recommendations you addressed and what specific changes you made. """ return prompt -__all__ = ["BlogSEORecommendationApplier"] - - +__all__ = ["BlogSEORecommendationApplier"] \ No newline at end of file diff --git a/backend/services/integrations/wix/auth.py b/backend/services/integrations/wix/auth.py index 62373170..349c9ad5 100644 --- a/backend/services/integrations/wix/auth.py +++ b/backend/services/integrations/wix/auth.py @@ -66,19 +66,20 @@ class WixAuthService: response.raise_for_status() return response.json() - def get_site_info(self, access_token: str, meta_site_id: Optional[str] = None) -> Dict[str, Any]: + def get_site_info(self, access_token: str) -> Dict[str, Any]: headers = { 'Authorization': f'Bearer {access_token}', 'Content-Type': 'application/json', } if self.client_id: headers['wix-client-id'] = self.client_id - if meta_site_id: - headers['wix-site-id'] = meta_site_id response = requests.get(f"{self.base_url}/sites/v1/site", headers=headers) if response.status_code == 404: logger.warning("Wix site info not found (404) โ€” user may not have a published site or token lacks sites scope") return {"_no_site": True, "error": "No Wix site found for this account"} + if response.status_code == 401: + logger.warning("Wix site info request unauthorized (401) โ€” token expired or invalid") + return {"_auth_failed": True, "error": "Token expired or invalid โ€” reconnect required"} response.raise_for_status() return response.json() diff --git a/backend/services/integrations/wix/blog.py b/backend/services/integrations/wix/blog.py index b2ba1b94..0aa6f773 100644 --- a/backend/services/integrations/wix/blog.py +++ b/backend/services/integrations/wix/blog.py @@ -3,6 +3,7 @@ import requests from loguru import logger from .retry import wix_api_call_with_retry, WixAPIError +from .auth_utils import get_wix_headers class WixBlogService: @@ -14,40 +15,7 @@ class WixBlogService: def headers(self, access_token: str, extra: Optional[Dict[str, str]] = None) -> Dict[str, str]: """Build headers with automatic token type detection.""" - h: Dict[str, str] = { - 'Content-Type': 'application/json', - } - - if access_token: - # Normalize token to string if needed - if not isinstance(access_token, str): - from .utils import normalize_token_string - normalized = normalize_token_string(access_token) - if normalized: - access_token = normalized - else: - access_token = str(access_token) - - token = access_token.strip() - if token: - if token.startswith('OauthNG.JWS.'): - h['Authorization'] = f'Bearer {token}' - logger.debug("Using Wix OAuth token with Bearer prefix (OauthNG.JWS. format detected)") - elif token.startswith('IST.'): - h['Authorization'] = token - logger.debug("Using Wix API key for authorization (IST. format detected)") - elif token.count('.') == 2: - h['Authorization'] = f'Bearer {token}' - logger.debug("Using OAuth Bearer token for authorization (JWT: 2 dots)") - else: - h['Authorization'] = token - logger.debug("Using token as-is for authorization") - - if self.client_id: - h['wix-client-id'] = self.client_id - if extra: - h.update(extra) - return h + return get_wix_headers(access_token, client_id=self.client_id, extra=extra) def create_draft_post(self, access_token: str, payload: Dict[str, Any], extra_headers: Optional[Dict[str, str]] = None) -> Dict[str, Any]: """Create draft post with retry logic and consolidated logging.""" @@ -144,9 +112,9 @@ class WixBlogService: """Create a blog tag with retry logic.""" url = f"{self.base_url}/blog/v3/tags" headers = self.headers(access_token, extra_headers) - payload: Dict[str, Any] = {'label': label, 'fieldsets': ['URL']} + payload: Dict[str, Any] = {'tag': {'label': label}, 'fieldsets': ['URL']} if language: - payload['language'] = language + payload['tag']['language'] = language try: return wix_api_call_with_retry('POST', url, headers, json_payload=payload, max_attempts=3) diff --git a/backend/services/integrations/wix/blog_publisher.py b/backend/services/integrations/wix/blog_publisher.py index cfc0efd3..f33f5b66 100644 --- a/backend/services/integrations/wix/blog_publisher.py +++ b/backend/services/integrations/wix/blog_publisher.py @@ -171,6 +171,16 @@ def validate_ricos_content(ricos_content: Dict[str, Any]) -> Dict[str, Any]: return ricos_content +_UUID_RE = re.compile(r'^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$', re.IGNORECASE) + +def _looks_like_uuid(value: str) -> bool: + try: + uuid.UUID(value) + return True + except (ValueError, AttributeError): + return bool(_UUID_RE.match(value)) + + def validate_payload_no_none(obj, path=""): """Recursively validate that no None values exist in the payload""" if obj is None: @@ -224,6 +234,7 @@ def create_blog_post( """ # ===== PRE-FLIGHT VALIDATION ===== errors = [] + warnings = [] if not member_id: errors.append("memberId is required for third-party apps creating blog posts") @@ -279,6 +290,18 @@ def create_blog_post( except Exception: pass + # Add wix-site-id to headers for all API calls (categories, tags, draft post) + resolved_site_id = site_id or meta_site_id or os.getenv('WIX_SITE_ID') + if resolved_site_id: + headers['wix-site-id'] = resolved_site_id + logger.info(f"Using wix-site-id: {resolved_site_id[:8]}... (source: {'param' if site_id else 'token' if meta_site_id else 'env'})") + else: + token_str = str(access_token) + if token_str.startswith('IST.'): + logger.error("IST. API key requires WIX_SITE_ID environment variable or site_id parameter.") + else: + logger.warning("No wix-site-id found โ€” API calls may fail if token requires it") + # Quick permission test (only log failures) try: test_headers = get_wix_headers(access_token) @@ -296,14 +319,34 @@ def create_blog_post( # Convert markdown to Ricos # PRIMARY: Use Wix Ricos Documents API for best formatting support (tables, complex markdown, etc.) - # FALLBACK: Use custom parser if Wix API fails + # FALLBACK: Use custom parser if Wix API fails (no length limit, handles tables natively) + has_table = bool(re.search(r'^\|.*\|', content, re.MULTILINE)) + + # Pre-check: Wix Ricos API has a 10,000 character limit for HTML input. + # Estimate HTML length from markdown (~1.4x expansion) to avoid silent truncation. + # If HTML would exceed limit, skip Wix API and use custom parser. + use_wix_api = True + MAX_HTML_LIMIT = 9800 + estimated_html_len = len(content) * 1.4 + if estimated_html_len > MAX_HTML_LIMIT: + logger.warning(f"Content too long for Wix Ricos API (est. HTML: {estimated_html_len:.0f} > {MAX_HTML_LIMIT}) โ€” using custom parser") + use_wix_api = False + ricos_content = None - try: - logger.info("Converting markdown via Wix Ricos Documents API...") - ricos_content = convert_via_wix_api(content, access_token, base_url) - logger.info(f"Wix API conversion succeeded: {len(ricos_content.get('nodes', []))} nodes") - except Exception as e: - logger.warning(f"Wix API conversion failed, falling back to custom parser: {e}") + if use_wix_api: + try: + logger.info("Converting markdown via Wix Ricos Documents API...") + ricos_content = convert_via_wix_api(content, access_token, base_url) + logger.info(f"Wix API conversion succeeded: {len(ricos_content.get('nodes', []))} nodes") + except Exception as e: + logger.warning(f"Wix API conversion failed, falling back to custom parser: {e}") + + # If markdown had tables and Wix API didn't produce TABLE nodes, fall back to custom parser + if has_table and ricos_content: + node_types = [n.get('type', '') for n in ricos_content.get('nodes', [])] + if 'TABLE' not in node_types: + logger.info("Markdown had tables but Wix API produced no TABLE nodes โ€” using custom parser for table support") + ricos_content = None if not ricos_content or not isinstance(ricos_content, dict) or 'nodes' not in ricos_content: logger.info("Using custom markdown parser for Ricos conversion") @@ -414,44 +457,50 @@ def create_blog_post( logger.info(f"Cover image imported: {media_id[:16]}...") else: logger.warning(f"Cover image import returned no valid media_id (type={type(media_id)}). Continuing without cover image.") + warnings.append("Cover image could not be imported โ€” post published without cover image.") except Exception as e: logger.warning(f"Cover image import failed (non-fatal): {e}. Continuing without cover image.") + warnings.append(f"Cover image import failed: {str(e)[:100]}") # Handle categories - can be either IDs (list of strings) or names (for lookup) category_ids_to_use = None if category_ids: # Check if these are IDs (UUIDs) or names if isinstance(category_ids, list) and len(category_ids) > 0: - # Assume IDs if first item looks like UUID (has hyphens and is long) + # Use proper UUID detection instead of fragile heuristic first_item = str(category_ids[0]) - if '-' in first_item and len(first_item) > 30: + if _looks_like_uuid(first_item): category_ids_to_use = category_ids elif lookup_categories_func: # These are names, need to lookup/create extra_headers = {} - if 'wix-site-id' in headers: - extra_headers['wix-site-id'] = headers['wix-site-id'] + if resolved_site_id: + extra_headers['wix-site-id'] = resolved_site_id category_ids_to_use = lookup_categories_func( access_token, category_ids, extra_headers if extra_headers else None ) + if not category_ids_to_use: + warnings.append(f"Categories could not be created ({len(category_ids)} requested) โ€” OAuth app may lack BLOG.CREATE-DRAFT scope.") # Handle tags - can be either IDs (list of strings) or names (for lookup) tag_ids_to_use = None if tag_ids: # Check if these are IDs (UUIDs) or names if isinstance(tag_ids, list) and len(tag_ids) > 0: - # Assume IDs if first item looks like UUID (has hyphens and is long) + # Use proper UUID detection instead of fragile heuristic first_item = str(tag_ids[0]) - if '-' in first_item and len(first_item) > 30: + if _looks_like_uuid(first_item): tag_ids_to_use = tag_ids elif lookup_tags_func: # These are names, need to lookup/create extra_headers = {} - if 'wix-site-id' in headers: - extra_headers['wix-site-id'] = headers['wix-site-id'] + if resolved_site_id: + extra_headers['wix-site-id'] = resolved_site_id tag_ids_to_use = lookup_tags_func( access_token, tag_ids, extra_headers if extra_headers else None ) + if not tag_ids_to_use: + warnings.append(f"Tags could not be created ({len(tag_ids)} requested) โ€” OAuth app may lack BLOG scope for tag management.") # Add categories if we have IDs (must be non-empty list of strings) # CRITICAL: Wix API rejects empty arrays or arrays with None/empty strings @@ -491,24 +540,12 @@ def create_blog_post( logger.debug("No SEO metadata provided to create_blog_post") try: - # Extract wix-site-id from token, parameter, or env var - extra_headers = {} - wix_site_id = site_id or os.getenv('WIX_SITE_ID') - if not wix_site_id: - from .utils import extract_meta_from_token - meta_info = extract_meta_from_token(access_token) - wix_site_id = meta_info.get('metaSiteId') + # Use wix-site-id already resolved earlier + extra_headers_final = {} + wix_site_id = resolved_site_id if wix_site_id: - extra_headers['wix-site-id'] = wix_site_id - logger.info(f"Using wix-site-id: {wix_site_id[:8]}... (source: {'param' if site_id else 'env' if os.getenv('WIX_SITE_ID') else 'token'})") - else: - token_str = str(access_token) - if token_str.startswith('IST.'): - logger.error("โŒ IST. API key requires WIX_SITE_ID environment variable or site_id parameter. " - "The token's tenant.id is the account ID, not the site ID. " - "Please set WIX_SITE_ID in your .env file to your Wix site's metaSiteId.") - else: - logger.warning("No wix-site-id found โ€” API calls may fail if token requires it") + extra_headers_final['wix-site-id'] = wix_site_id + logger.info(f"Using wix-site-id for draft post: {wix_site_id[:8]}...") except Exception as e: logger.debug(f"Could not extract wix-site-id from token: {e}") @@ -564,13 +601,17 @@ def create_blog_post( logger.info(f"๐Ÿ“ค Publishing to Wix: title='{blog_data['draftPost'].get('title', '')}', " f"nodes={len(rc.get('nodes', []))}") - result = blog_service.create_draft_post(access_token, blog_data, extra_headers or None) + result = blog_service.create_draft_post(access_token, blog_data, extra_headers_final or None) draft_post = result.get('draftPost', {}) post_id = draft_post.get('id', 'N/A') wix_logger.log_operation_result("Create Draft Post", True, result) logger.success(f"โœ… Wix: Blog post created - ID: {post_id}") + if warnings: + result['_warnings'] = warnings + logger.info(f"Publish completed with {len(warnings)} warnings: {'; '.join(warnings)}") + return result except TypeError as e: import traceback diff --git a/backend/services/integrations/wix/content.py b/backend/services/integrations/wix/content.py index 26e2267f..3ee4db5e 100644 --- a/backend/services/integrations/wix/content.py +++ b/backend/services/integrations/wix/content.py @@ -192,6 +192,120 @@ def _make_horizontal_rule_node() -> Dict[str, Any]: } +def _parse_markdown_table(lines: List[str], start_idx: int) -> tuple: + """ + Parse a markdown table starting at start_idx. + Returns (table_rows, alignments, next_idx) where table_rows is a list of lists of cell text, + and alignments is a list of column alignments ('left', 'center', 'right', None). + + Markdown tables look like: + | Header 1 | Header 2 | + |----------|----------| + | Cell 1 | Cell 2 | + + Alignment is detected from the separator row: + |:--------|:--------:|--------:| + """ + rows = [] + alignments = None + i = start_idx + + while i < len(lines): + line = lines[i].strip() + if not line or '|' not in line: + break + + cells = [cell.strip() for cell in line.strip('|').split('|')] + + # Detect separator row (contains only dashes, colons, pipes, spaces) + if i > start_idx and all( + set(cell.strip()) <= set('-:| ') for cell in cells + ): + alignments = [] + for cell in cells: + cell = cell.strip() + if cell.startswith(':') and cell.endswith(':'): + alignments.append('center') + elif cell.endswith(':'): + alignments.append('right') + elif cell.startswith(':'): + alignments.append('left') + else: + alignments.append(None) + i += 1 + continue + + rows.append(cells) + i += 1 + + return rows, alignments or [None] * (len(rows[0]) if rows else 1), i + + +def _make_table_node(header_row: List[str], body_rows: List[List[str]], alignments: List) -> Dict[str, Any]: + """Create a Ricos TABLE node with header and body rows, with formatting.""" + table_rows = [] + + all_rows = [header_row] + body_rows + for row_idx, row_cells in enumerate(all_rows): + cell_nodes = [] + for col_idx, cell_text in enumerate(row_cells): + text_nodes = parse_markdown_inline(cell_text) + # Bold header row cells + if row_idx == 0 and text_nodes: + for node in text_nodes: + if node.get('type') == 'TEXT': + decs = node['textData'].get('decorations', []) + if not any(d.get('type') == 'BOLD' for d in decs if isinstance(d, dict)): + decs_copy = decs.copy() + decs_copy.append({'type': 'BOLD'}) + node['textData']['decorations'] = decs_copy + + paragraph_node = { + 'id': str(uuid.uuid4()), + 'type': 'PARAGRAPH', + 'nodes': text_nodes if text_nodes else [{ + 'id': str(uuid.uuid4()), + 'type': 'TEXT', + 'nodes': [], + 'textData': {'text': cell_text or ' ', 'decorations': []} + }], + } + + cell_style = {'verticalAlign': 'top'} + if row_idx == 0: + cell_style['borderWidth'] = {'top': 2, 'bottom': 1, 'left': 1, 'right': 1} + # Apply column alignment + if alignments and col_idx < len(alignments) and alignments[col_idx]: + cell_style['textAlign'] = alignments[col_idx] + + cell_node = { + 'id': str(uuid.uuid4()), + 'type': 'TABLE_CELL', + 'nodes': [paragraph_node], + 'tableCellData': {'style': cell_style}, + } + cell_nodes.append(cell_node) + + row_node = { + 'id': str(uuid.uuid4()), + 'type': 'TABLE_ROW', + 'nodes': cell_nodes, + } + table_rows.append(row_node) + + num_cols = max(len(row) for row in all_rows) if all_rows else 1 + return { + 'id': str(uuid.uuid4()), + 'type': 'TABLE', + 'nodes': table_rows, + 'tableData': { + 'cols': num_cols, + 'rows': len(table_rows), + 'headerRow': 0 if header_row else -1, + }, + } + + def convert_content_to_ricos(content: str, images: List[str] = None) -> Dict[str, Any]: """ Convert markdown content into valid Ricos JSON format. @@ -205,6 +319,7 @@ def convert_content_to_ricos(content: str, images: List[str] = None) -> Dict[str - Code blocks (```language ... ```) - Inline images (![alt](url)) - Horizontal rules (---, ***, ___) + - Tables (| Header | Header |) """ if not content: content = "This is a post from ALwrity." @@ -245,6 +360,16 @@ def convert_content_to_ricos(content: str, images: List[str] = None) -> Dict[str i += 1 continue + # Markdown tables (lines starting with |) + if stripped.startswith('|') and i + 1 < len(lines) and '|' in lines[i + 1]: + table_rows, alignments, next_idx = _parse_markdown_table(lines, i) + if table_rows and len(table_rows) >= 1: + header_row = table_rows[0] + body_rows = table_rows[1:] if len(table_rows) > 1 else [] + nodes.append(_make_table_node(header_row, body_rows, alignments)) + i = next_idx + continue + # Headings if stripped.startswith('#'): level = len(stripped) - len(stripped.lstrip('#')) @@ -280,12 +405,11 @@ def convert_content_to_ricos(content: str, images: List[str] = None) -> Dict[str }) continue - # Unordered lists + # Unordered lists (including task lists) if (stripped.startswith('- ') or stripped.startswith('* ') or (stripped.startswith('-') and len(stripped) > 1 and stripped[1] != '-') or (stripped.startswith('*') and len(stripped) > 1 and stripped[1] != '*')): list_items = [] - list_marker = '- ' if stripped.startswith('-') else '* ' while i < len(lines): current_line = lines[i].strip() @@ -323,7 +447,14 @@ def convert_content_to_ricos(content: str, images: List[str] = None) -> Dict[str list_node_items = [] for item_text in list_items: - text_nodes = parse_markdown_inline(item_text) + # Detect task list items: "- [ ] task" or "- [x] task" + task_match = re.match(r'^\[([ xX])\]\s*(.*)', item_text) + if task_match: + checked = task_match.group(1).lower() == 'x' + prefix = 'โ˜‘ ' if checked else 'โ˜ ' + text_nodes = parse_markdown_inline(prefix + task_match.group(2)) + else: + text_nodes = parse_markdown_inline(item_text) paragraph_node = { 'id': str(uuid.uuid4()), 'type': 'PARAGRAPH', @@ -414,6 +545,7 @@ def convert_content_to_ricos(content: str, images: List[str] = None) -> Dict[str next_line.startswith('>') or next_line.startswith('![') or next_line.startswith('```') or + next_line.startswith('|') or re.match(r'^(---+|\*\*\*|___+)$', next_line) or re.match(r'^\d+\.\s+', next_line)): break diff --git a/backend/services/integrations/wix/logger.py b/backend/services/integrations/wix/logger.py index aee57ebb..6f58d84d 100644 --- a/backend/services/integrations/wix/logger.py +++ b/backend/services/integrations/wix/logger.py @@ -75,7 +75,10 @@ class WixLogger: logger.debug(f" Payload: {', '.join(parts)}") if error_body and status_code >= 400: - error_msg = error_body.get('message', 'Unknown error') + if isinstance(error_body, dict): + error_msg = error_body.get('message', 'Unknown error') + else: + error_msg = str(error_body) logger.error(f" Error: {error_msg}") if status_code == 500: logger.error(" โš ๏ธ Internal server error - check Wix API status") diff --git a/backend/services/integrations/wix/media.py b/backend/services/integrations/wix/media.py index f35cd5cd..5e0d003f 100644 --- a/backend/services/integrations/wix/media.py +++ b/backend/services/integrations/wix/media.py @@ -1,17 +1,35 @@ from typing import Any, Dict, Optional import requests +from urllib.parse import urlparse from loguru import logger from .retry import wix_api_call_with_retry, WixAPIError +def _is_valid_image_url(url: str) -> bool: + """Check if a URL looks like a valid, publicly accessible image URL for Wix import.""" + if not url or not isinstance(url, str): + return False + url = url.strip() + if url.startswith('data:'): + return False + parsed = urlparse(url) + if parsed.scheme not in ('http', 'https'): + return False + host = parsed.hostname or '' + if host in ('localhost', '127.0.0.1', 'example.com') or host.endswith('.example.com'): + return False + return True + + class WixMediaService: """Service for Wix Media Manager operations with retry logic and error handling.""" def __init__(self, base_url: str): self.base_url = base_url - def import_image(self, access_token: str, image_url: str, display_name: str) -> Optional[Dict[str, Any]]: + def import_image(self, access_token: str, image_url: str, display_name: str, + client_id: Optional[str] = None, site_id: Optional[str] = None) -> Optional[Dict[str, Any]]: """ Import external image to Wix Media Manager. @@ -22,6 +40,8 @@ class WixMediaService: access_token: Valid access token image_url: URL of the image to import display_name: Display name for the image + client_id: Optional Wix client ID for wix-client-id header + site_id: Optional Wix metaSiteId for wix-site-id header Returns: Media result dict with 'file' key, or None on failure @@ -29,10 +49,23 @@ class WixMediaService: Raises: WixAPIError: On non-retryable failure or after retries exhausted """ + if not _is_valid_image_url(image_url): + logger.warning(f"Skipping image import โ€” URL not valid for Wix: {image_url[:80]}...") + return None + + logger.info(f"Importing image to Wix: url={image_url[:80]}..., display_name={display_name}") headers = { 'Authorization': f'Bearer {access_token}', 'Content-Type': 'application/json', } + if client_id: + headers['wix-client-id'] = client_id + if not site_id: + from .utils import extract_meta_from_token + meta_info = extract_meta_from_token(access_token) + site_id = meta_info.get('metaSiteId') + if site_id: + headers['wix-site-id'] = site_id payload = { 'url': image_url, 'mediaType': 'IMAGE', diff --git a/backend/services/integrations/wix/seo.py b/backend/services/integrations/wix/seo.py index 899a72d9..ddf59e90 100644 --- a/backend/services/integrations/wix/seo.py +++ b/backend/services/integrations/wix/seo.py @@ -26,10 +26,6 @@ def build_seo_data(seo_metadata: Dict[str, Any], default_title: str = None) -> O Wix seoData object with settings.keywords and tags array, or None if empty """ seo_data = { - 'settings': { - 'keywords': [], - 'preventAutoRedirect': False # Required by Wix API schema - }, 'tags': [] } @@ -77,11 +73,7 @@ def build_seo_data(seo_metadata: Dict[str, Any], default_title: str = None) -> O # Keep main keyword + next 4 most important keywords_list = keywords_list[:5] - seo_data['settings']['keywords'] = keywords_list - - # Validate keywords list is not empty (or ensure at least one keyword exists) - if not seo_data['settings']['keywords']: - logger.warning("No keywords found in SEO metadata, adding empty keywords array") + seo_data['settings'] = {'keywords': keywords_list} # Build tags array (meta tags, Open Graph, etc.) tags_list = [] diff --git a/backend/services/today_workflow_service.py b/backend/services/today_workflow_service.py index f18a0f68..1ef5709a 100644 --- a/backend/services/today_workflow_service.py +++ b/backend/services/today_workflow_service.py @@ -6,6 +6,7 @@ from sqlalchemy.orm import Session from models.daily_workflow_models import DailyWorkflowPlan, DailyWorkflowTask from models.agent_activity_models import AgentAlert +from models.content_planning import CalendarEvent, ContentStrategy from services.agent_activity_service import AgentActivityService, build_agent_event_payload from services.llm_providers.main_text_generation import llm_text_gen from services.database import get_all_user_ids, get_session_for_user @@ -17,6 +18,82 @@ PILLAR_IDS = ["plan", "generate", "publish", "analyze", "engage", "remarket"] MIN_TASK_EVIDENCE_LINKS = 1 PLAN_CONTEXT_THRESHOLD = 0.65 +# Calendar โ†’ Workflow mapping +CALENDAR_CONTENT_PILLAR = "generate" + +_PLATFORM_ACTION_URL = { + "linkedin": "/linkedin-writer", + "facebook": "/facebook-writer", + "twitter": "/twitter-writer", + "instagram": "/instagram-writer", + "youtube": "/youtube-writer", + "tiktok": "/tiktok-writer", +} + +_CONTENT_ACTION_URL = { + "blog_post": "/blog-writer", + "linkedin_post": "/linkedin-writer", + "facebook_post": "/facebook-writer", + "seo_page": "/seo-dashboard", + "video": "/video-writer", +} + +_CONTENT_ESTIMATED_TIME = { + "blog_post": 45, "linkedin_post": 20, "facebook_post": 15, + "twitter_post": 10, "instagram_post": 15, "seo_page": 30, "video": 60, +} + + +def _resolve_calendar_action_url(content_type: str, platform: str) -> Optional[str]: + platform_lower = (platform or "").strip().lower() + if platform_lower in _PLATFORM_ACTION_URL: + return _PLATFORM_ACTION_URL[platform_lower] + ct_lower = (content_type or "").strip().lower() + if ct_lower in _CONTENT_ACTION_URL: + return _CONTENT_ACTION_URL[ct_lower] + logger.warning("No action_url mapping for calendar event content_type={!r} platform={!r}", content_type, platform) + return None + + +def _resolve_calendar_estimated_time(content_type: str) -> int: + return _CONTENT_ESTIMATED_TIME.get((content_type or "").strip().lower(), 30) + + +def _generate_calendar_event_plan(date: str, grounding: Dict[str, Any]) -> Dict[str, Any]: + calendar_events = grounding.get("calendar_events_today", []) + if not calendar_events: + return {"date": date, "tasks": []} + + tasks = [] + for event in calendar_events: + action_url = _resolve_calendar_action_url( + event.get("content_type", ""), event.get("platform", "") + ) + if action_url is None: + continue + + task = { + "pillarId": CALENDAR_CONTENT_PILLAR, + "title": (event.get("title") or "Untitled").strip()[:255], + "description": (event.get("description") or "").strip(), + "priority": "high", + "estimatedTime": _resolve_calendar_estimated_time(event.get("content_type", "")), + "actionType": "navigate", + "actionUrl": action_url, + "enabled": True, + "dependencies": [], + "metadata": { + "source": "calendar_event", + "source_event_id": event.get("id"), + "calendar_title": event.get("title"), + "content_type": event.get("content_type"), + "platform": event.get("platform"), + }, + } + tasks.append(task) + + return {"date": date, "tasks": tasks} + def _today_date_str() -> str: return datetime.now(timezone.utc).date().isoformat() @@ -47,70 +124,6 @@ def _proposal_order_key(proposal: Any) -> tuple: ) -def _fallback_tasks(date: str) -> List[Dict[str, Any]]: - return [ - { - "pillarId": "plan", - "title": "Review todayโ€™s plan", - "description": "Confirm priorities and adjust the content calendar for today.", - "priority": "high", - "estimatedTime": 15, - "actionType": "navigate", - "actionUrl": "/content-planning-dashboard", - "enabled": True, - }, - { - "pillarId": "generate", - "title": "Generate one core content asset", - "description": "Create a draft aligned with your current strategy and voice.", - "priority": "high", - "estimatedTime": 45, - "actionType": "navigate", - "actionUrl": "/blog-writer", - "enabled": True, - }, - { - "pillarId": "publish", - "title": "Publish or schedule todayโ€™s content", - "description": "Publish or schedule content across the selected channel(s).", - "priority": "medium", - "estimatedTime": 20, - "actionType": "navigate", - "actionUrl": "/content-planning-dashboard", - "enabled": True, - }, - { - "pillarId": "analyze", - "title": "Check semantic health and performance", - "description": "Review semantic health metrics and key performance indicators.", - "priority": "medium", - "estimatedTime": 15, - "actionType": "navigate", - "actionUrl": "/seo-dashboard", - "enabled": True, - }, - { - "pillarId": "engage", - "title": "Engage on one channel", - "description": "Respond to comments and share one post to keep momentum.", - "priority": "medium", - "estimatedTime": 15, - "actionType": "navigate", - "actionUrl": "/linkedin-writer", - "enabled": True, - }, - { - "pillarId": "remarket", - "title": "Repurpose and remarket content", - "description": "Create one repurposed snippet and distribute it to increase reach.", - "priority": "low", - "estimatedTime": 20, - "actionType": "navigate", - "actionUrl": "/facebook-writer", - "enabled": True, - }, - ] - def _is_coverage_guardrail_enabled(grounding: Dict[str, Any]) -> bool: workflow_config = grounding.get("workflow_config", {}) if isinstance(grounding, dict) else {} @@ -315,9 +328,6 @@ def _ensure_pillar_coverage( return sanitized_tasks covered_pillars = {task["pillarId"] for task in sanitized_tasks} - fallback_by_pillar = { - task["pillarId"]: task for task in (_sanitize_task(t) for t in _fallback_tasks(date)) if task - } for pillar_id in PILLAR_IDS: if pillar_id in covered_pillars: @@ -327,15 +337,6 @@ def _ensure_pillar_coverage( if generated: sanitized_tasks.append(generated) covered_pillars.add(pillar_id) - continue - - controlled_fallback = fallback_by_pillar.get(pillar_id) - if controlled_fallback: - metadata = controlled_fallback.get("metadata") if isinstance(controlled_fallback.get("metadata"), dict) else {} - metadata["source"] = "controlled_fallback" - controlled_fallback["metadata"] = metadata - sanitized_tasks.append(controlled_fallback) - covered_pillars.add(pillar_id) return sanitized_tasks @@ -367,6 +368,28 @@ def build_grounding_context(db: Session, user_id: str, date: str) -> Dict[str, A if "workflow_config" not in onboarding_context: onboarding_context["workflow_config"] = {} + # 3. Fetch calendar events for today + calendar_events_today = [] + try: + from datetime import datetime as dt_func, timedelta + + today_start = dt_func.strptime(date, "%Y-%m-%d").replace(hour=0, minute=0, second=0) + today_end = today_start + timedelta(days=1) + + calendar_events_today = ( + db.query(CalendarEvent) + .join(ContentStrategy, CalendarEvent.strategy_id == ContentStrategy.id) + .filter( + ContentStrategy.user_id == user_id, + CalendarEvent.scheduled_date >= today_start, + CalendarEvent.scheduled_date < today_end, + CalendarEvent.status.in_(["draft", "scheduled"]), + ) + .all() + ) + except Exception as e: + logger.warning(f"Failed to fetch calendar events for grounding context: {e}") + return { "recent_agent_alerts": [ { @@ -379,7 +402,19 @@ def build_grounding_context(db: Session, user_id: str, date: str) -> Dict[str, A for a in unread_agent_alerts ], "onboarding_data": onboarding_context, - "workflow_config": onboarding_context.get("workflow_config", {}) + "workflow_config": onboarding_context.get("workflow_config", {}), + "calendar_events_today": [ + { + "id": event.id, + "title": event.title, + "description": event.description, + "content_type": event.content_type, + "platform": event.platform, + "status": event.status, + "scheduled_date": event.scheduled_date.isoformat() if event.scheduled_date else None, + } + for event in calendar_events_today + ], } @@ -406,7 +441,7 @@ async def generate_agent_enhanced_plan( orchestrator = await orchestration_service.get_or_create_orchestrator(user_id) except Exception as e: logger.error(f"Failed to get orchestrator: {e}") - return {"date": date, "tasks": _fallback_tasks(date)} + return {"date": date, "tasks": []} # 2. Parallel "Committee" Proposal Gathering logger.info(f"Gathering daily task proposals from agent committee for user {user_id}") @@ -689,21 +724,21 @@ async def generate_agent_enhanced_plan( try: result = json.loads(raw) except Exception: - result = {"date": date, "tasks": _fallback_tasks(date)} + result = {"date": date, "tasks": []} except Exception as e: activity.log_event( event_type="warning", severity="warning", message=str(e)[:2000], - payload=build_agent_event_payload(phase="generation", step="llm_failed_fallback", tool_name="llm_text_gen", progress_percent=70, output_summary="LLM generation failed, using fallback tasks", decision_reason="Exception during workflow generation", safe_debug=False, metadata={"fallback": True}), + payload=build_agent_event_payload(phase="generation", step="llm_failed", tool_name="llm_text_gen", progress_percent=70, output_summary="LLM generation failed, returning empty tasks", decision_reason="Exception during workflow generation", safe_debug=False, metadata={"error": str(e)[:200]}), run_id=run.id, agent_type="TodayWorkflowGenerator", ) - result = {"date": date, "tasks": _fallback_tasks(date)} + result = {"date": date, "tasks": []} tasks = result.get("tasks") if isinstance(result, dict) else None - if not isinstance(tasks, list) or not tasks: - tasks = _fallback_tasks(date) + if not isinstance(tasks, list): + tasks = [] result = { "date": date, "tasks": _ensure_pillar_coverage(tasks, user_id, date, grounding), @@ -744,23 +779,38 @@ async def get_or_create_daily_workflow_plan( return existing, False grounding = build_grounding_context(db, user_id, date_str) - plan_data = await generate_agent_enhanced_plan(db, user_id, date_str, grounding=grounding) + + # Step 1: Calendar events โ†’ generate pillar (SSOT for content creation) + calendar_plan = _generate_calendar_event_plan(date_str, grounding) + calendar_task_titles = {t.get("title") for t in calendar_plan.get("tasks", []) if t.get("title")} + + # Step 2: Agent committee โ†’ proposals for plan + analyze + engage + publish + remarket + agent_plan_data = await generate_agent_enhanced_plan(db, user_id, date_str, grounding=grounding, strict_contextuality=False) + + # Filter agent proposals: keep only non-generate pillars, dedup by title + committee_pillars = {"plan", "analyze", "engage", "publish", "remarket"} + filtered_agent_tasks = [ + t for t in agent_plan_data.get("tasks", []) + if t.get("pillarId") in committee_pillars + and t.get("title") not in calendar_task_titles + ] + + # Step 3: Merge โ€” calendar wins for generate, agents fill other pillars + all_tasks = calendar_plan.get("tasks", []) + filtered_agent_tasks + calendar_source = bool(calendar_plan.get("tasks")) + + # Step 4: Pillar coverage โ€” LLM backfill for any pillar still uncovered + all_tasks = _ensure_pillar_coverage(all_tasks, user_id, date_str, grounding) + + # Step 5: Validation + plan_data = {**agent_plan_data, "tasks": all_tasks} validation = validate_plan_contextuality(plan_data, grounding) - if not validation.get("is_contextual"): - logger.info("Plan contextuality below threshold for user {}. Running strict regeneration.", user_id) - regenerated_plan = await generate_agent_enhanced_plan( - db, - user_id, - date_str, - grounding=grounding, - strict_contextuality=True, - ) - regenerated_validation = validate_plan_contextuality(regenerated_plan, grounding) - plan_data = regenerated_plan - validation = regenerated_validation - - plan_data["quality_status"] = "contextual" if validation.get("is_contextual") else "low_context" + plan_data["quality_status"] = ( + "calendar_driven" if calendar_source + else "contextual" if validation.get("is_contextual") + else "low_context" + ) plan_data["contextuality_validation"] = validation tasks = plan_data.get("tasks", []) @@ -769,9 +819,9 @@ async def get_or_create_daily_workflow_plan( user_id=user_id, date=date_str, source=creation_source, - generation_mode=_derive_generation_mode(plan_data), + generation_mode="calendar_driven" if calendar_source else _derive_generation_mode(plan_data), committee_agent_count=_count_committee_agents(tasks), - fallback_used=_plan_uses_fallback(tasks), + fallback_used=False, plan_json=plan_data, created_at=datetime.utcnow(), updated_at=datetime.utcnow(), @@ -824,15 +874,17 @@ def _derive_generation_mode(plan_data: Dict[str, Any]) -> str: metadata = metadata if isinstance(metadata, dict) else {} source_agent = str(metadata.get("source_agent") or "").strip() source = str(metadata.get("source") or "").strip() + if source == "calendar_event": + return "calendar_driven" if source_agent: source_modes.add("agent_committee") - elif source in {"controlled_fallback", "llm_pillar_backfill"}: + elif source in {"llm_pillar_backfill"}: source_modes.add(source) + if "calendar_driven" in source_modes: + return "calendar_driven" if "agent_committee" in source_modes: return "agent_committee" - if "controlled_fallback" in source_modes: - return "controlled_fallback" if "llm_pillar_backfill" in source_modes: return "llm_pillar_backfill" return "llm_generation" @@ -929,4 +981,28 @@ def update_task_status( db.add(task) db.commit() db.refresh(task) + + # If a calendar-sourced task is completed, mark the calendar event as published + if status == "completed" and task.metadata_json: + source = task.metadata_json.get("source") + source_event_id = task.metadata_json.get("source_event_id") + if source == "calendar_event" and source_event_id: + try: + cal_event = ( + db.query(CalendarEvent) + .join(ContentStrategy, CalendarEvent.strategy_id == ContentStrategy.id) + .filter( + CalendarEvent.id == source_event_id, + ContentStrategy.user_id == user_id, + ) + .first() + ) + if cal_event and cal_event.status != "published": + cal_event.status = "published" + cal_event.updated_at = datetime.utcnow() + db.add(cal_event) + db.commit() + except Exception as e: + logger.warning(f"Failed to update calendar event {source_event_id} on task completion: {e}") + return task diff --git a/backend/services/video_studio/platform_specs.py b/backend/services/video_studio/platform_specs.py index 87c7a0c2..af7e01d2 100644 --- a/backend/services/video_studio/platform_specs.py +++ b/backend/services/video_studio/platform_specs.py @@ -91,6 +91,17 @@ PLATFORM_SPECS: List[PlatformSpec] = [ formats=["mp4"], description="Square video format for LinkedIn", ), + PlatformSpec( + platform=Platform.LINKEDIN, + name="LinkedIn Video (Portrait)", + aspect_ratio="9:16", + width=1080, + height=1920, + max_duration=600.0, # 10 minutes + max_file_size_mb=5000.0, # 5GB + formats=["mp4"], + description="Portrait video format for LinkedIn mobile feed", + ), PlatformSpec( platform=Platform.FACEBOOK, name="Facebook Video", diff --git a/backend/services/wix_service.py b/backend/services/wix_service.py index 01739ed4..263ce365 100644 --- a/backend/services/wix_service.py +++ b/backend/services/wix_service.py @@ -148,10 +148,8 @@ class WixService: token_str = normalize_token_string(access_token) if not token_str: return {"_no_site": True, "error": "Invalid access token format"} - meta = extract_meta_from_token(token_str) - meta_site_id = meta.get("metaSiteId") try: - return self.auth_service.get_site_info(token_str, meta_site_id=meta_site_id) + return self.auth_service.get_site_info(token_str) except requests.RequestException as e: logger.warning(f"Failed to get site info: {e}") return {"_no_site": True, "error": str(e)} @@ -181,26 +179,34 @@ class WixService: def _normalize_token_string(self, access_token: Any) -> Optional[str]: return normalize_token_string(access_token) - def check_blog_permissions(self, access_token: str) -> Dict[str, Any]: + def check_blog_permissions(self, access_token: str, site_id: Optional[str] = None) -> Dict[str, Any]: """ Check if the app has required blog permissions Args: access_token: Valid access token + site_id: Optional Wix metaSiteId for multi-site token context Returns: Permission status """ + extra_headers = {} + if not site_id: + meta_info = extract_meta_from_token(access_token) + site_id = meta_info.get('metaSiteId') + if site_id: + extra_headers['wix-site-id'] = site_id + headers = { 'Authorization': f'Bearer {access_token}', 'Content-Type': 'application/json', 'wix-client-id': self.client_id or '' } + headers.update(extra_headers) try: - # Try to list blog categories to check permissions response = requests.get( - f"{self.base_url}/blog/v1/categories", + f"{self.base_url}/blog/v3/categories", headers=headers ) @@ -215,13 +221,23 @@ class WixService: 'has_permissions': False, 'can_create_posts': False, 'can_publish': False, - 'error': 'Insufficient permissions' + 'error': 'Insufficient permissions โ€” OAuth app lacks blog scopes' + } + elif response.status_code == 404: + return { + 'has_permissions': False, + 'error': 'Blog feature not available or site ID not recognized' + } + elif response.status_code == 401: + return { + 'has_permissions': False, + 'error': 'Token expired or invalid' } else: response.raise_for_status() except requests.RequestException as e: - logger.error(f"Failed to check blog permissions: {e}") + logger.warning(f"Failed to check blog permissions: {e}") return { 'has_permissions': False, 'error': str(e) @@ -243,7 +259,8 @@ class WixService: result = self.media_service.import_image( access_token, image_url, - display_name or f'Imported Image {datetime.now().strftime("%Y%m%d_%H%M%S")}' + display_name or f'Imported Image {datetime.now().strftime("%Y%m%d_%H%M%S")}', + client_id=self.client_id, ) if result and isinstance(result, dict) and 'file' in result: media_id = result['file'].get('id') @@ -431,8 +448,8 @@ class WixService: return category_ids - except requests.RequestException as e: - logger.error(f"Failed to lookup/create categories: {e}") + except Exception as e: + logger.warning(f"Failed to lookup/create categories (will skip): {e}") return [] def lookup_or_create_tags(self, access_token: str, tag_names: List[str], @@ -497,8 +514,8 @@ class WixService: return tag_ids - except requests.RequestException as e: - logger.error(f"Failed to lookup/create tags: {e}") + except Exception as e: + logger.warning(f"Failed to lookup/create tags (will skip): {e}") return [] def publish_draft_post(self, access_token: str, draft_post_id: str) -> Dict[str, Any]: diff --git a/docs-site/mkdocs.yml b/docs-site/mkdocs.yml index c40b629f..eb3ea06a 100644 --- a/docs-site/mkdocs.yml +++ b/docs-site/mkdocs.yml @@ -91,6 +91,8 @@ markdown_extensions: # Extra configuration extra: + verification: + google: ROJvq1TNFtABjd8t35PZLg1FYAJoUgLHl0bn4roXkFA generator: false social: - icon: fontawesome/brands/github diff --git a/frontend/package.json b/frontend/package.json index a8113e26..97e2ce71 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -34,7 +34,8 @@ "react-scripts": "5.0.1", "recharts": "^3.2.0", "zod": "^3.25.76", - "zustand": "^5.0.7" + "zustand": "^5.0.7", + "marked": "^18.0.4" }, "scripts": { "start": "node --max_old_space_size=12288 node_modules/react-scripts/scripts/start.js", diff --git a/frontend/src/api/client.ts b/frontend/src/api/client.ts index 7be34b4a..29702a23 100644 --- a/frontend/src/api/client.ts +++ b/frontend/src/api/client.ts @@ -1,6 +1,21 @@ import axios from 'axios'; import { getApiBaseUrl } from '../utils/apiUrl'; +// Harden axios against prototype pollution gadgets for config properties +// not present in default config. Setting explicit own properties on the +// defaults object forces mergeConfig to copy them into every request config, +// so they shadow any polluted value on Object.prototype. +// +// See https://github.com/AJaySi/ALwrity/security/dependabot/120 +Object.assign(axios.defaults, { + proxy: false, + socketPath: '', + transport: null, + beforeRedirect: null, + httpAgent: null, + httpsAgent: null, +}); + const sanitizeUrlForLogging = (url: string | undefined): string => { if (!url) return ''; try { diff --git a/frontend/src/components/BlogWriter/BlogWriter.tsx b/frontend/src/components/BlogWriter/BlogWriter.tsx index 0a1c38d5..1f2c116f 100644 --- a/frontend/src/components/BlogWriter/BlogWriter.tsx +++ b/frontend/src/components/BlogWriter/BlogWriter.tsx @@ -38,6 +38,8 @@ import { BlogWriterLandingSection } from './BlogWriterUtils/BlogWriterLandingSec import { CopilotKitComponents } from './BlogWriterUtils/CopilotKitComponents'; import { useBlogAsset } from '../../hooks/useBlogAsset'; import { blogAssetAPI } from '../../api/blogAsset'; +import { useContentPlanningStore } from '../../stores/contentPlanningStore'; +import { useWorkflowStore } from '../../stores/workflowStore'; const BlogWriter: React.FC = () => { const [searchParams, setSearchParams] = useSearchParams(); @@ -108,6 +110,12 @@ const BlogWriter: React.FC = () => { restoreFromAsset } = useBlogWriterState(); + // Selected competitive advantage for outline generation โ€” defaults to first + const [selectedCompetitiveAdvantage, setSelectedCompetitiveAdvantage] = useState(''); + const handleCompetitiveAdvantageSelect = useCallback((advantage: string) => { + setSelectedCompetitiveAdvantage(advantage); + }, []); + // SEO Manager - handles all SEO-related logic // Initialize phase navigation with temporary false value for seoRecommendationsApplied const [tempSeoRecommendationsApplied] = React.useState(false); @@ -141,6 +149,7 @@ const BlogWriter: React.FC = () => { isDiffModalOpen, diffPreviewData, acceptDiffChanges, + acceptSelectedDiffChanges, rejectDiffChanges, } = useSEOManager({ sections, @@ -148,6 +157,7 @@ const BlogWriter: React.FC = () => { research, outline, selectedTitle, + selectedCompetitiveAdvantage, contentConfirmed, seoAnalysis, currentPhase: tempCurrentPhase, @@ -169,6 +179,7 @@ const BlogWriter: React.FC = () => { currentPhase, navigateToPhase, setCurrentPhase, + resetUserSelection: resetUserSelection2, } = usePhaseNavigation( research, outline, @@ -193,6 +204,7 @@ const BlogWriter: React.FC = () => { currentPhase, navigateToPhase, setCurrentPhase, + resetUserSelection: resetUserSelection2, }); // All SEO management logic is now in useSEOManager hook above @@ -234,12 +246,6 @@ const BlogWriter: React.FC = () => { } }, [research]); - // Selected competitive advantage for outline generation โ€” defaults to first - const [selectedCompetitiveAdvantage, setSelectedCompetitiveAdvantage] = useState(''); - const handleCompetitiveAdvantageSelect = useCallback((advantage: string) => { - setSelectedCompetitiveAdvantage(advantage); - }, []); - // Auto-select first competitive advantage when research loads React.useEffect(() => { const advantages = research?.competitor_analysis?.competitive_advantages; @@ -280,7 +286,7 @@ const BlogWriter: React.FC = () => { } = useBlogAsset(); // Load blog asset passed via React Router state (from Asset Library) const location = useLocation(); - const locationState = location.state as { restoreBlogAssetId?: number } | null; + const locationState = location.state as { restoreBlogAssetId?: number; calendarTopic?: string; calendarDescription?: string; calendarEventId?: string; workflowTaskId?: string } | null; // Persist last active asset_id across refreshes const saveLastAssetId = useCallback((id: number) => { @@ -623,9 +629,29 @@ const BlogWriter: React.FC = () => { navigateToPhase, }); + const handleOpenSEOMetadata = React.useCallback(() => { + setIsSEOMetadataModalOpen(true); + }, [setIsSEOMetadataModalOpen]); - - + const handleRunFlowAnalysis = React.useCallback(async () => { + try { + const payload = { + title: selectedTitle || 'Blog Post', + sections: outline.map(s => ({ + id: s.id, + heading: s.heading, + content: sections[s.id] || '', + })), + }; + const result = await blogWriterApi.analyzeFlowBasic(payload); + if (result.success && result.analysis) { + setFlowAnalysisResults(result.analysis); + setFlowAnalysisCompleted(true); + } + } catch (err) { + console.error('Flow analysis failed:', err); + } + }, [selectedTitle, outline, sections, setFlowAnalysisResults, setFlowAnalysisCompleted]); return (

{ }); saveLastAssetId(assetId); } + // Mark originating calendar event as published + const eventId = locationState?.calendarEventId; + if (eventId) { + const { updateEvent } = useContentPlanningStore.getState(); + updateEvent(eventId, { status: 'published' }).catch((err: any) => + console.warn('[BlogWriter] Failed to update calendar event:', err) + ); + } + // Mark the workflow task as completed and navigate back + const taskId = locationState?.workflowTaskId; + if (taskId) { + const { completeTask } = useWorkflowStore.getState(); + completeTask(taskId).catch((err: any) => + console.warn('[BlogWriter] Failed to complete workflow task:', err) + ); + setTimeout(() => navigate('/dashboard'), 1500); + } }} /> @@ -817,6 +860,8 @@ const BlogWriter: React.FC = () => { onAngleSelect={handleAngleSelect} selectedCompetitiveAdvantage={selectedCompetitiveAdvantage} onCompetitiveAdvantageSelect={handleCompetitiveAdvantageSelect} + onOpenSEOMetadata={handleOpenSEOMetadata} + onRunFlowAnalysis={handleRunFlowAnalysis} /> )} @@ -843,6 +888,8 @@ const BlogWriter: React.FC = () => { blogContent={buildFullMarkdown()} blogTitle={selectedTitle} researchData={research} + outline={outline} + competitiveAdvantage={selectedCompetitiveAdvantage} onApplyRecommendations={handleApplySeoRecommendations} onAnalysisComplete={wrappedHandleSEOAnalysisComplete} /> @@ -852,6 +899,7 @@ const BlogWriter: React.FC = () => { isOpen={isDiffModalOpen} diffData={diffPreviewData} onAccept={acceptDiffChanges} + onAcceptSelected={acceptSelectedDiffChanges} onReject={rejectDiffChanges} /> @@ -864,12 +912,10 @@ const BlogWriter: React.FC = () => { researchData={research} outline={outline} seoAnalysis={seoAnalysis} + sectionImages={sectionImages} onMetadataGenerated={(metadata) => { console.log('SEO metadata generated:', metadata); setSeoMetadata(metadata); - // Metadata is now saved and will be used when publishing to WordPress/Wix - // The metadata includes all SEO fields (title, description, tags, Open Graph, etc.) - // Publisher component will use this metadata when calling publish API }} /> diff --git a/frontend/src/components/BlogWriter/BlogWriterUtils/BlogWriterLandingSection.tsx b/frontend/src/components/BlogWriter/BlogWriterUtils/BlogWriterLandingSection.tsx index fc48361e..534e06d2 100644 --- a/frontend/src/components/BlogWriter/BlogWriterUtils/BlogWriterLandingSection.tsx +++ b/frontend/src/components/BlogWriter/BlogWriterUtils/BlogWriterLandingSection.tsx @@ -14,6 +14,7 @@ interface BlogWriterLandingSectionProps { startResearchRef?: React.MutableRefObject<((keywords: string, blogLength?: string) => Promise) | null>; restoreAttempted?: boolean; onBrainstormResult?: (result: import('../../../api/gscBrainstorm').BrainstormResult) => void; + initialKeywords?: string; } const VALID_PHASES = ['research', 'outline', 'content', 'seo', 'publish']; @@ -29,6 +30,7 @@ export const BlogWriterLandingSection: React.FC = startResearchRef, restoreAttempted = false, onBrainstormResult, + initialKeywords, }) => { if (!research) { if (currentPhase === 'research') { @@ -39,6 +41,7 @@ export const BlogWriterLandingSection: React.FC = blogLengthRef={blogLengthRef} researchRef={startResearchRef} onBrainstormResult={onBrainstormResult} + initialKeywords={initialKeywords} /> ); } diff --git a/frontend/src/components/BlogWriter/BlogWriterUtils/PhaseContent.tsx b/frontend/src/components/BlogWriter/BlogWriterUtils/PhaseContent.tsx index 7937be1b..fce4f259 100644 --- a/frontend/src/components/BlogWriter/BlogWriterUtils/PhaseContent.tsx +++ b/frontend/src/components/BlogWriter/BlogWriterUtils/PhaseContent.tsx @@ -43,6 +43,8 @@ interface PhaseContentProps { onContentGenerationStart?: (taskId: string) => void; buildFullMarkdown?: () => string; convertMarkdownToHTML?: (md: string) => string; + onOpenSEOMetadata?: () => void; + onRunFlowAnalysis?: () => void; brainstormResult?: import('../../../api/gscBrainstorm').BrainstormResult; onBrainstormResult?: (result: import('../../../api/gscBrainstorm').BrainstormResult) => void; onResearchWithKeywords?: (keywords: string) => void; @@ -99,6 +101,8 @@ export const PhaseContent: React.FC = ({ onCompetitiveAdvantageSelect, introduction, onIntroductionUpdate, + onOpenSEOMetadata, + onRunFlowAnalysis, }) => { return (
@@ -249,6 +253,10 @@ export const PhaseContent: React.FC = ({ seoMetadata={seoMetadata} seoAnalysis={seoAnalysis} blogTitle={selectedTitle ?? undefined} + sectionImages={sectionImages} + onOpenSEOMetadata={onOpenSEOMetadata} + flowAnalysisResults={flowAnalysisResults} + onRunFlowAnalysis={onRunFlowAnalysis} /> )}
diff --git a/frontend/src/components/BlogWriter/BlogWriterUtils/PublishContent.tsx b/frontend/src/components/BlogWriter/BlogWriterUtils/PublishContent.tsx index aed2a95b..8d96753d 100644 --- a/frontend/src/components/BlogWriter/BlogWriterUtils/PublishContent.tsx +++ b/frontend/src/components/BlogWriter/BlogWriterUtils/PublishContent.tsx @@ -1,7 +1,8 @@ import React, { useState, useEffect } from 'react'; import { apiClient } from '../../../api/client'; import { wordpressAPI, WordPressSite, WordPressPublishRequest } from '../../../api/wordpress'; -import { BlogSEOMetadataResponse } from '../../../services/blogWriterApi'; +import { blogWriterApi, BlogSEOMetadataResponse } from '../../../services/blogWriterApi'; +import hallucinationDetectorService from '../../../services/hallucinationDetectorService'; import WixConnectModal from './WixConnectModal'; import { useWixPublish } from '../../../hooks/useWixPublish'; import { useTextToSpeech } from '../../../hooks/useTextToSpeech'; @@ -9,12 +10,18 @@ import { useTextToSpeech } from '../../../hooks/useTextToSpeech'; const saveCompleteBlogAsset = async ( title: string, content: string, - seoMetadata: BlogSEOMetadataResponse | null + seoMetadata: BlogSEOMetadataResponse | null, + platform?: string, + post_url?: string, + post_id?: string, ) => { try { await apiClient.post('/api/blog/save-complete-asset', { title, content, + platform: platform || null, + post_url: post_url || null, + post_id: post_id || null, seo_title: seoMetadata?.seo_title, meta_description: seoMetadata?.meta_description, focus_keyword: seoMetadata?.focus_keyword, @@ -32,13 +39,22 @@ interface PublishContentProps { seoMetadata: BlogSEOMetadataResponse | null; seoAnalysis?: any; blogTitle?: string; + sectionImages?: Record; + onOpenSEOMetadata?: () => void; + flowAnalysisResults?: any; + onRunFlowAnalysis?: () => void; } export const PublishContent: React.FC = ({ buildFullMarkdown, convertMarkdownToHTML, seoMetadata, + seoAnalysis, blogTitle, + sectionImages, + onOpenSEOMetadata, + flowAnalysisResults, + onRunFlowAnalysis, }) => { const { wixStatus, @@ -58,6 +74,16 @@ export const PublishContent: React.FC = ({ const [publishResult, setPublishResult] = useState<{ platform: string; success: boolean; message: string; url?: string } | null>(null); const [copyDone, setCopyDone] = useState(false); const [wixContentWarning, setWixContentWarning] = useState(null); + const [flowRunning, setFlowRunning] = useState(false); + const [hallucinationResults, setHallucinationResults] = useState(null); + const [hallucinationRunning, setHallucinationRunning] = useState(false); + const [publishHistory, setPublishHistory] = useState<{ entries: any[]; total: number } | null>(null); + const [showPublishHistory, setShowPublishHistory] = useState(false); + const [historyLoading, setHistoryLoading] = useState(false); + + useEffect(() => { + if (flowRunning && flowAnalysisResults) setFlowRunning(false); + }, [flowAnalysisResults, flowRunning]); // Audio / TTS const { speak, stop, isSpeaking, isSupported } = useTextToSpeech(); @@ -140,6 +166,7 @@ export const PublishContent: React.FC = ({ const result = await wordpressAPI.publishContent(request); if (result.success) { setPublishResult({ platform: 'wordpress', success: true, message: `Published to "${activeSite.site_name}"!`, url: result.post_url }); + saveCompleteBlogAsset(blogTitle || seoMetadata?.seo_title || 'Blog Post', md, seoMetadata, 'wordpress', result.post_url, String(result.post_id ?? '')); try { localStorage.setItem('blog_publish_completed', 'true'); } catch {} } else { setPublishResult({ platform: 'wordpress', success: false, message: result.error || 'Publish failed' }); @@ -151,11 +178,13 @@ export const PublishContent: React.FC = ({ } }; - // Inject section images from localStorage into markdown so Wix can publish them + // Inject section images from state (or localStorage fallback) into markdown const enrichMarkdownWithImages = (markdown: string): string => { try { + const images = sectionImages && Object.keys(sectionImages).length > 0 + ? sectionImages + : JSON.parse(localStorage.getItem('blog_section_images') || '{}'); const outline = JSON.parse(localStorage.getItem('blog_outline') || '[]'); - const images = JSON.parse(localStorage.getItem('blog_section_images') || '{}'); if (!outline.length || !Object.keys(images).length) return markdown; let enriched = markdown; @@ -195,7 +224,7 @@ export const PublishContent: React.FC = ({ setWixContentWarning(result.warning); } if (result.success) { - saveCompleteBlogAsset(blogTitle || seoMetadata?.seo_title || 'Blog Post', md, seoMetadata); + saveCompleteBlogAsset(blogTitle || seoMetadata?.seo_title || 'Blog Post', md, seoMetadata, 'wix', result.url, result.post_id); try { localStorage.setItem('blog_publish_completed', 'true'); } catch {} } }; @@ -238,6 +267,37 @@ export const PublishContent: React.FC = ({ transition: 'all 0.2s', }; + const handleOpenPublishHistory = async () => { + setShowPublishHistory(true); + if (!publishHistory) { + setHistoryLoading(true); + try { + const { data } = await apiClient.get('/api/blog/publish-history?limit=50'); + if (data.success) { + setPublishHistory({ entries: data.entries, total: data.total }); + } + } catch (err) { + console.error('Failed to load publish history:', err); + } finally { + setHistoryLoading(false); + } + } + }; + + const handleRunHallucinationCheck = async () => { + setHallucinationRunning(true); + try { + const text = buildFullMarkdown(); + const result = await hallucinationDetectorService.detectHallucinations({ text }); + setHallucinationResults(result); + } catch (err) { + console.error('Hallucination check failed:', err); + setHallucinationResults({ success: false, error: 'Check failed' }); + } finally { + setHallucinationRunning(false); + } + }; + return (

Publish Your Blog

@@ -246,6 +306,134 @@ export const PublishContent: React.FC = ({

+ {/* SEO Metadata card */} +
+
+
+

SEO Metadata

+

+ {seoMetadata ? 'Generated' : 'Not generated'} +

+
+ +
+ {seoMetadata && ( +
+
{seoMetadata.seo_title}
+
{seoMetadata.meta_description}
+ {seoMetadata.focus_keyword && ( +
+ + {seoMetadata.focus_keyword} + +
+ )} +
+ )} +
+ + {/* Pre-Publish Readiness Check */} +
+

Pre-Publish Readiness Check

+

+ Verify your content is ready before publishing +

+
+ {/* SEO Metadata check */} +
+
+ {seoMetadata ? 'โœ…' : 'โŒ'} +
+
SEO Metadata
+
+ {seoMetadata ? `Generated (Score: ${seoAnalysis?.overall_score ?? 'N/A'}/100)` : 'Not generated'} +
+
+
+ {seoMetadata && ( + + )} +
+ + {/* Flow Analysis check */} +
+
+ {flowAnalysisResults ? 'โœ…' : '๐Ÿ”ฒ'} +
+
Flow Analysis
+
+ {flowAnalysisResults + ? `Flow: ${(flowAnalysisResults.overall_flow_score * 100).toFixed(0)} | Consistency: ${(flowAnalysisResults.overall_consistency_score * 100).toFixed(0)} | Progression: ${(flowAnalysisResults.overall_progression_score * 100).toFixed(0)}` + : 'Not yet run'} +
+
+
+ +
+ + {/* Hallucination Check */} +
+
+ {hallucinationResults?.success ? 'โœ…' : hallucinationResults && !hallucinationResults.success ? 'โŒ' : '๐Ÿ”ฒ'} +
+
Hallucination Check
+
+ {hallucinationResults?.success + ? `${hallucinationResults.supported_claims ?? 0} supported, ${hallucinationResults.refuted_claims ?? 0} refuted, ${hallucinationResults.insufficient_claims ?? 0} unclear (${(hallucinationResults.overall_confidence * 100).toFixed(0)}% confidence)` + : hallucinationResults?.error + ? hallucinationResults.error + : 'Not yet run'} +
+
+
+ +
+
+ + {/* Overall status */} +
+ {(seoMetadata && flowAnalysisResults && hallucinationResults?.success) + ? 'โœ… All checks passed โ€” ready to publish!' + : seoMetadata && flowAnalysisResults + ? 'โš ๏ธ Run hallucination check before publishing for best results' + : seoMetadata + ? 'โš ๏ธ Run flow analysis and hallucination check before publishing' + : 'โš ๏ธ Generate SEO metadata and run quality checks before publishing'} +
+
+ {/* WordPress card */}
@@ -281,7 +469,7 @@ export const PublishContent: React.FC = ({

Wix

- {checkingWix ? 'Checking connection...' : wixStatus?.connected ? 'Connected' : 'Not connected'} + {checkingWix ? 'Checking connection...' : wixStatus?.connected ? 'Connected' : wixStatus?.error || 'Not connected'}

+ + +
+
+ )}
)} @@ -372,6 +600,55 @@ export const PublishContent: React.FC = ({ onClose={closeWixConnectModal} onConnectionSuccess={handleWixConnectionSuccess} /> + + {/* Publish History modal */} + {showPublishHistory && ( +
setShowPublishHistory(false)}> +
e.stopPropagation()}> +
+

Publish History

+ +
+ {historyLoading ? ( +
Loading history...
+ ) : publishHistory && publishHistory.entries.length > 0 ? ( +
+ {publishHistory.entries.map((entry: any) => ( +
+
+
{entry.title}
+
+ {entry.platform === 'wix' ? 'Wix' : entry.platform === 'wordpress' ? 'WordPress' : entry.platform} + {entry.published_at && ` ยท ${new Date(entry.published_at).toLocaleDateString()}`} + {entry.word_count > 0 && ` ยท ${entry.word_count} words`} +
+
+ {entry.post_url && ( + + View โ†’ + + )} +
+ ))} +
+ ) : ( +
+ No publish history yet. Publish your blog to see it here. +
+ )} +
+
+ )}
); }; diff --git a/frontend/src/components/BlogWriter/BlogWriterUtils/useBlogWriterPolling.ts b/frontend/src/components/BlogWriter/BlogWriterUtils/useBlogWriterPolling.ts index 02909f80..b1b79bf4 100644 --- a/frontend/src/components/BlogWriter/BlogWriterUtils/useBlogWriterPolling.ts +++ b/frontend/src/components/BlogWriter/BlogWriterUtils/useBlogWriterPolling.ts @@ -52,18 +52,20 @@ export const useBlogWriterPolling = ({ }); onSectionsUpdate(newSections); - // Skip auto-confirm and navigation when Re-Content was used + // Skip auto-navigation when Re-Content was used // (user already had content and chose to regenerate โ€” stay on content phase to review) const skipAutoConfirm = skipContentAutoConfirmRef?.current === true; if (skipContentAutoConfirmRef) skipContentAutoConfirmRef.current = false; // reset flag + + // Always confirm content so the check mark shows on the chip + if (onContentConfirmed) { + onContentConfirmed(); + } + if (skipAutoConfirm) { - debug.log('[BlogWriter] Re-Content: skipping auto-confirm and navigation (user stays on content phase)'); + debug.log('[BlogWriter] Re-Content: content confirmed, user stays on content phase to review'); } else { - // Auto-confirm content and navigate to SEO phase when content generation completes - // This happens for initial content generation (first time) - if (onContentConfirmed) { - onContentConfirmed(); - } + // Auto-navigate to SEO phase when content generation completes (first time) if (navigateToPhase) { navigateToPhase('seo'); } diff --git a/frontend/src/components/BlogWriter/BlogWriterUtils/usePhaseActionHandlers.ts b/frontend/src/components/BlogWriter/BlogWriterUtils/usePhaseActionHandlers.ts index 402e7073..eac5b2a4 100644 --- a/frontend/src/components/BlogWriter/BlogWriterUtils/usePhaseActionHandlers.ts +++ b/frontend/src/components/BlogWriter/BlogWriterUtils/usePhaseActionHandlers.ts @@ -201,16 +201,18 @@ export const usePhaseActionHandlers = ({ }, [outline, research, selectedTitle, sections, navigateToPhase, handleOutlineConfirmed, setIsMediumGenerationStarting, mediumPolling, onContentComplete]); const handleSEOAction = useCallback(() => { + debug.log('[BlogWriter] handleSEOAction called', { contentConfirmed, hasSeoAnalysis: !!seoAnalysis }); if (!contentConfirmed) { setContentConfirmed(true); } - navigateToPhase('seo'); + const navResult = navigateToPhase('seo'); + debug.log('[BlogWriter] navigateToPhase(seo) returned', { navResult }); if (seoAnalysis) { setIsSEOAnalysisModalOpen(true); debug.log('[BlogWriter] SEO analysis exists - opening modal for review'); } else { - runSEOAnalysisDirect(); - debug.log('[BlogWriter] SEO action triggered - running SEO analysis'); + const result = runSEOAnalysisDirect(); + debug.log('[BlogWriter] runSEOAnalysisDirect returned', { result }); } }, [contentConfirmed, seoAnalysis, setContentConfirmed, navigateToPhase, setIsSEOAnalysisModalOpen, runSEOAnalysisDirect]); diff --git a/frontend/src/components/BlogWriter/BlogWriterUtils/usePhaseRestoration.ts b/frontend/src/components/BlogWriter/BlogWriterUtils/usePhaseRestoration.ts index d350a89d..ab2d17a8 100644 --- a/frontend/src/components/BlogWriter/BlogWriterUtils/usePhaseRestoration.ts +++ b/frontend/src/components/BlogWriter/BlogWriterUtils/usePhaseRestoration.ts @@ -8,6 +8,7 @@ interface UsePhaseRestorationProps { currentPhase: string; navigateToPhase: (phase: string) => void; setCurrentPhase: (phase: string) => void; + resetUserSelection?: () => void; } export const usePhaseRestoration = ({ @@ -17,6 +18,7 @@ export const usePhaseRestoration = ({ currentPhase, navigateToPhase, setCurrentPhase, + resetUserSelection, }: UsePhaseRestorationProps) => { const hasRestoredRef = useRef(false); @@ -55,7 +57,10 @@ export const usePhaseRestoration = ({ if (targetPhase && !targetPhase.disabled) { console.log('[BlogWriter] Restoring phase from navigation state:', restoredPhase); setCurrentPhase(restoredPhase); - // Phase restoration complete - the usePhaseNavigation hook will handle persistence + // Reset user selection so auto-progression can correct stale phases + if (resetUserSelection) { + resetUserSelection(); + } } else { console.log('[BlogWriter] Restored phase is disabled or not found, keeping current phase:', { restoredPhase, diff --git a/frontend/src/components/BlogWriter/BlogWriterUtils/useSEOManager.ts b/frontend/src/components/BlogWriter/BlogWriterUtils/useSEOManager.ts index 3087cfb4..6a4ed420 100644 --- a/frontend/src/components/BlogWriter/BlogWriterUtils/useSEOManager.ts +++ b/frontend/src/components/BlogWriter/BlogWriterUtils/useSEOManager.ts @@ -184,6 +184,7 @@ interface UseSEOManagerProps { research: any; outline: any[]; selectedTitle: string | null; + selectedCompetitiveAdvantage?: string; contentConfirmed: boolean; seoAnalysis: any; currentPhase: string; @@ -205,6 +206,7 @@ export const useSEOManager = ({ research, outline, selectedTitle, + selectedCompetitiveAdvantage, contentConfirmed, seoAnalysis, currentPhase, @@ -235,8 +237,11 @@ export const useSEOManager = ({ const originalSectionsRef = useRef | null>(null); const originalIntroductionRef = useRef(null); - // Restore cached SEO analysis on mount when sections are available + // Restore cached SEO analysis only when user is on/past the SEO phase useEffect(() => { + // Don't run SEO cache lookups on research or outline phases + if (currentPhase !== 'seo' && currentPhase !== 'publish') return; + const restoreCachedSEO = async () => { if (seoAnalysis) return; @@ -249,18 +254,13 @@ export const useSEOManager = ({ try { const hash = await hashContent(`${title}\n${fullMarkdown}`); const cacheKey = getSeoCacheKey(hash, title); - console.log('[SEOManager] SEO cache lookup', { cacheKey, hashLength: hash.length, titleLength: title.length, markdownLength: fullMarkdown.length }); const cached = window.localStorage.getItem(cacheKey); if (cached) { const parsed = JSON.parse(cached); if (parsed && typeof parsed.overall_score === 'number' && parsed.category_scores) { - console.log('[SEOManager] Restored cached SEO analysis', { cacheKey, score: parsed.overall_score }); + debug.log('[SEOManager] Restored cached SEO analysis', { score: parsed.overall_score }); setSeoAnalysis(parsed); - } else { - console.log('[SEOManager] Cached SEO data invalid', { hasScore: parsed && typeof parsed.overall_score === 'number' }); } - } else { - console.log('[SEOManager] SEO cache miss', { cacheKey }); } } catch (e) { debug.log('[SEOManager] Failed to restore cached SEO analysis', e); @@ -273,10 +273,9 @@ export const useSEOManager = ({ const wasApplied = localStorage.getItem('blog_seo_recommendations_applied') === 'true'; if (wasApplied) { setSeoRecommendationsApplied(true); - debug.log('[SEOManager] Restored seoRecommendationsApplied flag'); } } catch {} - }, [selectedTitle, sections, outline, seoAnalysis, setSeoAnalysis, setSeoRecommendationsApplied]); + }, [currentPhase, selectedTitle, sections, outline, seoAnalysis, setSeoAnalysis, setSeoRecommendationsApplied]); // Helper: run same checks as analyzeSEO and open modal const runSEOAnalysisDirect = useCallback((): string => { @@ -306,6 +305,7 @@ export const useSEOManager = ({ const hasResearch = !!research && !!(research as any).keyword_analysis; + console.debug('[SEODirect] runSEOAnalysisDirect', { hasSections, hasValidContent, hasResearch, sectionKeys: Object.keys(sections), outlineLen: outline?.length, isModalOpen: isSEOAnalysisModalOpen, contentConfirmed }); if (!hasValidContent) { return "No blog content available for SEO analysis. Please generate content first. Content generation may still be in progress - please wait for it to complete."; } @@ -373,6 +373,7 @@ export const useSEOManager = ({ outline, research: (research as any) || {}, recommendations, + competitive_advantage: selectedCompetitiveAdvantage || undefined, }); if (!response.success) { @@ -460,7 +461,7 @@ export const useSEOManager = ({ } catch (cacheError) { debug.log('[BlogWriter] Failed to cache SEO-applied content', cacheError); } - }, [outline, research, sections, introduction, selectedTitle, setSections]); + }, [outline, research, sections, introduction, selectedTitle, selectedCompetitiveAdvantage, setSections]); const acceptDiffChanges = useCallback(() => { const normalizedSections = pendingSectionsRef.current; @@ -538,6 +539,87 @@ export const useSEOManager = ({ setDiffPreviewData(null); }, []); + const acceptSelectedDiffChanges = useCallback(( + selectedIds: Record, + acceptIntro: boolean + ) => { + const pendingSections = pendingSectionsRef.current; + const originalSections = originalSectionsRef.current; + const uniqueSectionKeys = pendingSectionsKeysRef.current; + + if (!pendingSections || !originalSections || !uniqueSectionKeys) { + debug.log('[BlogWriter] acceptSelectedDiffChanges: no pending changes to apply'); + return; + } + + // Merge: selected sections use pending content, unselected use original + const mergedSections: Record = {}; + const allKeys = new Set([...Object.keys(pendingSections), ...Object.keys(originalSections)]); + allKeys.forEach(key => { + if (selectedIds[key]) { + mergedSections[key] = pendingSections[key] || originalSections[key] || ''; + } else { + mergedSections[key] = originalSections[key] || pendingSections[key] || ''; + } + }); + + const mergedKeys = Object.keys(mergedSections); + debug.log('[BlogWriter] Accepting selected diff changes', { + selected: Object.entries(selectedIds).filter(([, v]) => v).length, + totalSections: mergedKeys.length, + }); + + setSections(mergedSections); + setContinuityRefresh(Date.now()); + setFlowAnalysisCompleted(false); + setFlowAnalysisResults(null); + + // Introduction: only apply if acceptIntro is true + const pendingIntro = pendingIntroductionRef.current; + if (acceptIntro && pendingIntro !== null && pendingIntro !== introduction) { + setIntroduction(pendingIntro); + debug.log('[BlogWriter] Introduction updated from selected SEO response', { + length: pendingIntro.length, + }); + } + + // Title: always apply if changed (not per-section granularity) + const pendingTitle = pendingTitleRef.current; + if (pendingTitle && pendingTitle !== selectedTitle) { + setSelectedTitle(pendingTitle); + } + + if (pendingAppliedRef.current) { + setSeoAnalysis((prev: any) => prev ? { ...prev, applied_recommendations: pendingAppliedRef.current } : prev); + } + + setSeoRecommendationsApplied(true); + try { + localStorage.setItem('blog_seo_recommendations_applied', 'true'); + } catch {} + + if (currentPhase !== 'seo') { + navigateToPhase('seo'); + } + + // Clean up pending and close + pendingSectionsRef.current = null; + pendingSectionsKeysRef.current = null; + pendingIntroductionRef.current = null; + pendingTitleRef.current = null; + pendingAppliedRef.current = null; + originalSectionsRef.current = null; + originalIntroductionRef.current = null; + setIsDiffModalOpen(false); + setDiffPreviewData(null); + + try { + blogWriterCache.cacheContent(mergedSections, mergedKeys); + } catch (cacheError) { + debug.log('[BlogWriter] Failed to cache selected SEO content', cacheError); + } + }, [setSections, setContinuityRefresh, setFlowAnalysisCompleted, setFlowAnalysisResults, setIntroduction, introduction, setSelectedTitle, selectedTitle, setSeoAnalysis, setSeoRecommendationsApplied, currentPhase, navigateToPhase]); + // Handle SEO analysis completion const handleSEOAnalysisComplete = useCallback((analysis: any) => { setSeoAnalysis(analysis); @@ -573,17 +655,11 @@ export const useSEOManager = ({ // Mark SEO phase as completed when recommendations are applied useEffect(() => { - if (seoRecommendationsApplied && seoAnalysis) { + // Only auto-navigate to SEO if user is already on/past the SEO phase + if (seoRecommendationsApplied && seoAnalysis && (currentPhase === 'seo' || currentPhase === 'publish')) { debug.log('[BlogWriter] SEO recommendations applied, SEO phase marked as complete'); - - // Ensure we stay in SEO phase only once when recommendations are first applied - if (currentPhase !== 'seo' && Object.keys(sections).length > 0) { - navigateToPhase('seo'); - debug.log('[BlogWriter] Navigated to SEO phase to show updated content'); - } } - // eslint-disable-next-line react-hooks/exhaustive-deps - }, [seoRecommendationsApplied, seoAnalysis]); + }, [seoRecommendationsApplied, seoAnalysis, currentPhase]); const confirmBlogContent = useCallback(() => { debug.log('[BlogWriter] Blog content confirmed by user'); @@ -614,6 +690,7 @@ export const useSEOManager = ({ diffPreviewData, acceptDiffChanges, rejectDiffChanges, + acceptSelectedDiffChanges, }; }; diff --git a/frontend/src/components/BlogWriter/DiffPreviewModal/DiffPreviewModal.tsx b/frontend/src/components/BlogWriter/DiffPreviewModal/DiffPreviewModal.tsx index 4b0ae238..13f02471 100644 --- a/frontend/src/components/BlogWriter/DiffPreviewModal/DiffPreviewModal.tsx +++ b/frontend/src/components/BlogWriter/DiffPreviewModal/DiffPreviewModal.tsx @@ -1,7 +1,7 @@ -import React from 'react'; +import React, { useState, useMemo } from 'react'; import { Dialog, DialogTitle, DialogContent, DialogActions, - Button, Typography, Box, Chip, IconButton, Divider + Button, Typography, Box, Chip, IconButton, Checkbox, FormControlLabel, Divider } from '@mui/material'; import { Close as CloseIcon, Check as CheckIcon } from '@mui/icons-material'; import type { DiffPreviewData, DiffSegment } from '../../../utils/getSectionDiffs'; @@ -11,6 +11,7 @@ interface DiffPreviewModalProps { diffData: DiffPreviewData | null; onAccept: () => void; onReject: () => void; + onAcceptSelected?: (selectedSectionIds: Record, acceptIntroduction: boolean) => void; loading?: boolean; } @@ -60,11 +61,51 @@ export const DiffPreviewModal: React.FC = ({ diffData, onAccept, onReject, + onAcceptSelected, loading = false, }) => { + // Per-section selection state โ€” default: select all changed sections + const [sectionSelection, setSectionSelection] = useState>({}); + const [acceptIntroduction, setAcceptIntroduction] = useState(true); + + // Initialize defaults when diffData changes + React.useEffect(() => { + if (!diffData) return; + const initial: Record = {}; + diffData.sectionDiffs.forEach(s => { + initial[s.id] = s.changed; + }); + setSectionSelection(initial); + setAcceptIntroduction(diffData.introductionChanged); + }, [diffData]); + if (!diffData) return null; const hasAnyChange = diffData.introductionChanged || diffData.sectionDiffs.some(s => s.changed); + const selectedCount = Object.values(sectionSelection).filter(Boolean).length; + const hasAnySelected = selectedCount > 0 || acceptIntroduction; + + const toggleSection = (id: string) => { + setSectionSelection(prev => ({ ...prev, [id]: !prev[id] })); + }; + + const handleAcceptSelected = () => { + if (onAcceptSelected) { + onAcceptSelected(sectionSelection, acceptIntroduction); + } else { + onAccept(); + } + }; + + const allSelected = diffData.sectionDiffs.every(s => sectionSelection[s.id]); + const toggleAll = () => { + const newVal = !allSelected; + const updated: Record = {}; + diffData.sectionDiffs.forEach(s => { + updated[s.id] = newVal; + }); + setSectionSelection(updated); + }; return ( @@ -91,6 +132,12 @@ export const DiffPreviewModal: React.FC = ({ size="small" variant="outlined" /> + 0 ? 'primary' : 'default'} + size="small" + variant="outlined" + /> @@ -111,25 +158,53 @@ export const DiffPreviewModal: React.FC = ({ )} + {/* Introduction โ€” toggle */} {diffData.introductionChanged && ( - - Introduction - + + setAcceptIntroduction(!acceptIntroduction)} + size="small" + sx={{ p: 0, mr: 1 }} + /> + + Introduction + + {renderDiffSegments(diffData.introductionDiff!)} )} + {/* Select / Deselect All */} + {diffData.sectionDiffs.some(s => s.changed) && ( + + + + )} + + {/* Per-section diffs with checkbox */} {diffData.sectionDiffs.map((section, idx) => { if (!section.changed) return null; + const isSelected = sectionSelection[section.id] ?? true; return ( - - - {section.heading} - - + + + toggleSection(section.id)} + size="small" + sx={{ p: 0, mr: 1 }} + /> + + {section.heading} + + + {renderDiffSegments(section.segments)} @@ -137,7 +212,7 @@ export const DiffPreviewModal: React.FC = ({ })} - + - + + + + ); }; -export default DiffPreviewModal; +export default DiffPreviewModal; \ No newline at end of file diff --git a/frontend/src/components/BlogWriter/ManualResearchForm.tsx b/frontend/src/components/BlogWriter/ManualResearchForm.tsx index 05b17766..37a620f2 100644 --- a/frontend/src/components/BlogWriter/ManualResearchForm.tsx +++ b/frontend/src/components/BlogWriter/ManualResearchForm.tsx @@ -10,10 +10,11 @@ interface ManualResearchFormProps { blogLengthRef?: React.MutableRefObject; researchRef?: React.MutableRefObject<((keywords: string, blogLength?: string) => Promise) | null>; onBrainstormResult?: (result: import('../../api/gscBrainstorm').BrainstormResult) => void; + initialKeywords?: string; } -export const ManualResearchForm: React.FC = ({ onResearchComplete, onKeywordsChange, blogLengthRef, researchRef, onBrainstormResult }) => { - const [keywords, setKeywords] = useState(''); +export const ManualResearchForm: React.FC = ({ onResearchComplete, onKeywordsChange, blogLengthRef, researchRef, onBrainstormResult, initialKeywords }) => { + const [keywords, setKeywords] = useState(initialKeywords ?? ''); const [blogLength, setBlogLength] = useState('1000'); // Sync keywords to parent for header chip label diff --git a/frontend/src/components/BlogWriter/PhaseNavigation.tsx b/frontend/src/components/BlogWriter/PhaseNavigation.tsx index 0d7d40d9..f15b9636 100644 --- a/frontend/src/components/BlogWriter/PhaseNavigation.tsx +++ b/frontend/src/components/BlogWriter/PhaseNavigation.tsx @@ -3,6 +3,7 @@ import Box from '@mui/material/Box'; import Tooltip from '@mui/material/Tooltip'; import CircularProgress from '@mui/material/CircularProgress'; import Typography from '@mui/material/Typography'; +import { debug } from '../../utils/debug'; export interface Phase { id: string; @@ -120,7 +121,8 @@ export const PhaseNavigation: React.FC = ({ break; case 'seo': if (hasContent) { - return { label: hasSEOAnalysis ? 'Re-Analyze SEO' : 'Run SEO Analysis', handler: actionHandlers.onSEOAction || null }; + const handler = actionHandlers.onSEOAction || null; + return { label: hasSEOAnalysis ? 'Re-Analyze SEO' : 'Run SEO Analysis', handler }; } break; case 'publish': @@ -252,7 +254,7 @@ export const PhaseNavigation: React.FC = ({ background: 'linear-gradient(135deg, #10b981 0%, #059669 100%)', color: '#fff', boxShadow: '0 2px 6px rgba(16, 185, 129, 0.25)', - maxWidth: iconOnly ? '36px' : 'none', + maxWidth: iconOnly ? '44px' : 'none', opacity: iconOnly ? 0.85 : 1, '&:hover': { maxWidth: iconOnly ? '160px' : 'none', @@ -360,12 +362,12 @@ export const PhaseNavigation: React.FC = ({ sx={chipSx} > {phase.icon} + {isDone && ( + โœ“ + )} {phase.id === 'research' && hasResearch ? 'Re-Research' : phase.id === 'research' && !hasResearch && researchKeywords ? 'Click To Research' : phase.id === 'research' && !hasResearch ? 'Start Now' : phase.id === 'outline' && hasOutline ? 'Re-Generate' : phase.id === 'outline' && !hasOutline ? 'Create Now' : phase.id === 'content' && hasContent ? 'Re-Content' : phase.id === 'seo' ? (hasSEOAnalysis ? 'Re-Analyze SEO' : 'SEO Analysis') : phase.name} - {isDone && ( - โœ“ - )} diff --git a/frontend/src/components/BlogWriter/ResearchProgressModal.tsx b/frontend/src/components/BlogWriter/ResearchProgressModal.tsx index b97d9874..1ccf0afa 100644 --- a/frontend/src/components/BlogWriter/ResearchProgressModal.tsx +++ b/frontend/src/components/BlogWriter/ResearchProgressModal.tsx @@ -533,229 +533,155 @@ const ResearchProgressModal: React.FC = ({
+ {/* Compact header */}
-
-
-
-

+
+ {isRunning && } +
+

{title}

-

- Research takes 40โ€“60 seconds. We search multiple engines (Exa, Tavily), extract key insights, - and assemble a structured research brief. After this, you will move to the Outline phase - where AI generates a blog structure, then Content writes each section, followed by - SEO optimization and Publish. -

- {isRunning && ( - - )} - {statusInfo.label} - {statusInfo.description} + {statusInfo.label} + {statusInfo.description && โ€” {statusInfo.description}}
-
-

- -
-
-
-
-
s.state === 'done').length / stagesWithState.length) * 100)}%`, - height: '100%', - borderRadius: 3, - background: 'linear-gradient(90deg, #3b82f6, #2563eb)', - transition: 'width 0.5s ease' - }} - /> -
- - {stagesWithState.filter(s => s.state === 'done').length}/{stagesWithState.length} - -
-
+ Close + +
+ +
+ {/* Progress bar */} +
+
+
s.state === 'done').length / stagesWithState.length) * 100)}%`, + height: '100%', + borderRadius: 2, + background: 'linear-gradient(90deg, #3b82f6, #2563eb)', + transition: 'width 0.5s ease' + }} + /> +
+ + {stagesWithState.filter(s => s.state === 'done').length}/{stagesWithState.length} + +
+ + {/* Compact stage indicators */} +
{stagesWithState.map(stage => { const copy = stageStateCopy[stage.state]; - const isActive = stage.state === 'active'; return (
-
- {stage.icon} - {stage.label} -
-
{stage.description}
-
- {isActive && ( - - )} - {copy.label} +
{stage.icon}
+
+ {stage.state === 'active' ? 'Workingโ€ฆ' : stage.state === 'done' ? 'Done' : stage.state === 'error' ? 'Error' : stage.label.split('(')[0].trim()}
); })}
-
+ {/* Latest message card โ€” compact */} {latestMessage && (
-
-
{latestMessage.icon}
-
-
-
- {latestMessage.tone === 'active' && isRunning && ( - - )} - {latestMessage.title} -
-
{latestMessage.timeLabel}
+
{latestMessage.icon}
+
+
+
+ {latestMessage.tone === 'active' && isRunning && ( + + )} + {latestMessage.title}
- {latestMessage.subtitle && ( -
{latestMessage.subtitle}
- )} - {latestMessage.raw && ( -
{latestMessage.raw}
- )} +
{latestMessage.timeLabel}
+ {latestMessage.subtitle && ( +
{latestMessage.subtitle}
+ )}
)} + {/* Scrollable message log โ€” compact rows */}
= ({ ref={scrollRef} style={{ overflowY: 'auto', - padding: '0 20px', + padding: '6px 10px', display: 'flex', flexDirection: 'column', - gap: 12 + gap: 4 }} > {processedMessages.length === 0 && ( -
- {isRunning && } +
+ {isRunning && } Awaiting progress updatesโ€ฆ
)} @@ -784,33 +710,18 @@ const ResearchProgressModal: React.FC = ({ key={`${meta.timestamp}-${index}`} style={{ display: 'flex', - gap: 14, - padding: '12px 14px', - borderRadius: 12, + alignItems: 'center', + gap: 8, + padding: '4px 8px', + borderRadius: 6, background: styles.bg, - border: `1px solid ${styles.border}` + border: `1px solid ${styles.border}`, + fontSize: 12 }} > -
{meta.icon}
-
-
-
{meta.title}
-
{meta.timeLabel}
-
- {meta.subtitle && ( -
{meta.subtitle}
- )} - {meta.raw && ( -
{meta.raw}
- )} -
+ {meta.icon} + {meta.title} + {meta.timeLabel}
); })} @@ -820,13 +731,13 @@ const ResearchProgressModal: React.FC = ({ {error && (
Error: {error} diff --git a/frontend/src/components/BlogWriter/SEO/MetadataDisplay/CoreMetadataTab.tsx b/frontend/src/components/BlogWriter/SEO/MetadataDisplay/CoreMetadataTab.tsx index d6ee3e25..02945977 100644 --- a/frontend/src/components/BlogWriter/SEO/MetadataDisplay/CoreMetadataTab.tsx +++ b/frontend/src/components/BlogWriter/SEO/MetadataDisplay/CoreMetadataTab.tsx @@ -88,12 +88,49 @@ export const CoreMetadataTab: React.FC = ({ } } as const; + const getScoreColor = (score: number) => { + if (score >= 80) return '#16a34a'; + if (score >= 60) return '#ca8a04'; + return '#dc2626'; + }; + + const formatDate = (dateStr?: string) => { + if (!dateStr) return null; + try { + return new Date(dateStr).toLocaleString(); + } catch { + return dateStr; + } + }; + return ( - - - Core SEO Metadata - + + + + Core SEO Metadata + + + {metadata.optimization_score != null && ( + + + + )} + {metadata.generated_at && ( + + Generated: {formatDate(metadata.generated_at)} + + )} + + {/* SEO Title */} @@ -113,6 +150,34 @@ export const CoreMetadataTab: React.FC = ({ + + {/* Title options selector */} + {metadata.title_options && metadata.title_options.length > 1 && ( + + + Choose a title option: + + + {metadata.title_options.map((opt: string, idx: number) => ( + onMetadataEdit('seo_title', opt)} + sx={{ + justifyContent: 'flex-start', + height: 'auto', + py: 0.5, + '& .MuiChip-label': { whiteSpace: 'normal', display: 'block' }, + ...(metadata.seo_title === opt ? { bgcolor: '#e8f5e9', color: '#2e7d32', fontWeight: 600 } : {}), + }} + /> + ))} + + + )} + = ({ + + {/* Meta description options selector */} + {metadata.meta_descriptions && metadata.meta_descriptions.length > 1 && ( + + + Choose a description option: + + + {metadata.meta_descriptions.map((opt: string, idx: number) => ( + onMetadataEdit('meta_description', opt)} + sx={{ + justifyContent: 'flex-start', + height: 'auto', + py: 0.5, + '& .MuiChip-label': { whiteSpace: 'normal', display: 'block' }, + ...(metadata.meta_description === opt ? { bgcolor: '#e8f5e9', color: '#2e7d32', fontWeight: 600 } : {}), + }} + /> + ))} + + + )} + = ({ }} > - {/* Image placeholder */} - - {metadata.open_graph?.image ? ( + {/* Image */} + + - Image loaded - - ) : ( - - No image set + {metadata.open_graph?.image ? 'Loading image...' : 'No image set'} + + {metadata.open_graph?.image && ( + ) => { e.currentTarget.style.display = 'none'; }} + sx={{ position: 'absolute', inset: 0, width: '100%', height: '100%', objectFit: 'cover' }} + /> )} @@ -347,23 +344,20 @@ export const PreviewCard: React.FC = ({ }} > - {/* Image placeholder */} - - {metadata.twitter_card?.image ? ( + {/* Image */} + + - Image loaded - - ) : ( - - No image set + {metadata.twitter_card?.image ? 'Loading image...' : 'No image set'} + + {metadata.twitter_card?.image && ( + ) => { e.currentTarget.style.display = 'none'; }} + sx={{ position: 'absolute', top: 0, left: 0, right: 0, bottom: 0, width: '100%', height: '100%', objectFit: 'cover' }} + /> )} diff --git a/frontend/src/components/BlogWriter/SEO/MetadataDisplay/SocialMediaTab.tsx b/frontend/src/components/BlogWriter/SEO/MetadataDisplay/SocialMediaTab.tsx index ec65a93d..036ecee3 100644 --- a/frontend/src/components/BlogWriter/SEO/MetadataDisplay/SocialMediaTab.tsx +++ b/frontend/src/components/BlogWriter/SEO/MetadataDisplay/SocialMediaTab.tsx @@ -208,6 +208,27 @@ export const SocialMediaTab: React.FC = ({ ) }} /> + {openGraph.image && ( + ) => { + e.currentTarget.style.display = 'none'; + (e.currentTarget.nextElementSibling as HTMLElement)?.style.removeProperty('display'); + }} + sx={{ + mt: 1, height: 120, width: '100%', objectFit: 'cover', borderRadius: 1, + border: '1px solid', borderColor: 'divider', display: 'block' + }} + /> + )} + + No preview + @@ -359,6 +380,27 @@ export const SocialMediaTab: React.FC = ({ ) }} /> + {twitterCard.image && ( + ) => { + e.currentTarget.style.display = 'none'; + (e.currentTarget.nextElementSibling as HTMLElement)?.style.removeProperty('display'); + }} + sx={{ + mt: 1, height: 120, width: '100%', objectFit: 'cover', borderRadius: 1, + border: '1px solid', borderColor: 'divider', display: 'block' + }} + /> + )} + + No preview + diff --git a/frontend/src/components/BlogWriter/SEO/MetadataDisplay/StructuredDataTab.tsx b/frontend/src/components/BlogWriter/SEO/MetadataDisplay/StructuredDataTab.tsx index 387ec410..77979333 100644 --- a/frontend/src/components/BlogWriter/SEO/MetadataDisplay/StructuredDataTab.tsx +++ b/frontend/src/components/BlogWriter/SEO/MetadataDisplay/StructuredDataTab.tsx @@ -20,10 +20,6 @@ import { Tooltip, InputAdornment, Alert, - Card, - CardContent, - Divider, - Chip, Accordion, AccordionSummary, AccordionDetails, @@ -137,7 +133,7 @@ export const StructuredDataTab: React.FC = ({ return ( - + Structured Data (JSON-LD) @@ -145,16 +141,16 @@ export const StructuredDataTab: React.FC = ({ {/* Article Information */} - - + + Article Schema - + - - + + Headline @@ -189,7 +185,7 @@ export const StructuredDataTab: React.FC = ({ - + Description @@ -204,7 +200,7 @@ export const StructuredDataTab: React.FC = ({ = ({ - + Main Entity URL @@ -255,8 +251,8 @@ export const StructuredDataTab: React.FC = ({ - - + + Word Count @@ -286,16 +282,16 @@ export const StructuredDataTab: React.FC = ({ {/* Author Information */} - - + + Author Information - + - - + + Author Name @@ -318,7 +314,7 @@ export const StructuredDataTab: React.FC = ({ - + Author Type @@ -344,16 +340,16 @@ export const StructuredDataTab: React.FC = ({ {/* Publisher Information */} - - + + Publisher Information - + - - + + Publisher Name @@ -376,7 +372,7 @@ export const StructuredDataTab: React.FC = ({ - + Publisher Logo @@ -402,16 +398,16 @@ export const StructuredDataTab: React.FC = ({ {/* Publication Dates */} - - + + Publication Dates - + - - + + Date Published @@ -435,7 +431,7 @@ export const StructuredDataTab: React.FC = ({ - + Date Modified @@ -462,16 +458,16 @@ export const StructuredDataTab: React.FC = ({ {/* Keywords */} - - + + Keywords & Categories - + - - + + Keywords @@ -507,7 +503,7 @@ export const StructuredDataTab: React.FC = ({ }> - + Raw JSON-LD Schema @@ -515,7 +511,7 @@ export const StructuredDataTab: React.FC = ({ - + Complete JSON-LD Schema diff --git a/frontend/src/components/BlogWriter/SectionGenerator.tsx b/frontend/src/components/BlogWriter/SectionGenerator.tsx index 51a17e09..623b0eac 100644 --- a/frontend/src/components/BlogWriter/SectionGenerator.tsx +++ b/frontend/src/components/BlogWriter/SectionGenerator.tsx @@ -6,6 +6,7 @@ interface SectionGeneratorProps { outline: BlogOutlineSection[]; research: BlogResearchResponse | null; genMode: 'draft' | 'polished'; + competitiveAdvantage?: string; onSectionGenerated: (sectionId: string, markdown: string) => void; onContinuityRefresh: () => void; navigateToPhase?: (phase: string) => void; @@ -17,6 +18,7 @@ export const SectionGenerator: React.FC = ({ outline, research, genMode, + competitiveAdvantage, onSectionGenerated, onContinuityRefresh, navigateToPhase @@ -33,7 +35,7 @@ export const SectionGenerator: React.FC = ({ navigateToPhase?.('content'); try { - const res = await blogWriterApi.generateSection({ section, mode: genMode }); + const res = await blogWriterApi.generateSection({ section, mode: genMode, research: research || undefined, competitive_advantage: competitiveAdvantage }); if (res?.markdown) { onSectionGenerated(sectionId, res.markdown); onContinuityRefresh(); @@ -107,7 +109,7 @@ export const SectionGenerator: React.FC = ({ navigateToPhase?.('content'); for (const s of outline) { - const res = await blogWriterApi.generateSection({ section: s, mode: genMode }); + const res = await blogWriterApi.generateSection({ section: s, mode: genMode, research: research || undefined, competitive_advantage: competitiveAdvantage }); onSectionGenerated(s.id, res.markdown); onContinuityRefresh(); } diff --git a/frontend/src/components/ContentPlanningDashboard/tabs/CalendarTab.tsx b/frontend/src/components/ContentPlanningDashboard/tabs/CalendarTab.tsx index 61ae7740..47f5eeb3 100644 --- a/frontend/src/components/ContentPlanningDashboard/tabs/CalendarTab.tsx +++ b/frontend/src/components/ContentPlanningDashboard/tabs/CalendarTab.tsx @@ -1,4 +1,5 @@ import React, { useState, useEffect } from 'react'; +import { useNavigate } from 'react-router-dom'; import { Box, Grid, @@ -47,7 +48,9 @@ import { Timeline as TimelineIcon, Lightbulb as LightbulbIcon, CheckCircle as CheckCircleIcon, - AutoAwesome as AutoAwesomeIcon + AutoAwesome as AutoAwesomeIcon, + LinkedIn as LinkedInIcon, + Description as DescriptionIcon } from '@mui/icons-material'; import { useContentPlanningStore } from '../../../stores/contentPlanningStore'; @@ -74,6 +77,7 @@ function TabPanel(props: TabPanelProps) { } const CalendarTab: React.FC = () => { + const navigate = useNavigate(); const { calendarEvents, createEvent, @@ -539,6 +543,44 @@ const CalendarTab: React.FC = () => { Scheduled: {new Date(event.scheduled_date || event.date || '').toLocaleDateString()} + {event.status !== 'published' && ( + + {(event.platform === 'linkedin') && ( + + )} + {(event.content_type === 'blog_post' || event.content_type === 'blog') && ( + + )} + + )} diff --git a/frontend/src/components/MainDashboard/components/EnhancedTodayModal.tsx b/frontend/src/components/MainDashboard/components/EnhancedTodayModal.tsx index 24804b7e..3f7b2c8e 100644 --- a/frontend/src/components/MainDashboard/components/EnhancedTodayModal.tsx +++ b/frontend/src/components/MainDashboard/components/EnhancedTodayModal.tsx @@ -30,6 +30,7 @@ import { TrendingFlat as TrendFlatIcon, GpsFixed as GapIcon, BarChart as VolumeIcon, + CalendarMonth as CalendarIcon, } from '@mui/icons-material'; import { useNavigate } from 'react-router-dom'; import { useWorkflowStore } from '../../../stores/workflowStore'; @@ -85,11 +86,19 @@ const EnhancedTodayModal: React.FC = ({ if (task.action) { task.action(); } else if (task.actionUrl) { - navigate(task.actionUrl); + const navigationState: Record = { + workflowTaskId: task.id + }; + if (task.metadata?.source === 'calendar_event') { + navigationState.calendarEventId = task.metadata.source_event_id; + navigationState.calendarTopic = task.title; + navigationState.calendarDescription = task.description; + } + navigate(task.actionUrl, { state: navigationState }); } - // Mark task as completed in workflow - if (currentWorkflow) { + // Mark task as completed in workflow (skip for calendar tasks โ€” writers handle it after save/publish) + if (currentWorkflow && task.metadata?.source !== 'calendar_event') { await completeTask(task.id); } } catch (error) { @@ -364,6 +373,26 @@ const getTaskStatus = (task: TodayTask) => { {pillarTitle} Tasks + {pillarTasks.length === 0 ? ( + + + + No content scheduled for this pillar today + + + Add content to your Content Calendar to populate workflow tasks + + + + ) : ( {pillarTasks.map((task, index) => { const status = getTaskStatus(task); @@ -430,6 +459,28 @@ const getTaskStatus = (task: TodayTask) => { + {/* Calendar Event Source Badge */} + {task.metadata?.source === 'calendar_event' && ( + + + + + From your Content Calendar + + + + )} + {/* Agent Reasoning Section */} {task.metadata?.source_agent && ( { ); })} + )} {/* Footer Actions */} diff --git a/frontend/src/components/shared/CopilotKit/PlatformPersonaChat.tsx b/frontend/src/components/shared/CopilotKit/PlatformPersonaChat.tsx index e4960d39..3361142c 100644 --- a/frontend/src/components/shared/CopilotKit/PlatformPersonaChat.tsx +++ b/frontend/src/components/shared/CopilotKit/PlatformPersonaChat.tsx @@ -198,8 +198,8 @@ export const PlatformPersonaChat: React.FC = ({ return `${systemMessage}\n\nCurrent Context: ${contextString}`; }, [systemMessage]); - // Loading state - if (loading) { + // Loading state โ€” only block if persona data is not yet available + if (loading && !corePersona) { return (
@@ -210,8 +210,8 @@ export const PlatformPersonaChat: React.FC = ({ ); } - // Error state - if (error) { + // Error state โ€” only block if persona data is missing; with defaults, continue normally + if (error && !corePersona) { return (
diff --git a/frontend/src/components/shared/PersonaContext/PlatformPersonaProvider.tsx b/frontend/src/components/shared/PersonaContext/PlatformPersonaProvider.tsx index 5f7e23f4..3be67643 100644 --- a/frontend/src/components/shared/PersonaContext/PlatformPersonaProvider.tsx +++ b/frontend/src/components/shared/PersonaContext/PlatformPersonaProvider.tsx @@ -4,7 +4,7 @@ * Integrates with existing persona API client and injects data into CopilotKit */ -import React, { createContext, useContext, useState, useEffect, ReactNode, useCallback, useRef } from 'react'; +import React, { createContext, useContext, useState, useEffect, useMemo, ReactNode, useCallback, useRef } from 'react'; import { useCopilotReadable } from '@copilotkit/react-core'; import { useAuth } from '@clerk/clerk-react'; import { @@ -16,6 +16,125 @@ import { getUserPersonas, getPlatformPersona } from '../../../api/persona'; +import { shouldSkipOnboarding } from '../../../utils/demoMode'; + +const LINKEDIN_DEFAULT_CORE_PERSONA: WritingPersona = { + id: 0, + user_id: 0, + persona_name: 'LinkedIn Professional', + archetype: 'Thought Leader', + core_belief: 'Sharing knowledge drives professional growth', + brand_voice_description: 'Clear, authoritative, and approachable', + linguistic_fingerprint: { + sentence_metrics: { + average_sentence_length_words: 15, + preferred_sentence_type: 'compound', + active_to_passive_ratio: '80:20', + sentence_complexity: 'moderate', + paragraph_structure: 'standard', + }, + lexical_features: { + go_to_words: ['leverage', 'optimize', 'strategic'], + go_to_phrases: ["Let's explore", "Here's the thing"], + avoid_words: ['utilize', 'synergize'], + contractions: 'moderate', + vocabulary_level: 'professional', + industry_terminology: [], + emotional_tone_words: [], + }, + rhetorical_devices: { + metaphors: 'tech_mechanics', + analogies: 'everyday_to_tech', + rhetorical_questions: 'occasional', + storytelling_approach: 'case_study', + persuasion_techniques: ['logic', 'credibility'], + }, + }, + platform_adaptations: [], + onboarding_session_id: 0, + source_website_analysis: {}, + source_research_preferences: {}, + ai_analysis_version: '1.0', + confidence_score: 0.5, + analysis_date: new Date().toISOString(), + created_at: new Date().toISOString(), + updated_at: new Date().toISOString(), + is_active: true, +}; + +const LINKEDIN_DEFAULT_PLATFORM_PERSONA: PlatformAdaptation = { + id: 0, + writing_persona_id: 0, + platform_type: 'linkedin', + sentence_metrics: { + optimal_length: '150-300 words', + character_limit: 3000, + sentence_structure: 'varied', + paragraph_breaks: 'frequent', + readability_score: 8.5, + }, + lexical_features: { + hashtag_strategy: '3-5 relevant hashtags', + platform_specific_terms: [], + engagement_phrases: ['What do you think?', 'Share your thoughts'], + call_to_action_style: 'gentle', + }, + rhetorical_devices: { + question_frequency: 'occasional', + story_elements: 'personal_anecdotes', + visual_descriptions: 'minimal', + interactive_elements: 'questions', + }, + tonal_range: { + default_tone: 'professional_friendly', + permissible_tones: ['inspiring', 'thoughtful'], + forbidden_tones: ['salesy', 'academic'], + emotional_range: 'moderate', + formality_level: 'semi_formal', + }, + stylistic_constraints: { + punctuation_preferences: 'standard', + formatting_rules: 'clean', + emoji_usage: 'minimal', + link_placement: 'end', + media_integration: 'encouraged', + }, + content_format_rules: { + character_limit: 3000, + optimal_length: '150-300 words', + word_count: '150-300', + hashtag_limit: 3, + media_requirements: 'optional', + link_restrictions: 'unlimited', + }, + engagement_patterns: { + posting_frequency: '2-3 times per week', + best_timing: '9 AM - 11 AM, 1 PM - 3 PM', + interaction_style: 'conversational', + response_strategy: 'within 2 hours', + community_approach: 'collaborative', + }, + posting_frequency: { + frequency: '2-3 times per week', + optimal_days: ['Tuesday', 'Wednesday', 'Thursday'], + optimal_times: ['9:00 AM', '1:00 PM'], + seasonal_adjustments: 'moderate', + }, + content_types: { + primary_content: ['thought_leadership', 'industry_insights'], + secondary_content: ['personal_stories', 'tips'], + content_mix: '70% professional, 30% personal', + seasonal_content: ['trending_topics', 'industry_events'], + }, + platform_best_practices: { + algorithm_tips: ['post_consistently', 'engage_with_community'], + engagement_tactics: ['ask_questions', 'share_stories'], + content_strategies: ['value_first', 'authentic_voice'], + growth_hacks: ['cross_promotion', 'collaboration'], + }, + created_at: new Date().toISOString(), + updated_at: new Date().toISOString(), +}; // Context interface interface PlatformPersonaContextType { @@ -39,20 +158,118 @@ interface PlatformPersonaProviderProps { // Cache duration: 5 minutes (constant outside component to avoid dependency issues) const CACHE_DURATION = 5 * 60 * 1000; +/** + * Internal component that injects persona data into CopilotKit context. + * Rendered only when skipOnboarding is false โ€” when feature-gated, + * we skip useCopilotReadable entirely to avoid cascading re-renders + * with child components that also call useCopilotReadable. + */ +const PersonaCopilotInjector: React.FC<{ + corePersona: WritingPersona | null; + platformPersona: PlatformAdaptation | null; + platform: PlatformType; + children: ReactNode; +}> = ({ corePersona, platformPersona, platform, children }) => { + const corePersonaCategories = useMemo(() => ["core-persona", "writing-style", "user-preferences"], []); + const platformPersonaCategories = useMemo(() => ["platform-persona", platform, "content-optimization"], [platform]); + const combinedPersonaCategories = useMemo(() => ["complete-persona", platform, "writing-guidance"], [platform]); + + const corePersonaDescription = useMemo( + () => `Core writing persona: ${corePersona?.persona_name || 'Loading...'}`, + [corePersona?.persona_name] + ); + const platformPersonaDescription = useMemo( + () => `${platform} platform optimization rules and constraints`, + [platform] + ); + const combinedPersonaDescription = useMemo( + () => `Complete ${platform} writing persona with linguistic fingerprint and platform optimization`, + [platform] + ); + + const corePersonaParentId = useMemo( + () => corePersona?.id?.toString(), + [corePersona?.id] + ); + + useCopilotReadable({ + description: corePersonaDescription, + value: corePersona, + categories: corePersonaCategories, + parentId: corePersonaParentId + }, [corePersona]); + + useEffect(() => { + if (corePersona) { + console.log('๐ŸŽฏ Injected core persona into CopilotKit:', { + name: corePersona.persona_name, + archetype: corePersona.archetype, + confidence: corePersona.confidence_score, + hasLinguisticFingerprint: !!(corePersona.linguistic_fingerprint && Object.keys(corePersona.linguistic_fingerprint).length) + }); + } + }, [corePersona]); + + useCopilotReadable({ + description: platformPersonaDescription, + value: platformPersona, + categories: platformPersonaCategories, + parentId: corePersonaParentId + }, [platformPersona]); + + useEffect(() => { + if (platformPersona) { + console.log('๐ŸŽฏ Injected platform persona into CopilotKit:', { + platform: platformPersona.platform_type, + characterLimit: platformPersona.content_format_rules?.character_limit, + optimalLength: platformPersona.content_format_rules?.optimal_length + }); + } + }, [platformPersona]); + + const combinedPersonaValue = useMemo(() => ({ + core: corePersona, + platform: platformPersona, + combined: { + persona_name: corePersona?.persona_name, + archetype: corePersona?.archetype, + platform: platform, + linguistic_fingerprint: corePersona?.linguistic_fingerprint, + platform_constraints: platformPersona?.content_format_rules, + engagement_patterns: platformPersona?.engagement_patterns + } + }), [corePersona, platformPersona, platform]); + + useCopilotReadable({ + description: combinedPersonaDescription, + value: combinedPersonaValue, + categories: combinedPersonaCategories, + parentId: corePersonaParentId + }, [corePersona, platformPersona, platform]); + + return <>{children}; +}; + // Provider component export const PlatformPersonaProvider: React.FC = ({ children, platform }) => { + const skipOnboarding = shouldSkipOnboarding(); + // Get Clerk user ID const { userId } = useAuth(); // Convert string userId to number for legacy API compatibility const numericUserId = userId ? 1 : 1; // Use 1 as placeholder, API uses Clerk ID from auth - // State management - const [corePersona, setCorePersona] = useState(null); - const [platformPersona, setPlatformPersona] = useState(null); - const [loading, setLoading] = useState(true); + // State management โ€” seed defaults immediately in feature-gated mode + const [corePersona, setCorePersona] = useState( + skipOnboarding ? LINKEDIN_DEFAULT_CORE_PERSONA : null + ); + const [platformPersona, setPlatformPersona] = useState( + skipOnboarding ? LINKEDIN_DEFAULT_PLATFORM_PERSONA : null + ); + const [loading, setLoading] = useState(!skipOnboarding); const [error, setError] = useState(null); // Add request throttling @@ -62,6 +279,12 @@ export const PlatformPersonaProvider: React.FC = ( // Fetch persona data function const fetchPersonas = useCallback(async () => { + // In feature-gated mode, skip API calls entirely โ€” defaults already seeded + if (skipOnboarding) { + setLoading(false); + return; + } + const now = Date.now(); // Prevent multiple simultaneous requests @@ -86,8 +309,6 @@ export const PlatformPersonaProvider: React.FC = ( setLoading(true); setError(null); - // Fetch both core persona and platform-specific data - // Note: APIs use Clerk auth, so user ID is extracted from JWT let userPersonasResponse; let platformPersonaResponse = null; @@ -95,7 +316,6 @@ export const PlatformPersonaProvider: React.FC = ( const results = await Promise.all([ getUserPersonas(), getPlatformPersona(platform).catch(err => { - // Handle 404 gracefully - platform persona doesn't exist yet if (err.message && err.message.includes('No persona found')) { console.warn(`โš ๏ธ No ${platform} persona found - user can still generate content`); return null; @@ -106,10 +326,11 @@ export const PlatformPersonaProvider: React.FC = ( userPersonasResponse = results[0]; platformPersonaResponse = results[1]; } catch (error) { - // If platform persona fetch fails, continue with core persona only - console.warn(`โš ๏ธ Platform persona unavailable: ${error instanceof Error ? error.message : 'Unknown error'}`); - userPersonasResponse = await getUserPersonas(); - platformPersonaResponse = null; + console.warn(`โš ๏ธ Persona API unavailable, using defaults: ${error instanceof Error ? error.message : 'Unknown error'}`); + setCorePersona(LINKEDIN_DEFAULT_CORE_PERSONA); + setPlatformPersona(LINKEDIN_DEFAULT_PLATFORM_PERSONA); + setError(null); + return; } // Handle core persona data @@ -299,12 +520,18 @@ export const PlatformPersonaProvider: React.FC = ( } catch (error) { console.error('โŒ Error fetching personas:', error); - setError(error instanceof Error ? error.message : 'Failed to fetch persona data'); - // Set fallback data if available - if (corePersona) { - console.log('๐Ÿ”„ Using existing core persona data'); + // Provide fallback defaults so children always render + if (!corePersona) { + console.log('๐Ÿ”„ Using default LinkedIn persona as fallback'); + setCorePersona(LINKEDIN_DEFAULT_CORE_PERSONA); } + if (!platformPersona) { + console.log('๐Ÿ”„ Using default LinkedIn platform persona as fallback'); + setPlatformPersona(LINKEDIN_DEFAULT_PLATFORM_PERSONA); + } + // Clear error state โ€” with defaults available, consumers should function normally + setError(null); } finally { setLoading(false); lastRequestTime.current = Date.now(); @@ -319,116 +546,31 @@ export const PlatformPersonaProvider: React.FC = ( }, [fetchPersonas]); // Refresh function for manual updates - const refreshPersonas = async () => { + const refreshPersonas = useCallback(async () => { await fetchPersonas(); - }; + }, [fetchPersonas]); - // Inject core persona into CopilotKit context - useCopilotReadable({ - description: `Core writing persona: ${corePersona?.persona_name || 'Loading...'}`, - value: corePersona, - categories: ["core-persona", "writing-style", "user-preferences"], - parentId: corePersona?.id?.toString() - }); + // Memoize context value to prevent unnecessary re-renders of consumers + const contextValue = useMemo(() => ({ + corePersona, + platformPersona, + platform, + loading, + error, + refreshPersonas + }), [corePersona, platformPersona, platform, loading, error, refreshPersonas]); - // Debug: Log when persona data is available for CopilotKit - useEffect(() => { - if (corePersona) { - console.log('๐ŸŽฏ Injected core persona into CopilotKit:', { - name: corePersona.persona_name, - archetype: corePersona.archetype, - confidence: corePersona.confidence_score, - hasLinguisticFingerprint: !!(corePersona.linguistic_fingerprint && Object.keys(corePersona.linguistic_fingerprint).length) - }); - } - }, [corePersona]); + // No blocking spinner/error states โ€” children always render. + // Loading/error states are still exposed via context so consumers + // can show non-blocking indicators if they want. - // Inject platform-specific persona into CopilotKit context - useCopilotReadable({ - description: `${platform} platform optimization rules and constraints`, - value: platformPersona, - categories: ["platform-persona", platform, "content-optimization"], - parentId: corePersona?.id?.toString() - }); - - // Debug: Log when platform persona is available for CopilotKit - useEffect(() => { - if (platformPersona) { - console.log('๐ŸŽฏ Injected platform persona into CopilotKit:', { - platform: platformPersona.platform_type, - characterLimit: platformPersona.content_format_rules?.character_limit, - optimalLength: platformPersona.content_format_rules?.optimal_length - }); - } - }, [platformPersona]); - - // Inject combined persona context for comprehensive understanding - useCopilotReadable({ - description: `Complete ${platform} writing persona with linguistic fingerprint and platform optimization`, - value: { - core: corePersona, - platform: platformPersona, - combined: { - persona_name: corePersona?.persona_name, - archetype: corePersona?.archetype, - platform: platform, - linguistic_fingerprint: corePersona?.linguistic_fingerprint, - platform_constraints: platformPersona?.content_format_rules, - engagement_patterns: platformPersona?.engagement_patterns - } - }, - categories: ["complete-persona", platform, "writing-guidance"], - parentId: corePersona?.id?.toString() - }); - - // Loading state - if (loading) { - return ( -
-
-
-

Loading {platform} persona...

-
-
- ); - } - - // Error state - if (error && !corePersona) { - return ( -
-
-
- - - -
-
-

Failed to load persona data

-

{error}

- -
-
-
- ); - } - - // Success state - provide context return ( - - {children} + + {skipOnboarding ? children : ( + + {children} + + )} ); }; diff --git a/frontend/src/hooks/useBlogWriterState.ts b/frontend/src/hooks/useBlogWriterState.ts index 21de9dac..dd67dac1 100644 --- a/frontend/src/hooks/useBlogWriterState.ts +++ b/frontend/src/hooks/useBlogWriterState.ts @@ -28,6 +28,14 @@ const readLSString = (key: string, fallback: string): string => { } }; +// Compute a content fingerprint from the outline to detect stale SEO metadata. +// The fingerprint changes whenever the blog structure (outline IDs + title) changes, +// which means any previously cached SEO metadata is no longer valid. +const computeMetadataFingerprint = (outline: BlogOutlineSection[], selectedTitle: string): string => { + const ids = outline.map(s => String(s.id)).sort().join(','); + return `${ids}|${selectedTitle}`; +}; + const readLSBool = (key: string, fallback: boolean): boolean => { try { const raw = localStorage.getItem(key); @@ -85,16 +93,34 @@ const restoreInitialState = () => { // Restore confirmation flags outlineConfirmed = readLSBool('blog_outline_confirmed', false); - // Backward compatibility: if outline exists but confirmation wasn't saved, assume confirmed - if (!outlineConfirmed && outline.length > 0) { - outlineConfirmed = true; - } contentConfirmed = readLSBool('blog_content_confirmed', false); + // Only restore outline/content confirmation from explicit flags. + // Previously, backward compat assumed confirmed if data existed, but this + // caused premature phase advancement (e.g. jumping to SEO phase on page load) + // when restoring stale cached data from a prior session. // Restore SEO data seoAnalysis = readLS('blog_seo_analysis', null); seoMetadata = readLS('blog_seo_metadata', null); + // Validate SEO metadata against current outline โ€” discard if stale + if (seoMetadata) { + if (outline.length === 0) { + // No outline context โ€” metadata is meaningless for a fresh blog + seoMetadata = null; + try { localStorage.removeItem('blog_seo_metadata'); } catch {} + } else { + const savedFingerprint = readLS('blog_seo_metadata_fingerprint', null); + const currentFingerprint = computeMetadataFingerprint(outline, selectedTitle); + if (savedFingerprint !== currentFingerprint) { + // Outline or title changed since metadata was generated โ€” discard stale data + seoMetadata = null; + try { localStorage.removeItem('blog_seo_metadata'); } catch {} + try { localStorage.removeItem('blog_seo_metadata_fingerprint'); } catch {} + } + } + } + // Restore section images (log only once per session, not on every hook mount) const savedSectionImages = readLS | null>('blog_section_images', null); if (savedSectionImages && Object.keys(savedSectionImages).length > 0) { @@ -237,14 +263,21 @@ export const useBlogWriterState = () => { } catch {} }, [seoAnalysis]); - // Persist seoMetadata to localStorage whenever it changes + // Persist seoMetadata + content fingerprint to localStorage whenever they change useEffect(() => { try { if (seoMetadata) { localStorage.setItem('blog_seo_metadata', JSON.stringify(seoMetadata)); + // Save fingerprint to detect staleness on future page loads + const fingerprint = computeMetadataFingerprint(outline, selectedTitle); + localStorage.setItem('blog_seo_metadata_fingerprint', fingerprint); + } else { + // Clear both when metadata is explicitly nulled + localStorage.removeItem('blog_seo_metadata'); + localStorage.removeItem('blog_seo_metadata_fingerprint'); } } catch {} - }, [seoMetadata]); + }, [seoMetadata, outline, selectedTitle]); // Persist sectionImages to localStorage whenever they change useEffect(() => { @@ -292,6 +325,9 @@ export const useBlogWriterState = () => { // Handle research completion const handleResearchComplete = useCallback((researchData: BlogResearchResponse) => { + // New research topic โ€” any prior SEO metadata is now stale + setSeoMetadata(null); + setResearch(researchData); const formattedAngles = dedupeTitles( (researchData?.suggested_angles || []).map(formatContentAngleToTitle) @@ -309,6 +345,9 @@ export const useBlogWriterState = () => { // Handle outline completion with enhanced metadata const handleOutlineComplete = useCallback((result: any) => { if (result?.outline) { + // New content structure โ€” any prior SEO metadata is now stale + setSeoMetadata(null); + setOutline(result.outline); const aiTitleOptions: string[] = result.title_options || []; @@ -494,12 +533,12 @@ export const useBlogWriterState = () => { localStorage.setItem('blog_publish_completed', 'true'); } - // Restore phase - const phase = asset.phase || 'research'; - localStorage.setItem('blogwriter_current_phase', phase); - localStorage.setItem('blogwriter_user_selected_phase', 'true'); + // Note: Intentionally NOT writing the asset's phase to localStorage here. + // The user's actual phase from their previous session (persisted by + // usePhaseNavigationCore) is more reliable. Writing 'research' here would + // overwrite it and cause usePhaseRestoration to restore the stale phase. - console.log('[BlogWriterState] Restored from asset:', asset.id, 'phase:', phase); + console.log('[BlogWriterState] Restored from asset:', asset.id, 'phase:', asset.phase || 'research'); } catch (e) { console.error('[BlogWriterState] Failed to restore from asset:', e); } diff --git a/frontend/src/hooks/usePhaseNavigation.ts b/frontend/src/hooks/usePhaseNavigation.ts index c4e1e322..6d2aa36e 100644 --- a/frontend/src/hooks/usePhaseNavigation.ts +++ b/frontend/src/hooks/usePhaseNavigation.ts @@ -54,7 +54,6 @@ export const usePhaseNavigation = ( const outlineCompleted = outline.length > 0; const contentCompleted = hasContent && contentConfirmed; const seoCompleted = !!seoAnalysis && (seoRecommendationsApplied === true || !!seoMetadata); - return [ { id: 'research', @@ -149,11 +148,12 @@ export const usePhaseNavigation = ( core.setCurrentPhase('content'); } } else if (contentConfirmed && !seoAnalysis) { - if (core.currentPhase !== 'seo' && canNavigateTo('seo')) { + // Only auto-advance to SEO if user is already on/past content phase + if ((core.currentPhase === 'content' || core.currentPhase === 'seo') && canNavigateTo('seo')) { core.setCurrentPhase('seo'); } } else if (seoAnalysis && !seoRecommendationsApplied && !seoMetadata) { - if (core.currentPhase !== 'seo' && canNavigateTo('seo')) { + if ((core.currentPhase === 'content' || core.currentPhase === 'seo') && canNavigateTo('seo')) { core.setCurrentPhase('seo'); } } else if (seoAnalysis && (seoRecommendationsApplied || seoMetadata)) { diff --git a/frontend/src/hooks/usePhaseNavigationCore.ts b/frontend/src/hooks/usePhaseNavigationCore.ts index c9321218..1502ddab 100644 --- a/frontend/src/hooks/usePhaseNavigationCore.ts +++ b/frontend/src/hooks/usePhaseNavigationCore.ts @@ -1,5 +1,5 @@ import { useState, useEffect, useCallback, useRef } from 'react'; -import { readLSString, readLSBool } from '../utils/persistence'; +import { readLSString } from '../utils/persistence'; export interface PhaseBase { id: string; @@ -71,14 +71,7 @@ export const usePhaseNavigationCore = ( } }); - const [userSelectedPhase, setUserSelectedPhase] = useState(() => { - try { - if (typeof window !== 'undefined') { - return readLSBool(userSelectedKey, false); - } - } catch { /* noop */ } - return false; - }); + const [userSelectedPhase, setUserSelectedPhase] = useState(false); const lastClickAtRef = useRef(0); const oscillationGuardRef = useRef({ @@ -90,10 +83,6 @@ export const usePhaseNavigationCore = ( try { localStorage.setItem(phaseKey, currentPhase); } catch { /* noop */ } }, [currentPhase, phaseKey]); - useEffect(() => { - try { localStorage.setItem(userSelectedKey, String(userSelectedPhase)); } catch { /* noop */ } - }, [userSelectedPhase, userSelectedKey]); - const navigateToPhase = useCallback((phaseId: string, phases: PhaseBase[]) => { const now = Date.now(); if (now - lastClickAtRef.current < 200) return; diff --git a/frontend/src/hooks/useWixPublish.ts b/frontend/src/hooks/useWixPublish.ts index 2b1e2463..bac7b6a7 100644 --- a/frontend/src/hooks/useWixPublish.ts +++ b/frontend/src/hooks/useWixPublish.ts @@ -8,6 +8,8 @@ export interface WixStatus { connected: boolean; has_permissions: boolean; site_info?: any; + error?: string; + reconnect_required?: boolean; } export interface WixPublishResult { @@ -117,25 +119,14 @@ export function useWixPublish() { setWixStatus({ connected: false, has_permissions: false }); return; } catch (err: any) { - // Backend error (network, 500, etc.) โ€” can't determine status - // Fall through to localStorage hint only if we have no other info - console.warn('[Wix] Backend connection check failed:', err?.message || err); + // Backend error (network, 500, etc.) โ€” can't validate token + // Show disconnected rather than stale cached state โ€” user should reconnect + console.warn('[Wix] Backend connection check failed (showing disconnected):', err?.message || err); } - // 3. FALLBACK: localStorage is only a hint, never authoritative - const localConnected = localStorage.getItem(WIX_CONNECTED_KEY) === 'true'; - const sessionConnected = sessionStorage.getItem(WIX_CONNECTED_KEY) === 'true'; - const urlConnected = new URLSearchParams(window.location.search).get('wix_connected') === 'true'; - - if (localConnected || sessionConnected || urlConnected) { - // We have a hint that user was connected, but backend couldn't confirm - // Show as connected but with warning โ€” user may need to reconnect - console.warn('[Wix] Showing cached connection state โ€” backend validation failed. User may need to reconnect.'); - setWixStatus({ connected: true, has_permissions: true }); - return; - } - - setWixStatus({ connected: false, has_permissions: false }); + // 3. Network error fallback โ€” never trust local cache over backend + clearStaleWixState(); + setWixStatus({ connected: false, has_permissions: false, error: 'Unable to verify connection' }); } catch { setWixStatus({ connected: false, has_permissions: false }); } finally { @@ -192,10 +183,13 @@ export function useWixPublish() { || 'Blog Post'; let coverImageUrl: string | undefined; + let coverImageWarning: string | undefined; if (metadata?.open_graph?.image) { const img = metadata.open_graph.image; if (typeof img === 'string' && (img.startsWith('http://') || img.startsWith('https://'))) { coverImageUrl = img; + } else if (typeof img === 'string' && img.startsWith('data:image/')) { + coverImageWarning = 'Cover image is a data URI (base64) and will not be included in Wix publish. Wix requires a public image URL.'; } } @@ -260,7 +254,8 @@ export function useWixPublish() { if (response.data.success) { const url = response.data.url; - const warning = response.data.warning; + const apiWarning = response.data.warning; + const warnings = [apiWarning, coverImageWarning].filter(Boolean); return { success: true, url, @@ -268,7 +263,7 @@ export function useWixPublish() { message: url ? `Blog post published to Wix! View it here: ${url}` : 'Blog post published successfully to Wix!', - ...(warning ? { warning } : {}), + ...(warnings.length > 0 ? { warning: warnings.join(' ') } : {}), }; } return { diff --git a/frontend/src/services/blogWriterApi.ts b/frontend/src/services/blogWriterApi.ts index 3f06dbc4..5a20ceee 100644 --- a/frontend/src/services/blogWriterApi.ts +++ b/frontend/src/services/blogWriterApi.ts @@ -188,6 +188,7 @@ export interface BlogSEOApplyRecommendationsRequest { outline: BlogOutlineSection[]; research: Record; recommendations: BlogSEOActionableRecommendation[]; + competitive_advantage?: string; persona?: Record; tone?: string; audience?: string; @@ -463,7 +464,7 @@ export const blogWriterApi = { return data; }, - async generateSection(payload: { section: BlogOutlineSection; keywords?: string[]; tone?: string; persona?: PersonaInfo; mode?: 'draft' | 'polished' }): Promise { + async generateSection(payload: { section: BlogOutlineSection; keywords?: string[]; tone?: string; persona?: PersonaInfo; mode?: 'draft' | 'polished'; research?: BlogResearchResponse; competitive_advantage?: string }): Promise { const { data } = await apiClient.post("/api/blog/section/generate", payload); return data; }, @@ -471,7 +472,7 @@ export const blogWriterApi = { // Removed old seoAnalyze - now using comprehensive SEO analysis through modal async seoMetadata(payload: { content: string; title?: string; keywords?: string[] }): Promise { - const { data } = await apiClient.post("/api/blog/seo/metadata", payload); + const { data } = await aiApiClient.post("/api/blog/seo/metadata", payload); return data; }, diff --git a/frontend/src/services/blogWriterCache.ts b/frontend/src/services/blogWriterCache.ts index 1fb8b417..da8e3b37 100644 --- a/frontend/src/services/blogWriterCache.ts +++ b/frontend/src/services/blogWriterCache.ts @@ -5,6 +5,8 @@ * and avoid unnecessary API calls. Shared by both CopilotKit and manual flows. */ +import { debug } from '../utils/debug'; + class BlogWriterCacheService { private readonly OUTLINE_CACHE_KEY = 'blog_outline'; private readonly TITLE_OPTIONS_CACHE_KEY = 'blog_title_options'; @@ -33,7 +35,7 @@ class BlogWriterCacheService { // More sophisticated matching could compare research keywords if needed const titleOptions = savedTitleOptions ? JSON.parse(savedTitleOptions) : undefined; - console.log(`Cache hit for outline (${parsedOutline.length} sections)`); + debug.log(`Cache hit for outline (${parsedOutline.length} sections)`); return { outline: parsedOutline, title_options: titleOptions @@ -55,7 +57,7 @@ class BlogWriterCacheService { if (titleOptions) { localStorage.setItem(this.TITLE_OPTIONS_CACHE_KEY, JSON.stringify(titleOptions)); } - console.log(`Cached outline (${outline.length} sections)`); + debug.log(`Cached outline (${outline.length} sections)`); } catch (error) { console.error('Error caching outline:', error); } @@ -102,11 +104,11 @@ class BlogWriterCacheService { normalized[id] = (values[idx] || '') as string; }); this.cacheContent(normalized, outlineIds); - console.log(`Cache hit for content after key normalization (${Object.keys(normalized).length} sections)`); + debug.log(`Cache hit for content after key normalization (${Object.keys(normalized).length} sections)`); return normalized; } - console.log(`Cache hit for content (${Object.keys(parsedSections).length} sections)`); + debug.log(`Cache hit for content (${Object.keys(parsedSections).length} sections)`); return parsedSections; } catch (error) { console.error('Error retrieving cached content:', error); @@ -124,7 +126,7 @@ class BlogWriterCacheService { const cacheKey = this.generateContentCacheKey(outlineIds); localStorage.setItem(cacheKey, JSON.stringify(sections)); - console.log(`Cached content (${Object.keys(sections).length} sections)`); + debug.log(`Cached content (${Object.keys(sections).length} sections)`); } catch (error) { console.error('Error caching content:', error); } diff --git a/frontend/src/types/workflow.ts b/frontend/src/types/workflow.ts index cb7856fd..100c270c 100644 --- a/frontend/src/types/workflow.ts +++ b/frontend/src/types/workflow.ts @@ -5,7 +5,7 @@ export type TaskStatus = 'pending' | 'in_progress' | 'completed' | 'skipped'; export type TaskPriority = 'high' | 'medium' | 'low'; export type ActionType = 'navigate' | 'modal' | 'external'; export type WorkflowStatus = 'not_started' | 'in_progress' | 'completed' | 'paused' | 'stopped'; -export type WorkflowGenerationMode = 'agent_committee' | 'llm_generation' | 'llm_pillar_backfill' | 'controlled_fallback'; +export type WorkflowGenerationMode = 'agent_committee' | 'llm_generation' | 'llm_pillar_backfill' | 'controlled_fallback' | 'calendar_driven'; export interface WorkflowProvenanceSummary { generationMode: WorkflowGenerationMode; diff --git a/frontend/src/utils/getSectionDiffs.ts b/frontend/src/utils/getSectionDiffs.ts index a6f0956b..d715e1bb 100644 --- a/frontend/src/utils/getSectionDiffs.ts +++ b/frontend/src/utils/getSectionDiffs.ts @@ -5,6 +5,7 @@ export interface DiffSegment { } export interface SectionDiff { + id: string; heading: string; originalContent: string; newContent: string; @@ -105,7 +106,7 @@ export function getSectionDiffs( const newContent = newSections[id] || ''; const segments = computeWordDiff(originalContent, newContent); const changed = segments.some(s => s.added || s.removed); - return { heading, originalContent, newContent, segments, changed }; + return { id, heading, originalContent, newContent, segments, changed }; }); let introductionDiff: DiffSegment[] | null = null;

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�Z!ZX- zoNjHnq1MAC%H4}tTtr>eZjV9JHSIf7(xSPv*DW;!nsk!d?@ol6UOauk+nG-tNI!*K zV@97LGIgOCUvLEJIUdmn0xIP1`S)?BQPTUc&%`Lr!w z-W%O6{YvT@W$m)uTS|oTuM+~KWPNab>YQUJ@3~N@;Fb*aWjq9mH2x=cDvCW=bQv|J8g8vc1ZP&QI#K44 z@Gp;kA^d0kvc4>@hxEM;WYi^pvgw{3wYe`2g$#fPFEWfF!WNp~j+`z=#6LwEbg(q8 zw>$|sW2(DseWCk2e$D>?4!>tF58Y}05VJFCTBMuxoo0C&Np48{u_H)JM{b|N7~`uP zvojwT5sQ{0Pnh-axLSC4SuIaN3^B+XvC!8YlRFlOU8o!8r)vO;$Vbb^JemLsfi=aYi^K(@928kzMgTj5l|Tz)40eW6dTHTnRi(`xj%nhlMyi2Y-}aO6 zwaW~6KUrdXESBf>-&o3xShHtZowPKe_}ie&1IOVFR02PWSa|%H(zI6WYF8y67xY*uc7LVj_44d(9?07 z=n8fR_|f52B%K#kT%WoT3H-A{Z7W!&Z9}?((5YX>@ zQQ~b@4LeKIZJOgy)Gp-N9lUGFW|D_j2n>?G9I4+nU06d7-B4+}fP!F!n$w$x*`Bss|W*!>kcRPa=j-#Hm z<8d>L@!yOV>vn~vO|}#A-AuB7t{u^F{{SrU)c*h%LB}SvTA4R;Uj+Cp+z9pUa?vA< z5cXD^Ko7?b!_(1!6G^a)5!i2X+oWPk9;TJ9UD6Yd4(yMu4On*qR~wKFj?{z%U|=># z&JKFeRfSSI0s8i!Rug_yoDQ8wdU{wc+Y>4q<@~{;MmCtKf(Olxaf+5m@t&jtPrXxG z6r{EiL?GuhCMGBtB}(U>aY^bmC1JQAkQa(W43^}a=9wS~S0In5%>Wr0BX7%&hJXU& zoxZ-b02cYOrw6&s0vxIj0QL3nObBv2Q5OIhA9LRtU8XyfdI);KmwWp z#GLNw^rFBwoCfF9B=w=7ZFL+5)5*c-tqW1zbQ_Ftx%^EG9fcntIXL6Eq$`L4Cj@5$ z)`9a_aRB4CDWncp7#2XsILA@VAt1pV;~aDp@7x3df`S0xw=aqjNJDlj_nLqctl$ev;lM?Jy(X}A z%Y(#T9=w>fhQDLDlni;@6J^>9lpEq=;~dQsd$nOp7ez0`@?k0AXJhYwgMS)45Ao~4 z5%}xC(@LtYA=NaitP8C!=NV`wP;d@8S05{`8A%4da}h#RDm2e#m1x(6(>jf(JdSH6 zuEwc`*T7TL9cXB2_7Ebm#!XGaz)p1E$k>DCS8Fba4Bj_9OSbQcpcBBJ6~}jPSCz)@Nfnx*&(*Xa0?Ki0odk?`2iL6 zovxu{KA(SQ4A%EH?{9N&JVDZEoMGc-Y=%}G5PKTZGjX(|x-*m$__jU;{i#1?y<_%o z@hlqegeSjW1nM_xG<{Cm`b4ixykn;a=z8Y7+cVHjHVjw}gWMjp_CWUxa#e;n?rK`pYj6z1 z=G*PfF}5Zhvcm*>_Mzw?WhwJ9&OqQ$wL=woTm#1)`ck{uAt>pog{yop_;;-M_fPn# zs(2eopTzoXVmluYNnnQVG~@;IF_VDJf^t`J!4xtYA!E=W1ta#(uQ zJ@hrQxYh?@11AHKnq04NQnRrH?&^f162OcgKX{YC{OLtqjkEAy{tBt_{l91*+q>dN zjx_ye%+WjrsN8r9!i1bGP-*JF+H!(8{qCbBz$_0U*=y)B`f-I9BzU;FxmB_|f7u)1 zSol%!O50x4H1GJS{B|MMHFuPiYdtsv{hwij(-1M4$9J6iSEU4%o%cLkT;n-7rg}@X z0#s|LS(`r~zy#%nIPaf&w(R#g6S5gBuoe!nvX>|2f0u#}7#)2%J*u^Fxl*@6MTrCr zZowEIypkSE?Z!d%=k%of$Zajg7^J>)Z)$TRe33^hV6b91>GJmH@uwD_pg(zCpCta% zKO6NQiQXmFd^x0EK9%52CsCHfTG`yX9}&w0hBmsrc!+6Y3>jm#2g}+w5bVQm1xd=Z znn$-ngegHZuGyX8{{Y#m;|8^$jY`AdJm*h%^9{46oea$$&{u7ovMhjL^kA%iyUjI1 z9|uz@Vq+I%Y5vMT6TCya_+M#%c67_{6egRg_%`jHH?}gVGE6O{8|GMZ3WoIOrbt5Cz#qUN_tq4kUrU2KjE$NlMYsPX3;vy7adPv>5eO~aV+8`WQP zg#D^fWc`+YBt7zw{{Y$ck;+l$nO}NNEH&f7X1$uPSySqGD zb8@R5ZTn388PUEwcvHhx_FB8?I=_azLveqnYKs?~vd1-~u*+{U7EnRTFd%|3eNA%z z0B6RvXI2dCrh?OK#v|NJQO@rj z!5=Z&8CdN;z~Nppjh`>f@1cmLICH0~=vMuc{v{`bynmr+z8<+tj|_OS*=(+&QdLs+ zd3>8|rC;G?bqc^^DIw1)1uQd^YVV8mmi2TeJ|DQwvA9O1TF+iOC>? z>7Lb4o%cZ`)|Vq_H5+SrMcvPuj(8D(q#Wn#{{ZTzZ8aCWaktZ6!s6!U2(FqkU(30S zJW|Hdlz5mP9a$Nbf$A91HF(*MGPIP}L*j4R3*iop@Y}|^zrrZQw;mh2($%!VJj~Kh zrC)jKkhAA;Xj&O9*|U;iEKki`Dh@GmlfBPookvnCsy}hR;FdqM#2Ocsj~D6^s-xd(np~e{mhqK%Lvo1~$Wix1_ydah%tRF`&M9bnn0lVppE2|} z`CEFN2Iwm{p}00w7tT(4RFsYf_L2An;Xm46;a%Ut{{R$gT9%aZT)}yz>iR=3onv_f zf>>qR-z7~K1)0OzK2zp`VmP=E1=X`+>rb#@RE(O!FHey0MsNu&Z_JjNSEOEgxHzV z8^U|%Qfz)i8cL+la-s74CGd|4C8f)paz5VU{{TV7HCCezL^VDQ_zE&-T^dl?>;0i7 ze^W)>^#v3?{t@^gvcF@!1HRow{{XE-nr}j!BFQ88PvDTaNH2h2O+3J5IhpW>?GgJx_{;W~@ja%828XD}roN)EctgOEFgG{XS@|TLLBrfI z%LON7DUwLTIr<7Tso>%7Z`|;z)vJn?mdDe-vR~|_55R3Wc+H7yP=#(pzPv?b{DH2gi|O&i2d_DE7&Ym$CgCdM2NyI34C_Bd_{#sM@m zknY*Bl1A+HKD}x$scJUVOddkx>xy=`HX^E#jPsfW&=hCp&(u%=LGDjX&;WN6l5s!? zhdhx$A>a_ffjxQ(0qDrNRwYQt%>n>MNXhHzKn}^^f!nd5Yzn5_0m(T$&>yBNUaW`Gq`5;r$&;(!wchTNP3(ts2a>>Ki+0PRza{rVbr9fb&4a!CB> zyRgzj8dQZ$lE{jHa_-mz>Q5Ae(j&Fj^b7fZ$z!V9T-+0nDjC(7{Qxx8iCPkw6_l0i zan_q?C4Img3W3mmjFh1`UO$1+CV#Yj=a(@FK}cvq=~t9ADucl;Ch-|+MHgYYbVIrw>e;G&{y z8YS6Ld86DAa|OZzaB>@Kf>J;?BQQBXJzj+H^(=i38oV(S?sa8&z&%gpQFNoJrJO`^ zj54c?o}#BmupnMKl6|v7(5niie(4ydtkEK|MHyqs?TS*+V{iza3?A{d;w*jHOOV#e|e+9#^sOr|o0=FzcVQ zhN%~gJTryQPD8RYnpSmc0z;PJC zUO1uauv@90;yqpu4QN;XCYb{bCdzyFUsZ-Do1gplR~2`uGkR!$F#a8u^T(eK^aynu z*P8dm&X;?^j{O2>k=Z&M;!B!<~qWXyt7lzgbz2OC&(!5!-CkXkES zkz8sJhTQ~)FwMJZIV0CUjz21$QVY&ju`?T(ypelvJW*uJ1GJb|gK5u2umc08w;eETv7%1#Ccpry%9{Lc4ew<&w6=u2|% zapqn^5^`kn_8@G=Mmp!FeQKpUK2aqrb0dTOsl=9_vk$~L9yKg<2qrr|Vs_m|PvcnP zV3iBn=T;My*H=7W_8Gaim*Y;kaSgkt{86`|OO2&SyR_oCQ)&@u^*gJ^*OiZ|o+&4t zt=`=v^4Us*E*Np>J-?lLYDp&Tsp4`uw4znGmeLR{CvYti(&PH-^^r)v+ zQHx4DnpL3=Zfl}#7B3@Mv(+@aVulOYST|GD43a-0Iq6zDl`4C)S_x9KjNtY@BJj!zoH6q3EjM3US}Y#_5)9LPeE!OnVeI`rvNYwlXQ*wD4` z?}{!F{?DLGC`H_;K#{YaI2`oJ$EIm1r7J|W7XBnwxt4hD8BEI@(6a}QM8O9fsmb8_ zXPRVMUC1J0ZE&j0xfneHob!?C#SJxa*`GcB+}0Lm=fXZ9wm6?=r(tr6gl$DOmoWl+ z;ib68{dI3z& z=EtBfVh`6f;$|22s{5Yq26s(%KT2RQ<&~R|dS{bdHb;A7{!_s{2Wnf6_7mj*s;LLo zj!?L)PUG^7cJ>sS8epneoD6ZvG+RQhnDR14NIj`5lF}LF$X9StfO^x|cDfLfy$A&Q ziUQ1TS(IS(@0u(tHam6~YN!W{6WWe#Y$-(WuiBgTxR>FssVBl;hL;2W5;JOM)^&71 z<3fV~-~*LwhEtFa%MzXKlZ8H>3kB^Lw4TSCi^eKz*~fFqe`F8YKT`OkZr>38Em+BC00RJVUNd)RvaM?%#?yg=>F-e4R%|+C41cx7A=<#?6Syk+3Z(QTO{b;? zF~Ag<3xedU5D(UpPUE_;94uuw4%q~C=BU995`>)X6l9V>0Fo)f z5}f%_6(<-$&PT%^A3tdgYxb4#RhFBf+FuPkYJNwAJRp#6p5lBEmoi2pn}vOny!p91uk@o$WzhU>+;tN||NMOh=#p(Fl0 z;B%5mI5Nl&?-^7Nl@`3rW+CDolhE|=cv#`#d2V|dVh9b!1`Ti?g}^ef;EqSc|)EaALy<7;h5zJU$jlWCvy$$>w;!QlrSu7B^WdUX=z zMC^;+2JlQ)tezm(VlOZutu3Wo1s$2!*SH6#Q_n>1!7Ck8ySd*ao0+*Jo=NXUg6!rPA>!H~J{m~?Z_34^5WOA0rIlk*;aW;mvYuJ2_+?LWyB%ak(;q)RV?YJ@7kIO6Z9;ndtD&E?|!3Kn7S< z$;LS#8qF)69L~egE=XWO&r?#<=n1Z(HqhSW_w7$q404`ESmgH4N&~2wA9!T*gW7=& zJ=oxqI%B0U5V7Bqar#mL=mvgc#(3tK3}AD}9eDMT`LO&OY-T`rw@Q0DIN) z*%?i@D5s;jBQKsUYH6><9T0WW^$wZ9R6qMQD>PDYVz0$-52+y7Y9#j_N^$=H zkJTW2qMwSM9NVAl%|Lx&PyQ;CL~|s>9~86=!)~9bWFCSP{{Z5tB*U64cl<3K3}u&0 z)R^{BZom9h514m|qvD>32hXQo*s597@=sGR<^+?y5K z5&kN8Y@EK6s75jaF^vuedXNulhP4Fyoe+`X)$MGs=!Q04)M0f#(s zNrs3=#z0|!JLZj$D=`#)SIofdv+}9KkTa$id3Uza)!>Qft7kLRfh4;>`OQ^@r%ULkF>|(eK}!# znEcm}wmWAB8LH(cm~Z?ozY!P9Xu5L$0J7#3 z@kOHuZ44KX^F66;*c~^i{v{{A0SAMMnIxFv?rF-TaKo)DvYJBxL&L8Fp%k5%m%1}m z(=`2aOS#asy*A$V#`e{%?`&@%St7WJ!3`U!$YmpfD&r}_S3;CyQCaMK1^Y>U&6Y#%jdq;8WVg`aaWKTwaeJN~ zE{#exIic{MO#aEAwY87OJ2?CU3J#u8DH=E2oT+_^)M z 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