Add AI marketing and writing tools from PRs #220, #310

New tools added to ToBeMigrated/ directory:

ai_marketing_tools/:
- ai_backlinker: AI-powered backlink generation
- ai_google_ads_generator: Google Ads generation with templates

ai_writers/:
- ai_blog_faqs_writer: FAQ generation for blogs
- ai_copywriter: Multiple copywriter frameworks (AIDA, PAS, 4C, 4R, etc.)
- ai_finance_report_generator: Financial report generation
- ai_story_illustrator: Story illustration
- ai_story_video_generator: Story video generation
- ai_story_writer: AI story writing
- github_blogs: GitHub blog integration
- speech_to_blog: Audio to blog conversion
- twitter_writers: Twitter/X content generation
- youtube_writers: YouTube content generation

These tools are in ToBeMigrated/ for future migration to the main backend.
This commit is contained in:
ajaysi
2026-03-22 11:47:21 +05:30
parent 1fd9720dac
commit 3c58fd555b
91 changed files with 26451 additions and 0 deletions

View File

@@ -0,0 +1,31 @@
# AI Story Video Generator
This module allows users to generate animated story videos using AI. It leverages Google's Gemini model to create stories and generate images for each scene, then combines them into a video.
## Features
- Generate complete stories based on user prompts
- Create scene-by-scene storyboards
- Generate images for each scene using Gemini
- Compile images into an animated video
- Add background music and text overlays
- Export videos in MP4 format
## How It Works
1. User provides a story prompt and preferences
2. AI generates a complete story with multiple scenes
3. For each scene, an image is generated
4. Images are compiled into a video with transitions
5. Optional background music and text overlays are added
6. The final video is available for download
## Requirements
- Google Gemini API key
- FFmpeg for video processing
- Python libraries: moviepy, pillow, requests
## Usage
Access this tool through the Streamlit interface by selecting "AI Story Video Generator" from the main menu.

View File

@@ -0,0 +1,4 @@
# AI Story Video Generator module
from .story_video_generator import write_story_video_generator
__all__ = ["write_story_video_generator"]

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,64 @@
"""
Utility functions for the AI Story Video Generator.
"""
import os
import tempfile
import uuid
from pathlib import Path
from typing import Optional
# Constants
TEMP_DIR = Path(tempfile.gettempdir()) / "alwrity_story_generator"
def ensure_temp_dir() -> Path:
"""Ensure the temporary directory exists and return its path."""
os.makedirs(TEMP_DIR, exist_ok=True)
return TEMP_DIR
def get_temp_filepath(prefix: str, extension: str) -> str:
"""Generate a temporary file path with the given prefix and extension."""
temp_dir = ensure_temp_dir()
return str(temp_dir / f"{prefix}_{uuid.uuid4()}.{extension}")
def clean_temp_files(older_than_hours: int = 24) -> int:
"""
Clean temporary files older than the specified number of hours.
Args:
older_than_hours: Remove files older than this many hours
Returns:
Number of files removed
"""
import time
from datetime import datetime, timedelta
temp_dir = ensure_temp_dir()
cutoff_time = time.time() - (older_than_hours * 3600)
count = 0
for file_path in temp_dir.glob("*"):
if file_path.is_file() and file_path.stat().st_mtime < cutoff_time:
try:
file_path.unlink()
count += 1
except Exception:
pass
return count
def format_duration(seconds: float) -> str:
"""Format seconds into a MM:SS string."""
minutes = int(seconds // 60)
remaining_seconds = int(seconds % 60)
return f"{minutes}:{remaining_seconds:02d}"
def sanitize_filename(filename: str) -> str:
"""Sanitize a string to be used as a filename."""
import re
# Remove invalid characters
sanitized = re.sub(r'[^\w\s-]', '', filename)
# Replace spaces with underscores
sanitized = sanitized.strip().replace(' ', '_')
return sanitized