ComfyUI Extension: ComfyUI Pinecone Prompt Upserter
A custom ComfyUI node for managing image generation prompts using Pinecone vector database with OpenAI embeddings. Features interactive approval with image preview for quality control.
Custom Nodes (0)
README
ComfyUI Pinecone Prompt Upserter
A custom ComfyUI node for managing image generation prompts using Pinecone vector database with OpenAI embeddings. Features interactive approval with image preview for quality control.
Features
- Interactive Approval: Visual preview with buttons before saving prompts
- Automatic Trigger Word Sanitization: Replaces character names (e.g.,
Sarah01
) with<trigger_word>
placeholder - Deduplication: Prevents duplicate prompts using SHA256 hashing
- Smart Memory: Remembers decisions - only prompts first-time prompts
- OpenAI Embeddings: Uses
text-embedding-3-large
model (3072 dimensions) - Image Preview: See generated image before deciding to save prompt
- Beautiful UI: Gradient buttons with hover animations in centered popup
Prerequisites
- Python 3.8+
- ComfyUI installation
- OpenAI API key
- Pinecone account with an index created (3072 dimensions)
Installation
- Navigate to your ComfyUI custom nodes directory:
cd /path/to/ComfyUI/custom_nodes/
- Clone this repository:
git clone https://github.com/Hearmeman24/ComfyUI-Pinecone.git
- Install dependencies:
cd ComfyUI-Pinecone
pip install -r requirements.txt
- Set environment variables:
export OPENAI_API_KEY=your_openai_api_key_here
export PINECONE_API_KEY=your_pinecone_api_key_here
- Restart ComfyUI
Usage
-
In ComfyUI, add the Pinecone Prompt Upserter node to your workflow (found under
prompt_management
category) -
Connect inputs:
- image (optional): Connect the generated image output to see it during approval
- prompt_text: The prompt used (connect from prompt node)
- model_name: Name of the model (e.g., "flux", "qwen", "wan", "sdxl")
- index_name: Your Pinecone index name (default: "prompts")
- pinecone_api_key (optional): Your Pinecone API key (uses env var if empty)
- openai_api_key (optional): Your OpenAI API key (uses env var if empty)
-
How it works:
First Time Seeing a Prompt:
- Workflow pauses when it reaches the node
- Popup appears automatically showing the generated image
- Two buttons below image: "Insert to Index" (green) and "Cancel" (red)
- Make your decision based on the image quality
- Popup closes and workflow continues
Subsequent Runs with Same Prompt:
- Node recognizes the prompt instantly
- Silently skips without interrupting
- No popup, no pause - smooth workflow execution
Configuration
Environment Variables
OPENAI_API_KEY
: Required for generating embeddingsPINECONE_API_KEY
: Required for accessing Pinecone indexINDEX_NAME
: Optional, defaults to "prompts"
Pinecone Index Setup
Make sure your Pinecone index is configured with:
- Dimensions: 3072 (for
text-embedding-3-large
) - Metric: cosine (recommended for text embeddings)
Example index creation:
from pinecone import Pinecone, ServerlessSpec
pc = Pinecone(api_key="your_api_key")
pc.create_index(
name="prompts",
dimension=3072,
metric="cosine",
spec=ServerlessSpec(cloud="aws", region="us-east-1")
)
Metadata Structure
Each prompt stored in Pinecone includes:
text
: The full prompt text (with trigger words sanitized)model
: The model name you specify (e.g., "flux", "qwen", "wan", "sdxl")prompt_hash
: SHA256 hash for deduplication
Trigger Word Sanitization
The node automatically replaces character-specific trigger words with a generic placeholder:
- Pattern:
Name01
(capital letter + letters + "01") - Examples:
Sarah01
,Onyx01
,MaryJane01
- Result: All replaced with
<trigger_word>
- Purpose: Maintains consistency and allows flexible character substitution
Deduplication
Prompts are deduplicated using SHA256 hashing of normalized text (lowercase, stripped whitespace):
- First time: Popup appears for approval
- Already seen: Silently skips (no interruption)
- Already in Pinecone: Won't duplicate even if approved again
Preview Features
- Auto-Appear: Popup automatically displays when a new prompt is detected
- Image Display: Large centered preview (up to 90% of viewport)
- Styled Buttons: Gradient green (Insert) and red (Cancel) with hover animations
- Manual Re-display: Click "📷 Show Preview" on node if you close the popup
- One-Click Decision: See image and click choice in single popup window
Troubleshooting
"API key not found" error
- Ensure environment variables are set before starting ComfyUI
- Alternatively, provide API keys directly in the node inputs
"Index not found" error
- Verify your Pinecone index name matches your configuration
- Ensure the index exists and has 3072 dimensions
Node not appearing in ComfyUI
- Restart ComfyUI completely after installation
- Check console for errors
- Verify dependencies installed in correct Python environment
Preview popup not appearing
- Check browser console for JavaScript errors
- Ensure you're connecting an image to the node's image input
- Try clicking "📷 Show Preview" button manually
Dimension mismatch error
- Pinecone index must be created with 3072 dimensions
- This matches OpenAI's
text-embedding-3-large
model
License
MIT License