{"adoption": {"forks": 334, "observed_at": "2026-08-28T04:05:02.127815+00:00", "stars": 1550}, "canonical_url": "https://ross.abutalabs.com/products/node-banana", "card": {"archived": false, "artifact_type": "application", "description": "Free and open node based generative workflows. ", "domain": ["artificial-intelligence", "large-language-models", "image-processing", "web-development"], "enriched": true, "function": ["agent-framework", "llm-inference", "image-processing", "video-processing", "audio-processing", "tts", "prompt-engineering", "workflow-automation", "gui"], "health_score": 98, "homepage": null, "language": "TypeScript", "license": "MIT", "license_family": "permissive", "maturity": "active", "member_repos": ["shrimbly/node-banana"], "name": "shrimbly/node-banana", "platform": ["cross-platform"], "pushed_at": "2026-08-06T18:18:19+00:00", "repo": "shrimbly/node-banana", "stars": 1550, "tags": ["node-editor", "visual-workflow", "ai-media-generation", "byok", "multi-provider", "generative-ai", "canvas-editor", "prompt-chaining", "video", "audio", "automation", "web", "nodejs"], "topics": [], "urls": [], "use_cases": ["build ai image generation pipelines visually", "chain multiple ai models into one workflow", "generate videos with ai apis via node editor", "create dynamic prompts with llm-powered construction", "generate 3d models from text prompts", "text to speech and ai audio generation workflow", "generate workflows from natural language descriptions", "save and share ai workflows as  files"], "what_it_is": "Node Banana is an open-source, node-based visual workflow editor for building AI media generation pipelines. Users connect nodes on an infinite canvas to chain image, video, 3D, audio, and text generation across multiple AI API providers like Google Gemini, Replicate, fal.ai, and OpenAI.", "when_to_avoid": ["you need fully offline generation without any external AI API keys", "you want a simple one-click generator rather than a node-based editor", "you need production-grade batch processing or headless automation rather than interactive visual editing"], "when_to_choose": ["you want a free, local, MIT-licensed alternative to node-based AI tools like ComfyUI for multi-provider APIs", "you need to chain image, video, audio, and text generation across providers in one pipeline", "you prefer bring-your-own-key workflows that keep everything private and local", "you want to build reusable prompt chains with variables and LLM-powered construction"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/node-banana", "repo": "shrimbly/node-banana", "role": "main", "score": 81}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:05:02.127815+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-30T04:30:20.377866+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "fc227fcf7f5cbe5532186f48c328cb736a9332ba26944e306a81edf77bc4dc16", "fetched_at": "2026-08-28T04:05:02.127815+00:00", "kind": "readme", "missing": false, "url": "https://github.com/shrimbly/node-banana"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:05:02.127815+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-30T04:30:20.377866+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "fc227fcf7f5cbe5532186f48c328cb736a9332ba26944e306a81edf77bc4dc16", "fetched_at": "2026-08-28T04:05:02.127815+00:00", "kind": "readme", "missing": false, "url": "https://github.com/shrimbly/node-banana"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-30T04:30:20.377866+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "fc227fcf7f5cbe5532186f48c328cb736a9332ba26944e306a81edf77bc4dc16", "fetched_at": "2026-08-28T04:05:02.127815+00:00", "kind": "readme", "missing": false, "url": "https://github.com/shrimbly/node-banana"}], "taxonomy_version": 1}, "health_score": {"inputs": ["days_since_push", "days_since_release", "archived"], "kind": "computed", "method": "health_v1"}, "homepage": {"kind": "observed", "observed_at": "2026-08-28T04:05:02.127815+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:05:02.127815+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:05:02.127815+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-30T04:30:20.377866+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "fc227fcf7f5cbe5532186f48c328cb736a9332ba26944e306a81edf77bc4dc16", "fetched_at": "2026-08-28T04:05:02.127815+00:00", "kind": "readme", "missing": false, "url": "https://github.com/shrimbly/node-banana"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:05:02.127815+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:05:02.127815+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-30T04:30:20.377866+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "fc227fcf7f5cbe5532186f48c328cb736a9332ba26944e306a81edf77bc4dc16", "fetched_at": "2026-08-28T04:05:02.127815+00:00", "kind": "readme", "missing": false, "url": "https://github.com/shrimbly/node-banana"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:05:02.127815+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:05:02.127815+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:05:02.127815+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-30T04:30:20.377866+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "fc227fcf7f5cbe5532186f48c328cb736a9332ba26944e306a81edf77bc4dc16", "fetched_at": "2026-08-28T04:05:02.127815+00:00", "kind": "readme", "missing": false, "url": "https://github.com/shrimbly/node-banana"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:05:02.127815+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:05:02.127815+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-30T04:30:20.377866+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "fc227fcf7f5cbe5532186f48c328cb736a9332ba26944e306a81edf77bc4dc16", "fetched_at": "2026-08-28T04:05:02.127815+00:00", "kind": "readme", "missing": false, "url": "https://github.com/shrimbly/node-banana"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-30T04:30:20.377866+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "fc227fcf7f5cbe5532186f48c328cb736a9332ba26944e306a81edf77bc4dc16", "fetched_at": "2026-08-28T04:05:02.127815+00:00", "kind": "readme", "missing": false, "url": "https://github.com/shrimbly/node-banana"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-30T04:30:20.377866+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "fc227fcf7f5cbe5532186f48c328cb736a9332ba26944e306a81edf77bc4dc16", "fetched_at": "2026-08-28T04:05:02.127815+00:00", "kind": "readme", "missing": false, "url": "https://github.com/shrimbly/node-banana"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-30T04:30:20.377866+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "fc227fcf7f5cbe5532186f48c328cb736a9332ba26944e306a81edf77bc4dc16", "fetched_at": "2026-08-28T04:05:02.127815+00:00", "kind": "readme", "missing": false, "url": "https://github.com/shrimbly/node-banana"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 96, "longevity": 19, "rhythm": 96}, "computed_at": "2026-09-03T02:20:16.233290+00:00", "flags": [], "formula": "round(0.45*activity + 0.35*rhythm + 0.20*longevity); archived -> min(score, 10)", "inputs": {"age_days": 273, "days_push": 27, "days_rel": 27, "gap_med": 3, "n_releases_24m": 12}, "score": 81, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}