Skip to main content

A TUI app that generates short stories and AI images from prompts using a language model.

Project description

StoryForge

StoryForge is a command-line tool that generates illustrated children's stories using AI language models. Simply provide a story prompt, and StoryForge will create both a short story and accompanying AI-generated images.

Supported AI Backends

  • Google Gemini - Fully supported for story and image generation
  • OpenAI - Fully supported for story and image generation
  • Anthropic - Supported for story (text) generation only; image generation is not currently supported by this backend

Features

  • 📖 Generate custom children's stories from simple prompts
  • 🎨 Create AI illustrations with multiple art styles (chibi, realistic, cartoon, watercolor, sketch)
  • ⚙️ Flexible story customization (age range, length, tone, theme, learning focus)
  • 💾 Save stories and images with organized output directories
  • 🖥️ Interactive terminal interface or direct CLI usage
  • 📚 Context system for character consistency across stories
  • ⏯️ Checkpoint system for resuming interrupted sessions

Configuration

For detailed configuration options, defaults, and examples see the full configuration reference: Configuration Documentation

Generate a default config file

# Create config file (won't overwrite an existing file)
storyforge init-config

# Force overwrite an existing config file
storyforge init-config --force

The config file will be created at ~/.config/storyforge/storyforge.ini by default. You can override the location using the STORYFORGE_CONFIG environment variable.

Checkpoint System

StoryForge automatically saves your progress during story generation, allowing you to resume from any point if the process is interrupted or if you want to retry different options.

Resume from Previous Sessions

storyforge --continue

This will show you the last 5 sessions and let you choose:

  • For interrupted sessions: Resume from where you left off
  • For completed sessions: Choose to:
    • Generate new images with the same story
    • Modify and regenerate the story
    • Save the story as context for future use
    • Start completely over with the same parameters

Checkpoint Storage

Checkpoint files are automatically stored in:

  • Linux/macOS: ~/.local/share/storyforge/checkpoints/
  • Windows: %APPDATA%\storyforge\storyforge\checkpoints\

The system automatically cleans up old checkpoints, keeping the 15 most recent sessions.

Example Workflow

# Start a story generation
storyforge "A dragon learning to dance"
# If interrupted, resume later with:
storyforge --continue
# Select your session and choose where to resume

Installation

Recommended: Using uv

uv tool install StoryForge

If you don't have uv:

curl -LsSf https://astral.sh/uv/install.sh | sh

Alternative: Using pipx

pipx install StoryForge

If you don't have pipx:

# macOS: brew install pipx
# Ubuntu/Debian: sudo apt install pipx
# Or: pip install pipx

Setup

Choose one of the supported AI backends and configure the corresponding API key:

Google Gemini

  1. Visit Google AI Studio to get your free Gemini API key
  2. Set the environment variable:
export GEMINI_API_KEY=your_api_key_here

OpenAI

  1. Get your API key from OpenAI Platform
  2. Set the environment variable:
export OPENAI_API_KEY=your_api_key_here

Anthropic (Experimental)

  1. Get your API key from Anthropic Console
  2. Set the environment variable:
export ANTHROPIC_API_KEY=your_api_key_here

Environment Variables

Variable Backend Status Description
GEMINI_API_KEY Google Gemini ✅ Fully Supported Required for Gemini backend
OPENAI_API_KEY OpenAI ✅ Fully Supported Required for OpenAI backend
ANTHROPIC_API_KEY Anthropic 🧪 Experimental Required for Anthropic backend (coming soon)
LLM_BACKEND All Optional Force specific backend (gemini, openai, anthropic)

Note: StoryForge will automatically detect which backend to use based on available API keys. If multiple keys are set, you can specify which backend to use with the LLM_BACKEND environment variable.

Add environment variables to your shell profile (.bashrc, .zshrc, etc.) to make them permanent:

# Example for Gemini
echo 'export GEMINI_API_KEY=your_api_key_here' >> ~/.bashrc
source ~/.bashrc

# Example for OpenAI
echo 'export OPENAI_API_KEY=your_api_key_here' >> ~/.bashrc
source ~/.bashrc

Usage

Basic Story Generation

storyforge "Tell me a story about a robot learning to make friends"

Interactive prompts

The CLI is interactive and will ask for confirmation and decisions during the run (for images, story refinements, etc.). There is not a separate tui subcommand in this version of the code.

Advanced Options

storyforge "A brave mouse goes on an adventure" \
  --age-range preschool \
  --length short \
  --tone exciting \
  --image-style cartoon \
  --output-dir my_story

Available Options

  • Age Range: toddler, preschool, early_reader, middle_grade
  • Length: flash, short, medium, bedtime
  • Style: adventure, comedy, fantasy, fairy_tale, friendship, random
  • Tone: gentle, exciting, silly, heartwarming, magical, random
  • Theme: courage, kindness, teamwork, problem_solving, creativity, random
  • Image Style: chibi, realistic, cartoon, watercolor, sketch

Tab Completion

Enable tab completion for easier CLI usage:

storyforge --install-completion

Or manually for bash/zsh:

eval "$(storyforge --show-completion)"

Output

StoryForge creates timestamped directories containing:

  • story.txt - The generated story
  • *.png - AI-generated illustrations
  • Organized by creation date/time

Development

For development setup, testing, and contributing guidelines, see DEV.md.

License

MIT License - see LICENSE file for details.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

storyforge-0.0.5.tar.gz (77.6 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

storyforge-0.0.5-py3-none-any.whl (57.5 kB view details)

Uploaded Python 3

File details

Details for the file storyforge-0.0.5.tar.gz.

File metadata

  • Download URL: storyforge-0.0.5.tar.gz
  • Upload date:
  • Size: 77.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.5.13

File hashes

Hashes for storyforge-0.0.5.tar.gz
Algorithm Hash digest
SHA256 68efac6bfe57e777a8bc2bea4ff603c79f2dce4ef05822f7bf96c46e212be772
MD5 dd2ee5d196de4610a0ae4a2c83e96e3d
BLAKE2b-256 2cd4ebfe50bffd469dcfa8c042bec04076cd9591a46a3f294366e3125ed344e4

See more details on using hashes here.

File details

Details for the file storyforge-0.0.5-py3-none-any.whl.

File metadata

  • Download URL: storyforge-0.0.5-py3-none-any.whl
  • Upload date:
  • Size: 57.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.5.13

File hashes

Hashes for storyforge-0.0.5-py3-none-any.whl
Algorithm Hash digest
SHA256 59a1b28c69848dc5d7a6fd21a0a61fd1fc5074bf80015f8582505cb895de0a14
MD5 b33d00113a37345e038ba2c8cc48a6c5
BLAKE2b-256 42108d18c4c22993507f77427d3a100fd60f5e29deeac6cc55eddacb6744f604

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page