chore: bulk commit of local changes across blog writer, SEO dashboard, scheduler, docs-site, and frontend
This commit is contained in:
@@ -75,12 +75,16 @@ flowchart TD
|
||||
**Request Body:**
|
||||
|
||||
| Field | Type | Required | Description |
|
||||
|---|---|---|---|
|
||||
|---|---|---|---|---|
|
||||
| `name` | string | Yes | Campaign name. |
|
||||
| `description` | string | No | Campaign description. |
|
||||
| `keywords` | string[] | No | Target keywords for discovery. |
|
||||
|
||||
**Response:** `201 Created` — Campaign object.
|
||||
**Error responses:**
|
||||
|
||||
| Code | Meaning |
|
||||
|---|---|
|
||||
| `422` | Validation error (e.g., empty name). |
|
||||
|
||||
### List Campaigns
|
||||
|
||||
@@ -92,7 +96,7 @@ flowchart TD
|
||||
|---|---|---|---|
|
||||
| `workspace_id` | string | user_id | Workspace to filter by. Defaults to authenticated user. |
|
||||
|
||||
**Response:** `200 OK` — Array of campaign objects.
|
||||
**Response:** `200 OK` — Array of campaign objects scoped to the authenticated user.
|
||||
|
||||
### Get Campaign
|
||||
|
||||
@@ -100,12 +104,24 @@ flowchart TD
|
||||
|
||||
**Response:** `200 OK` — Campaign object with included leads.
|
||||
|
||||
**Error responses:**
|
||||
|
||||
| Code | Meaning |
|
||||
|---|---|
|
||||
| `404` | Campaign not found or does not belong to authenticated user (`BacklinkCampaignNotFoundError`). |
|
||||
|
||||
### Delete Campaign
|
||||
|
||||
`DELETE /api/v1/backlink-outreach/campaigns/{campaign_id}`
|
||||
|
||||
**Response:** `204 No Content`
|
||||
|
||||
**Error responses:**
|
||||
|
||||
| Code | Meaning |
|
||||
|---|---|
|
||||
| `404` | Campaign not found or does not belong to authenticated user. |
|
||||
|
||||
---
|
||||
|
||||
## Leads
|
||||
@@ -117,7 +133,7 @@ flowchart TD
|
||||
**Request Body:**
|
||||
|
||||
| Field | Type | Required | Description |
|
||||
|---|---|---|---|
|
||||
|---|---|---|---|---|
|
||||
| `website_url` | string | Yes | Target website URL. |
|
||||
| `website_title` | string | No | Website title. |
|
||||
| `contact_email` | string | No | Contact email address. |
|
||||
@@ -126,7 +142,14 @@ flowchart TD
|
||||
| `guest_post_likelihood` | float | No | Guest post likelihood (0-1). |
|
||||
| `source` | string | No | Source of the lead. |
|
||||
|
||||
**Response:** `201 Created` — Lead object.
|
||||
!!! tip "Duplicate handling"
|
||||
If a lead with the same `website_url` already exists in the campaign, the existing lead record is returned (HTTP 200) instead of creating a duplicate.
|
||||
|
||||
**Error responses:**
|
||||
|
||||
| Code | Meaning |
|
||||
|---|---|
|
||||
| `404` | Campaign not found or not owned by user. |
|
||||
|
||||
### Bulk Add Leads
|
||||
|
||||
@@ -138,8 +161,8 @@ flowchart TD
|
||||
|
||||
| Field | Type | Description |
|
||||
|---|---|---|
|
||||
| `added` | int | Number of leads successfully added. |
|
||||
| `skipped` | int | Number of duplicates skipped. |
|
||||
| `added` | int | Number of leads successfully added (duplicates excluded). |
|
||||
| `skipped` | int | Number of existing leads skipped (matched by `(campaign_id, website_url)`). |
|
||||
| `failed` | string[] | List of failed entries with reasons. |
|
||||
|
||||
### Update Lead Status
|
||||
@@ -149,10 +172,15 @@ flowchart TD
|
||||
**Request Body:**
|
||||
|
||||
| Field | Type | Required | Description |
|
||||
|---|---|---|---|
|
||||
| `status` | string | Yes | New status: discovered, contacted, replied, placed, bounced, lost. |
|
||||
|---|---|---|---|---|
|
||||
| `status` | string | Yes | New status: `discovered`, `contacted`, `replied`, `placed`, `bounced`, `unsubscribed`. |
|
||||
|
||||
**Response:** `200 OK` — Updated lead object.
|
||||
**Error responses:**
|
||||
|
||||
| Code | Meaning |
|
||||
|---|---|
|
||||
| `422` | Invalid status value (must be one of the valid statuses). |
|
||||
| `404` | Lead not found. |
|
||||
|
||||
### Bulk Update Status
|
||||
|
||||
@@ -163,7 +191,7 @@ flowchart TD
|
||||
| Field | Type | Required | Description |
|
||||
|---|---|---|---|
|
||||
| `lead_ids` | string[] | Yes | Lead IDs to update. |
|
||||
| `status` | string | Yes | New status for all leads. |
|
||||
| `status` | string | Yes | New status: `discovered`, `contacted`, `replied`, `placed`, `bounced`, `unsubscribed`. |
|
||||
|
||||
**Response:** `200 OK`
|
||||
|
||||
@@ -441,9 +469,10 @@ flowchart TD
|
||||
## Common Error Responses
|
||||
|
||||
| Status | Meaning | Body |
|
||||
|---|---|---|
|
||||
|---|---|---|---|
|
||||
| `401` | Not authenticated | `{"detail": "Not authenticated"}` |
|
||||
| `403` | Policy blocked | `{"detail": "Policy validation failed", "reason": "..."}` |
|
||||
| `404` | Not found | `{"detail": "Resource not found"}` |
|
||||
| `404` | Campaign or lead not found | `{"detail": "BacklinkCampaignNotFoundError: Campaign not found or access denied"}` |
|
||||
| `409` | Duplicate lead (idempotency key collision) | `{"detail": "Duplicate attempt detected"}` |
|
||||
| `422` | Validation error | `{"detail": [...validation errors]}` |
|
||||
| `500` | Server error | `{"detail": "An internal error occurred"}` (generic, no stack trace) |
|
||||
|
||||
@@ -21,6 +21,9 @@ A campaign requires only a name. Add a description and keywords to make discover
|
||||
!!! tip "Naming conventions"
|
||||
Use a consistent naming scheme like `[Vertical] [Content Type] [Period]` — e.g., "Fitness Guest Posts June" or "AI Startups Roundup Q3".
|
||||
|
||||
!!! warning "Ownership validation"
|
||||
Campaigns are scoped to the authenticated user. API calls with a `campaign_id` that does not exist or belongs to another user return `404 BacklinkCampaignNotFoundError`. This applies to all campaign operations (get, delete, add leads, send emails, etc.).
|
||||
|
||||
## Campaign List View
|
||||
|
||||
The campaign list shows:
|
||||
|
||||
@@ -68,6 +68,20 @@ The Backlink Outreach feature uses SQLite with automatic table creation:
|
||||
|
||||
Tables are created automatically on first use via `_ensure_tables()`. No manual migration is required.
|
||||
|
||||
## Feature Flag Configuration
|
||||
|
||||
The Backlink Outreach feature can be enabled in isolation via the `ALWRITY_ENABLED_FEATURES` environment variable:
|
||||
|
||||
| Variable | Value | Description |
|
||||
|---|---|---|
|
||||
| `ALWRITY_ENABLED_FEATURES` | `all` (default) | Enable all platform features. |
|
||||
| `ALWRITY_ENABLED_FEATURES` | `backlinking` | Enable only Backlink Outreach + core services. |
|
||||
|
||||
When set to `backlinking`, only the backlink outreach router and its core dependencies are loaded. Other features (blog writer, podcast, SEO dashboard, etc.) are skipped — reducing startup time and memory usage.
|
||||
|
||||
!!! note "Multiple features"
|
||||
You can also enable a combination: `ALWRITY_ENABLED_FEATURES=core,backlinking` or `ALWRITY_ENABLED_FEATURES=podcast,backlinking`.
|
||||
|
||||
## Deployment Checklist
|
||||
|
||||
### Minimal Setup
|
||||
|
||||
@@ -54,13 +54,15 @@ backend/
|
||||
├── routers/
|
||||
│ └── backlink_outreach.py # 18+ API endpoints
|
||||
├── services/
|
||||
│ ├── backlink_outreach_service.py # Business logic, policy, analytics
|
||||
│ ├── backlink_outreach_storage.py # SQLite CRUD operations
|
||||
│ ├── backlink_outreach_sender.py # SMTP email delivery
|
||||
│ ├── backlink_outreach_reply_monitor.py # IMAP reply polling
|
||||
│ └── backlink_outreach_models.py # Pydantic request/response models
|
||||
│ ├── backlink_outreach_service.py # Business logic, policy, analytics
|
||||
│ ├── backlink_outreach_storage.py # SQLite CRUD operations
|
||||
│ ├── backlink_outreach_sender.py # SMTP email delivery with Message-ID
|
||||
│ ├── backlink_outreach_reply_monitor.py # IMAP reply polling with Message-ID matching
|
||||
│ ├── backlink_outreach_scraper.py # Deep website scraper (Exa + DuckDuckGo)
|
||||
│ ├── backlink_outreach_template_generator.py # LLM-based email copy generation
|
||||
│ └── backlink_outreach_models.py # Pydantic request/response models
|
||||
├── models/
|
||||
│ └── backlink_outreach_models.py # SQLAlchemy models + indexes
|
||||
│ └── backlink_outreach_models.py # SQLAlchemy models + indexes
|
||||
|
||||
frontend/src/
|
||||
├── components/
|
||||
@@ -109,6 +111,7 @@ erDiagram
|
||||
string body
|
||||
string status
|
||||
string legal_basis
|
||||
string message_id
|
||||
datetime sent_at
|
||||
}
|
||||
OutreachReply {
|
||||
@@ -217,10 +220,10 @@ SQLite CRUD operations with 20+ methods:
|
||||
- Campaign CRUD: `create_campaign`, `list_backlink_campaigns`, `get_campaign`, `delete_campaign`.
|
||||
- Lead management: `add_campaign_lead`, `add_campaign_leads_bulk`, `update_lead_status`, `bulk_update_lead_status`.
|
||||
- Outreach: `create_outreach_attempt`, `list_outreach_attempts`, `get_lead_attempts`.
|
||||
- Replies: `store_reply`, `find_attempt_by_from_email`, `reply_exists`, `list_replies`, `count_replies`.
|
||||
- Replies: `store_reply`, `find_attempt_by_from_email`, `find_attempt_by_message_id`, `reply_exists`, `list_replies`, `count_replies`.
|
||||
- Follow-ups: `create_follow_up`, `list_follow_ups`.
|
||||
- Suppression: `add_suppression`, `list_suppression`, `is_suppressed`.
|
||||
- Counters: `increment_user_counter`, `increment_domain_counter` (atomic ON CONFLICT).
|
||||
- Counters: `try_increment_user_send_counter`, `try_increment_domain_send_counter` (atomic ON CONFLICT — reserves cap slot before send).
|
||||
- Idempotency: `check_idempotency`, `mark_idempotency`.
|
||||
- Audit: `log_audit_entry`.
|
||||
- Templates: `create_email_template`, `list_email_templates`, `get_email_template`, `delete_email_template`.
|
||||
@@ -249,7 +252,7 @@ Handles IMAP reply processing:
|
||||
3. Searches for messages matching the outreach sender.
|
||||
4. Fetches up to `IMAP_FETCH_LIMIT` messages.
|
||||
5. Checks for duplicates via `reply_exists()`.
|
||||
6. Matches replies to attempts via `find_attempt_by_from_email()`.
|
||||
6. Matches replies to attempts via `find_attempt_by_message_id()` (primary, using `In-Reply-To`/`References` headers), falls back to `find_attempt_by_from_email()`.
|
||||
7. Classifies replies based on content analysis.
|
||||
8. Stores reply records.
|
||||
|
||||
|
||||
@@ -12,15 +12,16 @@ flowchart TD
|
||||
B --> C[Resolve Lead Email from DB]
|
||||
C --> D[Policy Validation]
|
||||
D -->|Approved| E[Create Outreach Attempt Record]
|
||||
D -->|Blocked| F[Record Audit Log + Return 403]
|
||||
E --> G[Send via SMTP with TLS]
|
||||
G -->|Success| H[Increment Counters]
|
||||
G -->|Success| I[Mark Idempotency Key]
|
||||
G -->|Success| J[Update Lead Status to Contacted]
|
||||
G -->|Failure| K[Return 500 with Generic Error]
|
||||
H --> L[Return 200 with Attempt Details]
|
||||
I --> L
|
||||
J --> L
|
||||
D -->|Blocked| F[Record Audit Log + Return 403]
|
||||
E --> G[Reserve Daily Cap Slots Atomically]
|
||||
G --> H[Send via SMTP with TLS + Message-ID]
|
||||
H -->|Success| I[Store Message-ID on Attempt Record]
|
||||
H -->|Success| J[Mark Idempotency Key]
|
||||
H -->|Success| K[Update Lead Status to Contacted]
|
||||
H -->|Failure| L[Return 500 with Generic Error]
|
||||
I --> M[Return 200 with Attempt Details]
|
||||
J --> M
|
||||
K --> M
|
||||
|
||||
style D fill:#fff3e0
|
||||
style G fill:#e3f2fd
|
||||
@@ -28,7 +29,7 @@ flowchart TD
|
||||
```
|
||||
|
||||
!!! warning "Counter timing"
|
||||
Counters and idempotency keys are marked **only after successful SMTP delivery**, never before. This prevents false cap consumption on failed sends.
|
||||
Daily cap slots are **reserved atomically before sending** via `try_increment_user_send_counter` and `try_increment_domain_send_counter`. If SMTP delivery fails, one slot is consumed (the cap check and increment happen in the same transaction). Idempotency keys are marked only after successful delivery.
|
||||
|
||||
## Policy Validation
|
||||
|
||||
@@ -40,6 +41,7 @@ Before every send, the system validates:
|
||||
| **Daily domain cap** | Max 20 emails/domain/day | Block + audit |
|
||||
| **Suppression list** | Recipient not suppressed | Block + audit |
|
||||
| **Idempotency** | No duplicate `(sender, recipient, subject)` in 24h | Block + audit |
|
||||
| **Sender alias** | `sender_email` must match `SMTP_ALLOWED_FROM_EMAILS` pattern | Block + fallback to `SMTP_FROM_EMAIL` |
|
||||
| **Legal basis** | EU domains → "consent", others → "legitimate_interest" | Auto-assign |
|
||||
|
||||
**API:** `POST /api/v1/backlink-outreach/policy/validate`
|
||||
|
||||
@@ -1,3 +1,7 @@
|
||||
---
|
||||
description: ALwrity Backlink Outreach - AI-powered backlink discovery, outreach automation, and campaign management.
|
||||
---
|
||||
|
||||
# Backlink Outreach Overview
|
||||
|
||||
Backlink Outreach is an AI-powered guest post outreach platform that takes you from opportunity discovery to published backlink — with smart email composition, policy-safe sending, IMAP reply monitoring, and full campaign analytics.
|
||||
|
||||
@@ -44,15 +44,18 @@ The reply monitor:
|
||||
3. Searches for messages sent to your outreach address.
|
||||
4. Fetches up to `IMAP_FETCH_LIMIT` recent messages.
|
||||
5. For each message, checks if it's already been processed (deduplication).
|
||||
6. Matches the reply to an existing outreach attempt by sender email.
|
||||
6. Matches the reply to an existing outreach attempt (Message-ID first, sender email fallback).
|
||||
7. Classifies the reply and stores it.
|
||||
|
||||
### Reply Matching
|
||||
|
||||
Replies are matched to outreach attempts using the `from_email` field:
|
||||
Replies are matched to outreach attempts using a two-stage strategy:
|
||||
|
||||
- The system looks up `find_attempt_by_from_email(from_email)` to find the most recent outreach attempt sent to that email address.
|
||||
- If no match is found, the reply is still stored but not linked to an attempt.
|
||||
1. **Message-ID matching (primary)**: Each sent email includes a unique `Message-ID` header. When the recipient replies, their email client includes the original `Message-ID` in `In-Reply-To` and `References` headers. The system extracts these and looks up `find_attempt_by_message_id(in_reply_to)` to find the exact outreach attempt.
|
||||
|
||||
2. **Sender email fallback**: If no Message-ID match is found (e.g., the reply client stripped headers), the system falls back to `find_attempt_by_from_email(from_email)` to find the most recent attempt sent to that address.
|
||||
|
||||
3. **Unmatched replies**: If neither strategy produces a match, the reply is still stored but not linked to an attempt.
|
||||
|
||||
### Deduplication
|
||||
|
||||
|
||||
@@ -1,3 +1,7 @@
|
||||
---
|
||||
description: ALwrity Blog Writer - AI-powered blog post creation with SEO optimization, research integration, and multi-platform publishing.
|
||||
---
|
||||
|
||||
# Blog Writer Overview
|
||||
|
||||
The ALwrity Blog Writer is a powerful AI-driven content creation tool that helps you generate high-quality, SEO-optimized blog posts with minimal effort. It's designed for users with medium to low technical knowledge, making professional content creation accessible to everyone.
|
||||
|
||||
@@ -1,3 +1,7 @@
|
||||
---
|
||||
description: ALwrity Content Strategy - AI-powered strategic planning, persona development, and content calendar generation.
|
||||
---
|
||||
|
||||
# Content Strategy Overview
|
||||
|
||||
ALwrity's Content Strategy module is the brain of your content marketing efforts, providing AI-powered strategic planning, persona development, and content calendar generation to help you create a comprehensive, data-driven content marketing strategy.
|
||||
@@ -323,6 +327,13 @@ ALwrity generates comprehensive content calendars that align with your strategy:
|
||||
- **Strategy Updates**: Automatic strategy refinement
|
||||
- **Report Generation**: Automated performance reports
|
||||
|
||||
## Related Features
|
||||
|
||||
- **[Persona System](../persona/overview.md)** — Build audience personas for targeted content
|
||||
- **[Blog Writer](../blog-writer/overview.md)** — Create content aligned with your strategy
|
||||
- **[SEO Dashboard](../seo-dashboard/overview.md)** — Discover content gaps and opportunities
|
||||
- **[Backlink Outreach](../backlink-outreach/overview.md)** — Support strategy with link-building
|
||||
|
||||
---
|
||||
|
||||
*Ready to develop your content strategy? [Start with our First Steps Guide](../../getting-started/first-steps.md) or [Explore Persona Development](personas.md) to begin building your strategic content plan!*
|
||||
|
||||
@@ -14,7 +14,7 @@ All endpoints require authentication via Bearer token:
|
||||
Authorization: Bearer YOUR_ACCESS_TOKEN
|
||||
```
|
||||
|
||||
The token is obtained through the standard ALwrity authentication flow. See [Authentication Guide](../api/authentication.md) for details.
|
||||
The token is obtained through the standard ALwrity authentication flow. See [Authentication Guide](../../api/authentication.md) for details.
|
||||
|
||||
## API Architecture
|
||||
|
||||
@@ -827,7 +827,7 @@ Image Studio API follows standard ALwrity rate limiting:
|
||||
- **Headers**: Rate limit information in response headers
|
||||
- **Retry**: Use exponential backoff for rate limit errors
|
||||
|
||||
See [Rate Limiting Guide](../api/rate-limiting.md) for details.
|
||||
See [Rate Limiting Guide](../../api/rate-limiting.md) for details.
|
||||
|
||||
---
|
||||
|
||||
@@ -936,5 +936,5 @@ curl -X POST https://api.alwrity.com/api/image-studio/create \
|
||||
|
||||
---
|
||||
|
||||
*For authentication details, see the [API Authentication Guide](../api/authentication.md). For rate limiting, see the [Rate Limiting Guide](../api/rate-limiting.md).*
|
||||
*For authentication details, see the [API Authentication Guide](../../api/authentication.md). For rate limiting, see the [Rate Limiting Guide](../../api/rate-limiting.md).*
|
||||
|
||||
|
||||
@@ -1,3 +1,7 @@
|
||||
---
|
||||
description: ALwrity Image Studio modules - Create, Edit, Upscale, Optimize, and manage image assets.
|
||||
---
|
||||
|
||||
# Image Studio Modules
|
||||
|
||||
Image Studio consists of 7 core modules that provide a complete image workflow from creation to optimization. This guide provides detailed information about each module, their features, and current implementation status.
|
||||
|
||||
@@ -1,3 +1,7 @@
|
||||
---
|
||||
description: ALwrity Image Studio - AI-powered image creation, editing, and optimization for digital marketers and content creators.
|
||||
---
|
||||
|
||||
# Image Studio Overview
|
||||
|
||||
The ALwrity Image Studio is a comprehensive AI-powered image creation, editing, and optimization platform designed specifically for digital marketers and content creators. It provides a unified hub for all image-related operations, from generation to social media optimization, making professional visual content creation accessible to everyone.
|
||||
|
||||
@@ -1,3 +1,7 @@
|
||||
---
|
||||
description: ALwrity LinkedIn Writer - AI-powered professional LinkedIn content creation for brand building.
|
||||
---
|
||||
|
||||
# LinkedIn Writer: Overview
|
||||
|
||||
The ALwrity LinkedIn Writer is a specialized AI-powered tool designed to help you create professional, engaging LinkedIn content that builds your personal brand, drives engagement, and establishes thought leadership in your industry.
|
||||
|
||||
@@ -1,3 +1,7 @@
|
||||
---
|
||||
description: ALwrity Persona System - AI-powered personalized writing assistants tailored to your brand voice.
|
||||
---
|
||||
|
||||
# Persona System Overview
|
||||
|
||||
The ALwrity Persona System is a revolutionary AI-powered feature that creates personalized writing assistants tailored specifically to your voice, style, and communication preferences. It analyzes your writing patterns and creates platform-specific optimizations for LinkedIn, Facebook, and other social media platforms.
|
||||
@@ -267,6 +271,13 @@ The ALwrity Persona System transforms your content creation experience by provid
|
||||
|
||||
Remember: Your persona is a powerful tool that learns and improves over time. The more you use it, the better it becomes at understanding your style and helping you create exceptional content.
|
||||
|
||||
## Related Features
|
||||
|
||||
- **[Content Strategy](../content-strategy/overview.md)** — Align personas with content strategy
|
||||
- **[Blog Writer](../blog-writer/overview.md)** — Write blog posts in your persona's voice
|
||||
- **[LinkedIn Writer](../linkedin-writer/overview.md)** — Create LinkedIn content with brand voice
|
||||
- **[SIF & AI Agents](../sif-agents/overview.md)** — AI agents that adapt to your persona
|
||||
|
||||
---
|
||||
|
||||
*Ready to create your personalized writing persona? [Start with our First Steps Guide](../../getting-started/first-steps.md) and [Explore Platform-Specific Features](platform-integration.md) to begin your personalized content creation journey!*
|
||||
|
||||
@@ -1,3 +1,7 @@
|
||||
---
|
||||
description: ALwrity Podcast Maker - AI-powered podcast creation, editing, and publishing platform.
|
||||
---
|
||||
|
||||
# Podcast Maker Overview
|
||||
|
||||
Podcast Maker helps you turn a topic idea into a polished episode draft with research, script generation, AI voice narration, and optional video scenes.
|
||||
@@ -47,6 +51,13 @@ Most users can ignore this section.
|
||||
- The frontend normalizes snake_case API responses into camelCase for UI components where needed.
|
||||
- Long-running video operations are task-based and polled from the client.
|
||||
|
||||
## Related Features
|
||||
|
||||
- **[Workflow Guide](workflow-guide.md)** — Step-by-step podcast creation
|
||||
- **[YouTube Publishing](youtube-publishing.md)** — Upload podcasts to YouTube
|
||||
- **[Blog Writer](../blog-writer/overview.md)** — Repurpose podcast scripts into blog posts
|
||||
- **[Image Studio](../image-studio/overview.md)** — Create podcast cover art
|
||||
|
||||
## Engineering references
|
||||
|
||||
These are internal planning/reference docs retained as source material:
|
||||
|
||||
@@ -424,4 +424,4 @@ Score opportunities by:
|
||||
|
||||
---
|
||||
|
||||
**Ready to analyze your competition? Start with [Competitive Analysis Tool](../tools-reference.md) or ask the [AI Copilot](ai-copilot.md) for guidance!**
|
||||
**Ready to analyze your competition? Start with the [SEO Dashboard Tools Reference](tools-reference.md) or ask the [AI Copilot](ai-copilot.md) for guidance!**
|
||||
|
||||
@@ -129,9 +129,9 @@ Deep technical reference:
|
||||
|
||||
**Recommended Reading Order**:
|
||||
1. [Quick Start Guide](quick-start.md) - 10 min
|
||||
2. [Meta Description Generator](individual-tools-guide.md#1--meta-description-generator) - 5 min
|
||||
3. [On-Page SEO Analyzer](individual-tools-guide.md#6--on-page-seo-analyzer) - 10 min
|
||||
4. [Content Strategy Analyzer](individual-tools-guide.md#9--content-strategy-analyzer) - 10 min
|
||||
2. [Meta Description Generator](individual-tools-guide.md#1-meta-description-generator) - 5 min
|
||||
3. [On-Page SEO Analyzer](individual-tools-guide.md#6-on-page-seo-analyzer) - 10 min
|
||||
4. [Content Strategy Analyzer](individual-tools-guide.md#9-content-strategy-analyzer) - 10 min
|
||||
5. [LLM Insights Generation](phase2a-llm-insights.md) - Get AI content strategy - 10 min
|
||||
6. [Content Creation Workflow](workflows-guide.md#workflow-1-content-creation-pipeline) - 5 min
|
||||
|
||||
@@ -210,8 +210,8 @@ Deep technical reference:
|
||||
|
||||
**Recommended Reading Order**:
|
||||
1. [Quick Start Guide](quick-start.md) - 10 min
|
||||
2. [Technical SEO Analyzer](individual-tools-guide.md#7--technical-seo-analyzer) - 15 min
|
||||
3. [PageSpeed Analyzer](individual-tools-guide.md#2--pagespeed-analyzer) - 15 min
|
||||
2. [Technical SEO Analyzer](individual-tools-guide.md#7-technical-seo-analyzer) - 15 min
|
||||
3. [PageSpeed Analyzer](individual-tools-guide.md#2-pagespeed-analyzer) - 15 min
|
||||
4. [Design Document](design-document.md) - 20 min
|
||||
|
||||
**Total Learning Time**: 1 hour
|
||||
@@ -267,15 +267,15 @@ Deep technical reference:
|
||||
|
||||
| Goal | Tool | Guide |
|
||||
|------|------|-------|
|
||||
| Quick content optimization | On-Page SEO Analyzer | [Link](individual-tools-guide.md#6--on-page-seo-analyzer) |
|
||||
| Improve search appearance | Meta Description Generator | [Link](individual-tools-guide.md#1--meta-description-generator) |
|
||||
| Social media optimization | OpenGraph Generator | [Link](individual-tools-guide.md#5--opengraph-generator) |
|
||||
| Find new content ideas | Content Strategy Analyzer | [Link](individual-tools-guide.md#9--content-strategy-analyzer) |
|
||||
| Fix website speed | PageSpeed Analyzer | [Link](individual-tools-guide.md#2--pagespeed-analyzer) |
|
||||
| Find technical issues | Technical SEO Analyzer | [Link](individual-tools-guide.md#7--technical-seo-analyzer) |
|
||||
| Understand your site | Sitemap Analyzer | [Link](individual-tools-guide.md#3--sitemap-analyzer) |
|
||||
| Optimize images | Image Alt Text Generator | [Link](individual-tools-guide.md#4--image-alt-text-generator) |
|
||||
| Complete audit | Enterprise SEO Suite | [Link](individual-tools-guide.md#8--enterprise-seo-suite) |
|
||||
| Quick content optimization | On-Page SEO Analyzer | [Link](individual-tools-guide.md#6-on-page-seo-analyzer) |
|
||||
| Improve search appearance | Meta Description Generator | [Link](individual-tools-guide.md#1-meta-description-generator) |
|
||||
| Social media optimization | OpenGraph Generator | [Link](individual-tools-guide.md#5-opengraph-generator) |
|
||||
| Find new content ideas | Content Strategy Analyzer | [Link](individual-tools-guide.md#9-content-strategy-analyzer) |
|
||||
| Fix website speed | PageSpeed Analyzer | [Link](individual-tools-guide.md#2-pagespeed-analyzer) |
|
||||
| Find technical issues | Technical SEO Analyzer | [Link](individual-tools-guide.md#7-technical-seo-analyzer) |
|
||||
| Understand your site | Sitemap Analyzer | [Link](individual-tools-guide.md#3-sitemap-analyzer) |
|
||||
| Optimize images | Image Alt Text Generator | [Link](individual-tools-guide.md#4-image-alt-text-generator) |
|
||||
| Complete audit | Enterprise SEO Suite | [Link](individual-tools-guide.md#8-enterprise-seo-suite) |
|
||||
| Beat competitors | Competitive Analysis | [Link](competitive-analysis.md) |
|
||||
| Plan strategy | Content Strategy Guide | [Link](content-strategy-guide.md) |
|
||||
| AI recommendations | AI Copilot | [Link](ai-copilot.md) |
|
||||
|
||||
@@ -1,3 +1,7 @@
|
||||
---
|
||||
description: ALwrity SEO Dashboard - 21+ production-ready SEO tools for content optimization, competitive analysis, and performance tracking.
|
||||
---
|
||||
|
||||
# SEO Dashboard Overview
|
||||
|
||||
The ALwrity SEO Dashboard is a comprehensive, AI-powered platform providing **21+ production-ready SEO tools** for content creators, digital marketers, and SEO professionals. Designed for users of all technical levels, it combines advanced AI analysis with real-time platform integrations for actionable SEO insights.
|
||||
@@ -311,9 +315,9 @@ For detailed information about each tool, see [Tools Reference](tools-reference.
|
||||
|
||||
- **[Blog Writer](../blog-writer/overview.md)** - Content creation with integrated SEO
|
||||
- **[Content Strategy](../content-strategy/overview.md)** - Strategic planning and gaps
|
||||
- **[AI Features](../ai/overview.md)** - Advanced AI capabilities
|
||||
- **[AI Features](../ai/assistive-writing.md)** - Advanced AI capabilities
|
||||
- **[Persona System](../persona/overview.md)** - Personalized writing assistants
|
||||
- **[API Reference](../../api/seo-tools.md)** - Technical integration details
|
||||
- **[API Reference](../../api/overview.md)** - Technical integration details
|
||||
|
||||
---
|
||||
|
||||
|
||||
@@ -266,14 +266,14 @@ User: Insights, Roadmap, Recommendations
|
||||
4. [LLM Insights Generation](phase2a-llm-insights.md)
|
||||
|
||||
### For Integrators
|
||||
1. [API Reference](../api.md)
|
||||
2. [Integration Guide](../guides/integration-guide.md)
|
||||
3. [Code Examples](#)
|
||||
1. [API Reference](../../api/overview.md)
|
||||
2. [Authentication Guide](../../api/authentication.md)
|
||||
3. [Best Practices](../../guides/best-practices.md)
|
||||
|
||||
### For Operators
|
||||
1. [Deployment Guide](../guides/deployment.md)
|
||||
2. [Health Monitoring](../guides/monitoring.md)
|
||||
3. [Troubleshooting](../guides/troubleshooting.md)
|
||||
1. [Deployment Guide](../../getting-started/installation.md)
|
||||
2. [Troubleshooting](../../guides/troubleshooting.md)
|
||||
3. [Performance Guide](../../guides/performance.md)
|
||||
|
||||
---
|
||||
|
||||
@@ -364,9 +364,8 @@ A: All Phase 2A features are available to Premium and Enterprise subscribers.
|
||||
|
||||
## 📞 Support
|
||||
|
||||
- **Documentation**: [Full docs](./index.md)
|
||||
- **API Reference**: [Complete reference](../api.md)
|
||||
- **Examples**: [Code samples](../examples.md)
|
||||
- **Documentation**: [SEO Dashboard Overview](./overview.md)
|
||||
- **API Reference**: [Complete API Reference](../../api/overview.md)
|
||||
- **Help**: Contact support@alwrity.com
|
||||
|
||||
---
|
||||
|
||||
@@ -202,17 +202,17 @@ See next section...
|
||||
- [Metadata Generation Guide](metadata.md)
|
||||
|
||||
### Tool-Specific Guides
|
||||
- [Meta Description Generator](meta-description-tool.md)
|
||||
- [PageSpeed Analyzer Guide](pagespeed-analyzer.md)
|
||||
- [Sitemap Analysis](sitemap-analyzer.md)
|
||||
- [Content Strategy Tool](content-strategy-tool.md)
|
||||
- [Technical SEO Analyzer](technical-seo-tool.md)
|
||||
- [Competitive Analysis](competitive-analysis.md)
|
||||
- Meta Description Generator — see [Workflows & Automation Guide](workflows-guide.md)
|
||||
- PageSpeed Analyzer — see [Workflows & Automation Guide](workflows-guide.md)
|
||||
- Sitemap Analysis — see [Workflows & Automation Guide](workflows-guide.md)
|
||||
- Content Strategy Tool — see [Content Strategy Guide](content-strategy-guide.md)
|
||||
- Technical SEO Analyzer — see [Workflows & Automation Guide](workflows-guide.md)
|
||||
- [Competitive Analysis Guide](competitive-analysis.md)
|
||||
|
||||
### Advanced Guides
|
||||
- [AI Copilot Assistant](ai-copilot.md)
|
||||
- [API Reference](../../api/seo-tools.md)
|
||||
- [Advanced Configuration](advanced-configuration.md)
|
||||
- [API Reference](../../api/overview.md)
|
||||
- Advanced Configuration — see [SEO Dashboard Setup](overview.md)
|
||||
|
||||
---
|
||||
|
||||
@@ -343,10 +343,10 @@ See next section...
|
||||
## 🔗 Related Resources
|
||||
|
||||
- [SEO Dashboard Main Guide](overview.md)
|
||||
- [Complete API Reference](../../api/seo-tools.md)
|
||||
- [Complete API Reference](../../api/overview.md)
|
||||
- [Blog Writer SEO Integration](../blog-writer/overview.md)
|
||||
- [Content Strategy Guide](../content-strategy/overview.md)
|
||||
- [AI Features](../ai/overview.md)
|
||||
- [AI Features](../ai/assistive-writing.md)
|
||||
|
||||
---
|
||||
|
||||
|
||||
@@ -124,7 +124,7 @@ Models covered: `openai/gpt-oss-120b:groq`, `gpt-oss-120b`, and `default` (fallb
|
||||
|
||||
## Additional Resources
|
||||
|
||||
- [Billing Dashboard](billing-dashboard.md)
|
||||
- Billing Dashboard (see [Subscription Overview](overview.md))
|
||||
- [API Reference](api-reference.md)
|
||||
- [Setup Guide](setup.md)
|
||||
- [Gemini Pricing](https://ai.google.dev/gemini-api/docs/pricing)
|
||||
|
||||
Reference in New Issue
Block a user