ComfyUI Extension: ComfyUI_PromptManager

Authored by ComfyAssets

Created

Updated

15 stars

A powerful ComfyUI custom node that extends the standard text encoder with persistent prompt storage, advanced search capabilities, and an automatic image gallery system using SQLite.

Custom Nodes (0)

    README

    ComfyUI Prompt Manager

    A powerful ComfyUI custom node that extends the standard text encoder with persistent prompt storage, advanced search capabilities, and an automatic image gallery system using SQLite.

    Overview

    Prompt Manager Interface

    ComfyUI Prompt Manager functions as a drop-in replacement for ComfyUI's standard CLIPTextEncode node while adding comprehensive prompt management and automatic image tracking features:

    • šŸ”„ Drop-in Replacement: Works exactly like the standard text encoder
    • šŸ’¾ Persistent Storage: Automatically saves all prompts to a local SQLite database
    • šŸ” Advanced Search: Query past prompts with text search, category filtering, and metadata
    • šŸ–¼ļø Automatic Image Gallery: Automatically links generated images to their prompts
    • šŸ·ļø Rich Metadata: Add categories, tags, ratings, notes, and workflow names to prompts
    • 🚫 Duplicate Prevention: Uses SHA256 hashing to detect and prevent duplicate storage
    • 🌐 Web Interface: Beautiful browser-based management interface
    • šŸ“Š Analytics: Track prompt usage patterns and effectiveness over time

    Image Gallery

    Features

    Core Functionality

    • Text Encoding: Standard CLIP text encoding for ComfyUI workflows
    • Auto-Save: Every prompt is automatically saved to the database
    • Metadata Support: Optional categories, tags, ratings (1-5), notes, and workflow names
    • Hash-based Deduplication: Prevents storing identical prompts multiple times

    šŸ–¼ļø Automatic Image Gallery

    Prompt Editor

    • Smart Image Detection: Automatically monitors ComfyUI output directory for new images
    • Intelligent Linking: Links generated images to their corresponding prompts based on execution timing
    • Metadata Extraction: Extracts and stores ComfyUI workflow data and generation parameters
    • Gallery Interface: Beautiful web-based gallery with thumbnail grid view
    • Full-size Image Viewer: Modal overlay with navigation controls and keyboard shortcuts
    • Image Navigation: Browse through images with arrow keys or navigation buttons
    • Image Counter: Shows current position in gallery (e.g., "3 / 7")

    Search & Retrieval

    • Full-text search across all stored prompts
    • Category filtering for organized prompt collections
    • Tag-based search with support for multiple tags
    • Rating filters to find your best prompts
    • Date range filtering for temporal searches
    • Recent prompts quick access
    • Top-rated prompts for quality discovery
    • Image search by file properties and metadata

    🌐 Web Interface

    • Admin Dashboard: Comprehensive browser-based management interface
    • Responsive Design: Works on desktop, tablet, and mobile devices
    • Real-time Search: Instant search results as you type
    • Bulk Operations: Edit multiple prompts simultaneously
    • Settings Panel: Configure behavior and display options
    • Diagnostics: Built-in system diagnostics and health checks
    • Export Tools: Download prompts and metadata in various formats

    Database Management

    • SQLite backend for reliable local storage
    • Automatic schema creation and management
    • Database optimization with proper indexing
    • Export functionality to JSON or CSV formats
    • Backup and restore capabilities
    • Relationship tracking between prompts and generated images

    Installation

    For ComfyUI Users

    1. Clone the repository into your ComfyUI custom_nodes directory:

      cd ComfyUI/custom_nodes/
      git clone https://github.com/ComfyAssets/ComfyUI_PromptManager
      cd ComfyUI_PromptManager
      
    2. Install dependencies:

      pip install -r requirements.txt
      
    3. Restart ComfyUI to load the new node

    4. Add the node to your workflow:

      • Look for "Prompt Manager" in the conditioning category
      • Use it exactly like the standard "CLIP Text Encode" node
    5. Access the web interface:

      • Open http://localhost:8188/prompt_manager/admin in your browser
      • Or use the built-in ComfyUI interface at http://localhost:8188/prompt_manager/

    Prerequisites

    • ComfyUI installation
    • Python 3.8 or higher
    • SQLite3 (included with Python)
    • watchdog library for automatic image monitoring

    Usage

    Basic Usage

    Replace any CLIPTextEncode node with PromptManager:

    1. Add the node to your workflow
    2. Connect CLIP model (same as standard text encoder)
    3. Enter your prompt in the text field
    4. Optionally add metadata:
      • Category: "portraits", "landscapes", "abstract", etc.
      • Tags: "detailed, anime, masterpiece" (comma-separated)
      • Rating: 1-5 stars for prompt quality
      • Notes: Any additional information
      • Workflow Name: Name of your workflow for organization

    The node will encode your text, automatically save it to the database, and link any generated images to the prompt.

    šŸ–¼ļø Using the Image Gallery

    The image gallery automatically captures and links generated images:

    1. Generate images using workflows with the Prompt Manager node
    2. Open the admin interface at http://localhost:8188/prompt_manager/admin
    3. Click the "šŸ–¼ļø Gallery" button on any prompt to view its images
    4. Click any thumbnail to open the full-size image viewer
    5. Navigate images using:
      • Arrow keys (←/→) for keyboard navigation
      • Navigation buttons for mouse control
      • ESC key to close the viewer

    🌐 Web Interface Features

    The comprehensive web interface provides:

    • Search Bar: Real-time search across all prompts
    • Filter Options: Filter by category, tags, rating, and date
    • Bulk Operations: Select multiple prompts for batch editing
    • Export Tools: Download your prompt collection
    • Settings Panel: Configure auto-save and display options
    • Diagnostics: System health checks and troubleshooting

    Database Location

    By default, the database is saved as example_prompts.db in the node directory. This file contains all your prompts and linked images and can be backed up or shared.

    Searching Prompts

    Use the web interface for intuitive searching, or access the database directly:

    from database.operations import PromptDatabase
    
    db = PromptDatabase()
    
    # Search for landscape prompts
    results = db.search_prompts(text="landscape", limit=10)
    
    # Find highly rated prompts
    results = db.search_prompts(rating_min=4)
    
    # Search by category and tags
    results = db.search_prompts(
        category="portraits",
        tags=["anime", "detailed"]
    )
    
    # Get recent prompts
    recent = db.get_recent_prompts(limit=20)
    
    # Get images for a prompt
    images = db.get_prompt_images(prompt_id="123")
    

    Examples

    Example 1: Basic Prompt Storage

    Input: "A beautiful sunset over a mountain lake"
    Category: "landscapes"
    Tags: "nature, sunset, mountains, water"
    Rating: 5
    Notes: "Perfect for peaceful scenes"
    

    Example 2: Character Prompt

    Input: "Portrait of a cyberpunk hacker with neon implants"
    Category: "characters"
    Tags: "cyberpunk, portrait, sci-fi, neon"
    Rating: 4
    Workflow: "character_generator_v2"
    

    Example 3: Abstract Art

    Input: "Swirling colors in an abstract geometric pattern"
    Category: "abstract"
    Tags: "geometric, colorful, pattern, modern"
    Rating: 3
    Notes: "Good for experimental art"
    

    Database Schema

    -- Prompts table
    CREATE TABLE prompts (
        id INTEGER PRIMARY KEY AUTOINCREMENT,
        text TEXT NOT NULL,
        created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
        updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
        workflow_name TEXT,
        category TEXT,
        tags TEXT,  -- JSON array of tags
        rating INTEGER CHECK(rating >= 1 AND rating <= 5),
        notes TEXT,
        hash TEXT UNIQUE  -- SHA256 hash for deduplication
    );
    
    -- Generated images table
    CREATE TABLE generated_images (
        id INTEGER PRIMARY KEY AUTOINCREMENT,
        prompt_id TEXT NOT NULL,
        image_path TEXT NOT NULL,
        filename TEXT NOT NULL,
        generation_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
        file_size INTEGER,
        width INTEGER,
        height INTEGER,
        format TEXT,
        workflow_data TEXT,  -- JSON workflow metadata
        prompt_metadata TEXT,  -- JSON prompt parameters
        parameters TEXT,  -- JSON generation parameters
        FOREIGN KEY (prompt_id) REFERENCES prompts(id)
    );
    

    Architecture

    Core Components

    • prompt_manager.py - Main ComfyUI node implementation
    • database/models.py - Database schema and connection management
    • database/operations.py - CRUD operations and search functionality
    • py/api.py - Web API endpoints for the interface
    • py/config.py - Configuration management
    • utils/hashing.py - SHA256 hashing for deduplication
    • utils/validators.py - Input validation and sanitization
    • utils/image_monitor.py - Automatic image detection system
    • utils/prompt_tracker.py - Prompt execution tracking
    • web/admin.html - Comprehensive web management interface
    • web/index.html - Simple web interface
    • web/prompt_manager.js - JavaScript functionality

    File Structure

    ComfyUI_PromptManager/
    ā”œā”€ā”€ __init__.py                    # Node registration
    ā”œā”€ā”€ prompt_manager.py             # Main node implementation
    ā”œā”€ā”€ database/
    │   ā”œā”€ā”€ __init__.py
    │   ā”œā”€ā”€ models.py                 # Database schema
    │   └── operations.py             # Database operations
    ā”œā”€ā”€ py/
    │   ā”œā”€ā”€ __init__.py
    │   ā”œā”€ā”€ api.py                    # Web API endpoints
    │   └── config.py                 # Configuration
    ā”œā”€ā”€ utils/
    │   ā”œā”€ā”€ __init__.py
    │   ā”œā”€ā”€ hashing.py               # Hashing utilities
    │   ā”œā”€ā”€ validators.py            # Input validation
    │   ā”œā”€ā”€ image_monitor.py         # Automatic image detection
    │   └── prompt_tracker.py        # Prompt execution tracking
    ā”œā”€ā”€ web/
    │   ā”œā”€ā”€ admin.html               # Advanced web interface
    │   ā”œā”€ā”€ index.html               # Simple web interface
    │   └── prompt_manager.js        # JavaScript functionality
    ā”œā”€ā”€ tests/
    │   ā”œā”€ā”€ __init__.py
    │   └── test_basic.py            # Test suite
    ā”œā”€ā”€ requirements.txt             # Dependencies
    ā”œā”€ā”€ example_usage.py            # Standalone examples
    ā”œā”€ā”€ example_prompts.db          # Example database
    └── README.md                   # This file
    

    Configuration

    Database Settings

    You can customize the database path by modifying the configuration:

    # In py/config.py
    DATABASE_PATH = "custom_path/prompts.db"
    

    Image Monitoring Settings

    Configure the automatic image detection system:

    # Image monitoring configuration
    OUTPUT_DIRS = [
        "/path/to/ComfyUI/output",
        "/additional/output/directory"
    ]
    PROCESSING_DELAY = 2.0  # Delay before processing new images
    PROMPT_EXECUTION_TIMEOUT = 120  # Seconds to wait for prompt linking
    

    Performance Tuning

    • The database automatically creates indexes for optimal search performance
    • Regular VACUUM operations keep the database optimized
    • Consider backing up the database periodically

    Advanced Features

    Export Your Prompts

    from database.operations import PromptDatabase
    
    db = PromptDatabase()
    
    # Export to JSON
    db.export_prompts("my_prompts.json", format="json")
    
    # Export to CSV
    db.export_prompts("my_prompts.csv", format="csv")
    

    Database Statistics

    info = db.model.get_database_info()
    print(f"Total prompts: {info['total_prompts']}")
    print(f"Average rating: {info['average_rating']}")
    

    Backup and Restore

    # Create backup
    db.model.backup_database("backup_prompts.db")
    
    # The database file can be copied directly for backup
    

    Development

    Running Tests

    cd KikoTextEncode
    python -m pytest tests/ -v
    

    Code Style

    The project follows PEP 8 guidelines with:

    • Black formatter (88 character line limit)
    • Type hints for all functions
    • Comprehensive docstrings
    • Proper error handling

    Contributing

    1. Fork the repository
    2. Create a feature branch
    3. Add tests for new functionality
    4. Ensure all tests pass
    5. Submit a pull request

    Troubleshooting

    Common Issues

    Database Permission Errors

    • Ensure the ComfyUI process has write permissions to the node directory
    • Check that the database file isn't locked by another process

    Import Errors

    • Verify ComfyUI is properly installed
    • Check that all required dependencies are available

    Performance Issues

    • Run VACUUM on the database occasionally
    • Consider archiving old prompts if the database becomes very large

    Debug Mode

    For debugging, you can enable verbose logging in the node:

    # Add to kiko_text_encode.py
    import logging
    logging.basicConfig(level=logging.DEBUG)
    

    License

    MIT License - see LICENSE file for details.

    Support

    • Issues: Report bugs and request features via GitHub Issues
    • Documentation: See the Wiki for detailed guides
    • Community: Join the discussion in ComfyUI Discord

    Roadmap

    Planned Features

    • ā˜ļø Cloud Sync: Optional cloud backup and sync
    • šŸ¤ Collaboration: Share prompt collections with other users
    • 🧠 AI Suggestions: Recommend similar prompts based on usage
    • šŸ“ˆ Advanced Analytics: Detailed usage statistics and trends
    • šŸ”Œ Plugin System: Support for third-party extensions
    • šŸŽØ Batch Processing: Bulk image operations and metadata editing

    Integration Ideas

    • Auto-tagging: Use AI to automatically categorize prompts
    • Workflow linking: Connect prompts to specific workflow templates
    • Image analysis: Analyze generated images to improve suggestions
    • Version control: Track prompt iterations and effectiveness

    Changelog

    v2.0.0 (Gallery Release)

    • šŸ–¼ļø Automatic Image Gallery: Complete image tracking and gallery system
    • 🌐 Advanced Web Interface: Comprehensive admin dashboard with responsive design
    • šŸ“± Image Viewer: Full-screen modal with navigation and keyboard shortcuts
    • šŸ” Enhanced Search: Real-time search with advanced filtering options
    • ⚔ Performance Improvements: Optimized database operations and NaN value handling
    • šŸ› ļø Diagnostics: Built-in system diagnostics and health monitoring
    • šŸ“Š Bulk Operations: Multi-select prompt editing and management

    v1.0.0 (Initial Release)

    • Core text encoding with database storage
    • Search and filtering functionality
    • Metadata support (categories, tags, ratings, notes)
    • Hash-based deduplication
    • SQLite backend with optimized schema
    • Basic web interface
    • Export functionality