Template Updates: - Add npm script for incremental template fetch (fetch:templates:update) - Create MEMORY_TEMPLATE_UPDATE.md with comprehensive documentation - Update 48 new templates (2598 → 2646 total) - Latest template now from September 24, 2025 Metadata Generation Fixes: - Update model from gpt-4o-mini to gpt-5-mini-2025-08-07 - Remove temperature parameter (not supported in batch API) - Increase max_completion_tokens from 1000 to 3000 - Add comprehensive error file handling to batch-processor - Process failed requests and assign default metadata - Save error files for debugging (temp/batch/) Test Updates: - Update all test files to use gpt-5-mini-2025-08-07 model - 3 test assertions updated in metadata-generator.test.ts - 1 test option updated in batch-processor.test.ts Documentation: - Add troubleshooting section for metadata generation - Include error handling examples - Document incremental vs full rebuild modes 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
9.0 KiB
Template Update Process - Quick Reference
Overview
The n8n-mcp project maintains a database of workflow templates from n8n.io. This guide explains how to update the template database incrementally without rebuilding from scratch.
Current Database State
As of the last update:
- 2,598 templates in database
- Templates from the last 12 months
- Latest template: September 12, 2025
Quick Commands
Incremental Update (Recommended)
# Build if needed
npm run build
# Fetch only NEW templates (5-10 minutes)
npm run fetch:templates:update
Full Rebuild (Rare)
# Rebuild entire database from scratch (30-40 minutes)
npm run fetch:templates
How It Works
Incremental Update Mode (--update)
The incremental update is smart and efficient:
- Loads existing template IDs from database (~2,598 templates)
- Fetches template list from n8n.io API (all templates from last 12 months)
- Filters to find only NEW templates not in database
- Fetches details for new templates only (saves time and API calls)
- Saves new templates to database (existing ones untouched)
- Rebuilds FTS5 search index for new templates
Key Benefits
✅ Non-destructive: All existing templates preserved ✅ Fast: Only fetches new templates (5-10 min vs 30-40 min) ✅ API friendly: Reduces load on n8n.io API ✅ Safe: Preserves AI-generated metadata ✅ Smart: Automatically skips duplicates
Performance Comparison
| Mode | Templates Fetched | Time | Use Case |
|---|---|---|---|
| Update | Only new (~50-200) | 5-10 min | Regular updates |
| Rebuild | All (~8000+) | 30-40 min | Initial setup or corruption |
Command Options
Basic Update
npm run fetch:templates:update
Full Rebuild
npm run fetch:templates
With Metadata Generation
# Update templates and generate AI metadata
npm run fetch:templates -- --update --generate-metadata
# Or just generate metadata for existing templates
npm run fetch:templates -- --metadata-only
Help
npm run fetch:templates -- --help
Update Frequency
Recommended update schedule:
- Weekly: Run incremental update to get latest templates
- Monthly: Review database statistics
- As needed: Rebuild only if database corruption suspected
Template Filtering
The fetcher automatically filters templates:
- ✅ Includes: Templates from last 12 months
- ✅ Includes: Templates with >10 views
- ❌ Excludes: Templates with ≤10 views (too niche)
- ❌ Excludes: Templates older than 12 months
Workflow
Regular Update Workflow
# 1. Check current state
sqlite3 data/nodes.db "SELECT COUNT(*) FROM templates"
# 2. Build project (if code changed)
npm run build
# 3. Run incremental update
npm run fetch:templates:update
# 4. Verify new templates added
sqlite3 data/nodes.db "SELECT COUNT(*) FROM templates"
After n8n Dependency Update
When you update n8n dependencies, templates remain compatible:
# 1. Update n8n (from MEMORY_N8N_UPDATE.md)
npm run update:all
# 2. Fetch new templates incrementally
npm run fetch:templates:update
# 3. Check how many templates were added
sqlite3 data/nodes.db "SELECT COUNT(*) FROM templates"
# 4. Generate AI metadata for new templates (optional, requires OPENAI_API_KEY)
npm run fetch:templates -- --metadata-only
Templates are independent of n8n version - they're just workflow JSON data.
Note: New templates fetched via --update mode will NOT have AI-generated metadata by default. You need to run --metadata-only separately to generate metadata for templates that don't have it yet.
Troubleshooting
No New Templates Found
This is normal! It means:
- All recent templates are already in your database
- n8n.io hasn't published many new templates recently
- Your database is up to date
📊 Update mode: 0 new templates to fetch (skipping 2598 existing)
✅ All templates already have metadata
API Rate Limiting
If you hit rate limits:
- The fetcher includes built-in delays (150ms between requests)
- Wait a few minutes and try again
- Use
--updatemode instead of full rebuild
Database Corruption
If you suspect corruption:
# Full rebuild from scratch
npm run fetch:templates
# This will:
# - Drop and recreate templates table
# - Fetch all templates fresh
# - Rebuild search indexes
Database Schema
Templates are stored with:
- Basic info (id, name, description, author, views, created_at)
- Node types used (JSON array)
- Complete workflow (gzip compressed, base64 encoded)
- AI-generated metadata (optional, requires OpenAI API key)
- FTS5 search index for fast text search
Metadata Generation
Generate AI metadata for templates:
# Requires OPENAI_API_KEY in .env
export OPENAI_API_KEY="sk-..."
# Generate for templates without metadata (recommended after incremental update)
npm run fetch:templates -- --metadata-only
# Generate during template fetch (slower, but automatic)
npm run fetch:templates:update -- --generate-metadata
Important: Incremental updates (--update) do NOT generate metadata by default. After running npm run fetch:templates:update, you'll have new templates without metadata. Run --metadata-only separately to generate metadata for them.
Check Metadata Coverage
# See how many templates have metadata
sqlite3 data/nodes.db "SELECT
COUNT(*) as total,
SUM(CASE WHEN metadata_json IS NOT NULL THEN 1 ELSE 0 END) as with_metadata,
SUM(CASE WHEN metadata_json IS NULL THEN 1 ELSE 0 END) as without_metadata
FROM templates"
# See recent templates without metadata
sqlite3 data/nodes.db "SELECT id, name, created_at
FROM templates
WHERE metadata_json IS NULL
ORDER BY created_at DESC
LIMIT 10"
Metadata includes:
- Categories
- Complexity level (simple/medium/complex)
- Use cases
- Estimated setup time
- Required services
- Key features
- Target audience
Metadata Generation Troubleshooting
If metadata generation fails:
- Check error file: Errors are saved to
temp/batch/batch_*_error.jsonl - Common issues:
"Unsupported value: 'temperature'"- Model doesn't support custom temperature"Invalid request"- Check OPENAI_API_KEY is valid- Model availability issues
- Model: Uses
gpt-5-mini-2025-08-07by default - Token limit: 3000 tokens per request for detailed metadata
The system will automatically:
- Process error files and assign default metadata to failed templates
- Save error details for debugging
- Continue processing even if some templates fail
Example error handling:
# If you see: "No output file available for batch job"
# Check: temp/batch/batch_*_error.jsonl for error details
# The system now automatically processes errors and generates default metadata
Environment Variables
Optional configuration:
# OpenAI for metadata generation
OPENAI_API_KEY=sk-...
OPENAI_MODEL=gpt-4o-mini # Default model
OPENAI_BATCH_SIZE=50 # Batch size for metadata generation
# Metadata generation limits
METADATA_LIMIT=100 # Max templates to process (0 = all)
Statistics
After update, check stats:
# Template count
sqlite3 data/nodes.db "SELECT COUNT(*) FROM templates"
# Most recent template
sqlite3 data/nodes.db "SELECT MAX(created_at) FROM templates"
# Templates by view count
sqlite3 data/nodes.db "SELECT COUNT(*),
CASE
WHEN views < 50 THEN '<50'
WHEN views < 100 THEN '50-100'
WHEN views < 500 THEN '100-500'
ELSE '500+'
END as view_range
FROM templates GROUP BY view_range"
Integration with n8n-mcp
Templates are available through MCP tools:
list_templates: List all templatesget_template: Get specific template with workflowsearch_templates: Search by keywordlist_node_templates: Templates using specific nodesget_templates_for_task: Templates for common taskssearch_templates_by_metadata: Advanced filtering
See npm run test:templates for usage examples.
Time Estimates
Typical incremental update:
- Loading existing IDs: 1-2 seconds
- Fetching template list: 2-3 minutes
- Filtering new templates: instant
- Fetching details for 100 new templates: ~15 seconds (0.15s each)
- Saving and indexing: 5-10 seconds
- Total: 3-5 minutes
Full rebuild:
- Fetching 8000+ templates: 25-30 minutes
- Saving and indexing: 5-10 minutes
- Total: 30-40 minutes
Best Practices
- Use incremental updates for regular maintenance
- Rebuild only when necessary (corruption, major changes)
- Generate metadata incrementally to avoid OpenAI costs
- Monitor template count to verify updates working
- Keep database backed up before major operations
Next Steps
After updating templates:
- Test template search:
npm run test:templates - Verify MCP tools work: Test in Claude Desktop
- Check statistics in database
- Commit changes if desired (database changes)
Related Documentation
MEMORY_N8N_UPDATE.md- Updating n8n dependenciesCLAUDE.md- Project overview and architectureREADME.md- User documentation