Files
igny8/docs/10-MODULES/WRITER.md
IGNY8 VPS (Salman) c777e5ccb2 dos updates
2026-01-20 14:45:21 +00:00

9.2 KiB

Writer Module

Last Verified: January 20, 2026
Version: 1.8.4
Status: Active
Backend Path: backend/igny8_core/modules/writer/
Frontend Path: frontend/src/pages/Writer/


Quick Reference

What File Key Items
Models modules/writer/models.py Tasks, Content, Images, ContentTaxonomy
Views modules/writer/views.py TaskViewSet, ContentViewSet, ImageViewSet
AI Functions ai/functions/content.py GenerateContentFunction
AI Functions ai/functions/images.py GenerateImagesFunction, GenerateImagePromptsFunction
Frontend Pages pages/Writer/Tasks.tsx Task management
Frontend Pages pages/Writer/Content.tsx Content listing
Frontend Pages pages/Writer/ContentViewer.tsx Content preview/edit

Purpose

The Writer module manages the content creation pipeline:

ContentIdeas → Tasks → Content → Images → Review → Publish

Data Models

Tasks

Field Type Purpose
account FK Owner account
site FK Parent site
sector FK Parent sector
content_idea FK Source idea (nullable)
title CharField Task/content title
description TextField Task brief
target_keywords JSON Keywords to target
content_type CharField blog_post/guide/comparison/etc.
word_count_target Integer Target word count
status CharField pending/in_progress/completed/cancelled
assigned_to FK Assigned user (nullable)
due_date DateTime Due date (nullable)
priority Integer Priority level
created_at DateTime Creation date

Content

Field Type Purpose
account FK Owner account
site FK Parent site
sector FK Parent sector
task FK Source task (nullable)
title CharField Content title
slug SlugField URL slug
content_body TextField HTML content
excerpt TextField Short summary
meta_title CharField SEO meta title
meta_description CharField SEO meta description
word_count Integer Actual word count
status CharField draft/review/approved/published
content_type CharField post/page/product
content_structure CharField article/guide/comparison/review/listicle
source CharField igny8/wordpress/manual
wordpress_id Integer WP post ID (if synced)
published_at DateTime Publication date
created_at DateTime Creation date

Images

Field Type Purpose
account FK Owner account
site FK Parent site
sector FK Parent sector
content FK Parent content
image_type CharField featured/desktop/mobile/in_article
prompt TextField Generation prompt
image_url URLField Image URL
alt_text CharField Alt text for SEO
status CharField pending/generating/completed/failed
position Integer Order for in-article images
provider CharField dalle/runware
model CharField dall-e-3/runware:97@1
created_at DateTime Creation date

ContentTaxonomy

Field Type Purpose
account FK Owner account
site FK Parent site
name CharField Category/tag name
slug SlugField URL slug
taxonomy_type CharField category/tag
parent FK Parent taxonomy (for hierarchy)
description TextField Description
wordpress_id Integer WP term ID (if synced)

API Endpoints

Tasks

Method Path Handler Purpose
GET /api/v1/writer/tasks/ TaskViewSet.list List tasks
POST /api/v1/writer/tasks/ TaskViewSet.create Create task
POST /api/v1/writer/tasks/bulk_create/ TaskViewSet.bulk_create Create multiple tasks
POST /api/v1/writer/tasks/{id}/generate_content/ TaskViewSet.generate_content AI content generation

Content

Method Path Handler Purpose
GET /api/v1/writer/content/ ContentViewSet.list List content
POST /api/v1/writer/content/ ContentViewSet.create Create content manually
PUT /api/v1/writer/content/{id}/ ContentViewSet.update Update content
POST /api/v1/writer/content/{id}/update_content/ ContentViewSet.update_content Update with validation
POST /api/v1/writer/content/{id}/generate_images/ ContentViewSet.generate_images Generate images
POST /api/v1/writer/content/{id}/publish_to_wordpress/ ContentViewSet.publish_to_wordpress Publish to WP

Images

Method Path Handler Purpose
GET /api/v1/writer/images/ ImageViewSet.list List images
POST /api/v1/writer/images/generate_for_content/ ImageViewSet.generate_for_content Generate images
POST /api/v1/writer/images/regenerate/ ImageViewSet.regenerate Regenerate image

Business Logic

Content Generation (AI)

Trigger: User clicks "Generate" on task
AI Function: GenerateContentFunction
Credit Cost: Based on AI tokens used (see AIModelConfig)

Flow:

  1. User has task with title, keywords, word count target
  2. Frontend calls POST /tasks/{id}/generate_content/
  3. Backend validates task and credits
  4. AIEngine executes GenerateContentFunction:
    • Loads account's AI prompts and strategy
    • Sends to GPT-4 with structured output
    • Receives HTML content with proper structure
  5. Creates Content record linked to task
  6. Updates task status to completed
  7. Returns content for review

Image Prompt Generation (AI)

Trigger: Part of content generation or explicit
AI Function: GenerateImagePromptsFunction
Credit Cost: Based on AI tokens used (see AIModelConfig)

Flow:

  1. Content exists with body
  2. AI analyzes content sections
  3. Generates prompts for:
    • Featured image (1)
    • In-article images (configurable count)
  4. Creates Images records with prompts, status=pending

Image Generation (AI)

Trigger: User clicks "Generate Images" or automation
AI Function: GenerateImagesFunction
Credit Cost: Deducted per image (see AIModelConfig.credits_per_image)

Flow:

  1. Image record exists with prompt, status=pending
  2. Backend calls DALL-E or Runware API
  3. Receives image URL
  4. Updates Images record with URL, status=completed

WordPress Publishing

Trigger: User clicks "Publish to WordPress"
Credit Cost: None

Flow:

  1. Content is in approved status
  2. Site has WordPress integration configured
  3. Backend calls WordPress REST API:
    • Creates/updates post
    • Uploads featured image
    • Sets categories/tags
  4. Updates Content with wordpress_id
  5. Sets status to published

Content Structures

Structure Purpose Typical Sections
article General blog post Intro, Body, Conclusion
guide How-to content Steps, Tips, Summary
comparison Product comparison Features, Pros/Cons, Verdict
review Product review Overview, Features, Rating
listicle List-based content Numbered items with details
pillar Long-form authority Multiple sections with depth

Frontend Pages

Tasks Page (/writer/tasks)

  • Table of all tasks
  • Filter by status, assigned user
  • Generate content action
  • Bulk actions

Content Page (/writer/content)

  • Table of all content
  • Filter by status, content type
  • Quick preview
  • Publish actions

Content Viewer (/writer/content/{id})

  • Full content preview
  • Edit mode
  • Image management
  • Publish to WordPress
  • Status management

Draft/Review/Approved Tabs

  • Filtered views by status
  • Different actions per status
  • v1.2.0: "Published" tab renamed to "Approved"

Content Status Flow

draft → review → approved → published
                    ↓
              (rejected) → draft (revision)

Integration Points

From To Trigger
ContentIdeas Tasks Create tasks
Tasks Content Generate content
Content Images Generate images
Content WordPress Publish
WordPress Content Sync imports
Automation Stage 4 Content Automated generation
Automation Stage 5-6 Images Automated image generation

Common Issues

Issue Cause Fix
Content too short Low word count target Increase target in task
Images not generating No prompts created Run image prompt generation first
WordPress publish fails Invalid credentials Check integration settings
Content stuck in draft No manual status update Update status via UI or API
Duplicate content Re-running generation Check if content already exists

Planned Changes

Feature Status Description
Content revisions 🔜 Planned Track content version history
Multi-language 🔜 Planned Generate content in different languages
Batch generation 🔜 Planned Generate multiple content pieces at once
Regenerate sections 🔜 Planned AI regenerate specific sections