npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

n8n-nodes-kimi-media-router

v1.0.0

Published

n8n custom node for routing media files (audio, image, video, PDF, text) to the correct AI provider with automatic detection and unified output

Downloads

97

Readme

AI Media Gateway Router

A production-ready custom n8n node that automatically detects input media types and routes them to the correct AI provider with a unified output schema.

Features

  • Automatic Media Detection: Detects audio, image, video, PDF, documents, and text via MIME types, file extensions, and magic bytes
  • Smart Provider Routing: Automatically selects the best AI provider for each task type
  • Audio Transcription: Supports OpenAI, Groq, Deepgram, and AssemblyAI (explicitly excludes OpenRouter for audio)
  • Image Analysis: Vision-capable models via OpenRouter, OpenAI, Gemini, and Google Vision
  • OCR: Google Vision, Azure Document Intelligence, Gemini, and OpenAI vision models
  • PDF Processing: Local text extraction with OCR fallback via Azure, Google Vision, or Gemini
  • Video Processing: ffmpeg audio extraction + transcription, with optional frame sampling and visual analysis
  • Unified Output Schema: Consistent JSON output regardless of provider or media type
  • Post-Processing: Optional summarization, translation, and structured JSON extraction

Supported Providers & Capabilities

| Provider | Text | Image | Audio Transcription | Video | PDF | OCR | |----------|------|-------|---------------------|-------|-----|-----| | OpenRouter | Yes | Yes (vision) | No | No | No | No | | OpenAI | Yes | Yes (vision) | Yes | No | Limited | Vision-based | | Groq | Yes | Model-dependent | Yes | No | No | No | | Gemini | Yes | Yes | Model-dependent | Yes | Yes | Vision-based | | Deepgram | No | No | Yes | No | No | No | | AssemblyAI | No | No | Yes | No | No | No | | Google Vision | No | Yes | No | No | Yes | Yes | | Azure Document Intelligence | No | No | No | No | Yes | Yes | | Local Parser | No | No | No | No | Yes | No | | Local ffmpeg | No | No | No | Yes | No | No |

Installation

Method 1: npm (Recommended)

npm install ai-media-gateway-router

Add to your n8n ~/.n8n/config:

{
  "nodes": {
    "include": ["ai-media-gateway-router"]
  }
}

Method 2: Manual Build

  1. Clone or copy this repository to your n8n custom nodes directory:
cd ~/.n8n/custom/
git clone <repository-url> ai-media-gateway-router
cd ai-media-gateway-router
  1. Install dependencies and build:
npm install
npm run build
  1. Restart n8n. The node will appear as AI Media Gateway Router in the node panel.

Requirements

  • n8n >= 1.48.0
  • Node.js >= 18
  • ffmpeg (optional, required for video processing)

Credential Setup

Configure credentials in n8n for each provider you want to use:

OpenRouter

OpenAI

Groq

Gemini

Deepgram

AssemblyAI

Google Vision

  • API Key: Google Cloud API key with Vision API enabled

Azure Document Intelligence

  • Endpoint: Your Azure Document Intelligence endpoint URL
  • API Key: Your Azure API key

Usage Examples

Example 1: Audio to Text using OpenAI

  1. Add a Read Binary Files node to load an audio file (MP3, WAV, etc.)
  2. Add AI Media Gateway Router node:
    • Input Source: Binary Data
    • Binary Property Name: data
    • Task Mode: Audio Transcription
    • Provider: OpenAI
    • Model: gpt-4o-mini-transcribe (or whisper-1)
    • Language: en (or auto)
    • Output Format: json (or text, srt, vtt, verboseJson)
  3. Connect OpenAI API credential
  4. Execute - output will be unified JSON with text, segments, and timestamps

Example 2: Audio to Text using Groq (Faster)

  1. Add a Read Binary Files node
  2. Add AI Media Gateway Router:
    • Input Source: Binary Data
    • Binary Property Name: data
    • Task Mode: Audio Transcription
    • Provider: Groq
    • Model: whisper-large-v3-turbo
    • Language: auto
  3. Connect Groq API credential

Example 3: Image Analysis using OpenRouter Vision Model

  1. Add a Read Binary Files node to load an image
  2. Add AI Media Gateway Router:
    • Input Source: Binary Data
    • Binary Property Name: data
    • Task Mode: Image Analysis
    • Provider: OpenRouter
    • Model: anthropic/claude-3.5-sonnet
    • User Instructions: "Describe the objects and scene in this image"
  3. Connect OpenRouter API credential

Example 4: PDF Extraction then Summary using OpenRouter

  1. Add a Read Binary Files node to load a PDF
  2. Add AI Media Gateway Router:
    • Input Source: Binary Data
    • Binary Property Name: data
    • Task Mode: PDF Extraction
    • Provider: Auto
    • Advanced Options:
      • Enable OCR Fallback: true
      • Enable Summarization: true
      • Enable Structured Extraction: true
  3. The node will:
    • Extract text locally
    • Fall back to OCR if scanned
    • Send extracted text to OpenRouter for summarization
    • Return structured data extraction

Example 5: Video Transcription using ffmpeg + Groq Whisper

  1. Add a Read Binary Files node to load a video (MP4, MOV, etc.)
  2. Add AI Media Gateway Router:
    • Input Source: Binary Data
    • Binary Property Name: data
    • Task Mode: Video Transcription
    • Provider: Groq
    • Model: whisper-large-v3-turbo
    • Output Format: srt
    • Advanced Options:
      • Enable Timestamps: true
      • Enable Speaker Diarization: true
  3. The node will:
    • Extract audio using ffmpeg
    • Transcribe with Groq Whisper
    • Return SRT-formatted output with speaker labels

Example 6: Video Analysis with Frame Sampling

  1. Add a Read Binary Files node to load a video
  2. Add AI Media Gateway Router:
    • Input Source: Binary Data
    • Binary Property Name: data
    • Task Mode: Video Analysis
    • Provider: OpenRouter
    • Model: anthropic/claude-3.5-sonnet
    • User Instructions: "Analyze this video content for key events and actions"
    • Advanced Options:
      • Enable Frame Sampling: true
      • Number of Video Frames: 8
  3. The node will:
    • Extract audio and transcribe
    • Sample 8 frames from the video
    • Send frames to vision model for analysis
    • Combine transcript + visual analysis

Output Schema

Success Response

{
  "success": true,
  "mediaType": "audio | image | video | pdf | document | text | unknown",
  "task": "audioTranscription | imageAnalysis | ocr | pdfExtraction | videoAnalysis | textAnalysis",
  "provider": "openai | groq | deepgram | assemblyai | openrouter | gemini | googleVision | azureDocumentIntelligence",
  "model": "gpt-4o-mini-transcribe | whisper-large-v3-turbo | ...",
  "language": "en",
  "text": "Main extracted or generated text",
  "summary": "Optional summary (if enabled)",
  "segments": [
    {
      "start": 0.0,
      "end": 5.2,
      "text": "Segment text",
      "speaker": "A"
    }
  ],
  "visualAnalysis": {
    "description": "Scene description",
    "objects": ["object1", "object2"],
    "scene": "Indoor/Outdoor scene",
    "ocrText": "Extracted text from image"
  },
  "document": {
    "pages": [{ "pageNumber": 1, "text": "Page text" }],
    "tables": [{ "headers": ["Col1"], "rows": [["Val1"]] }],
    "fields": [{ "name": "Field1", "value": "Value1" }]
  },
  "metadata": {
    "fileName": "file.mp3",
    "mimeType": "audio/mpeg",
    "fileSize": 123456,
    "duration": 120.5
  },
  "warnings": [],
  "rawResponse": {}
}

Error Response

{
  "success": false,
  "error": {
    "message": "Error description",
    "code": "ERROR_CODE",
    "provider": "providerName",
    "task": "taskName",
    "suggestedFix": "How to fix this error",
    "recommendedProviders": ["Provider1", "Provider2"],
    "recommendedModels": ["model1", "model2"]
  }
}

Provider-Specific Notes

OpenRouter

  • Used for: text analysis, image understanding, summarization, classification, extraction, JSON generation
  • NOT used for: audio transcription (/audio/transcriptions endpoint is explicitly blocked)
  • Supports vision-capable models for image and video frame analysis
  • Uses OpenAI-compatible chat completions API

OpenAI

  • Audio transcription: gpt-4o-mini-transcribe, gpt-4o-transcribe, whisper-1
  • Image analysis: gpt-4o, gpt-4o-mini (vision)
  • Text analysis: All GPT models

Groq

  • Audio transcription: whisper-large-v3, whisper-large-v3-turbo (very fast)
  • Text analysis: llama-3.3-70b-versatile
  • Does NOT support image analysis

Gemini

  • Unique capability: Direct video input (no ffmpeg needed)
  • Supports PDF input directly
  • Models: gemini-2.0-flash, gemini-1.5-pro, gemini-2.5-pro

Deepgram

  • Audio transcription only
  • Features: Speaker diarization, smart formatting, language detection
  • Models: nova-2, nova, enhanced, whisper

AssemblyAI

  • Audio transcription only
  • Features: Speaker labels, summarization, sentiment analysis
  • Async API with polling

Google Vision

  • OCR and image analysis
  • Free tier available
  • Supports PDF text detection (page by page)

Azure Document Intelligence

  • OCR and document analysis
  • Supports: prebuilt-read, prebuilt-layout, prebuilt-document
  • Enterprise-grade document understanding

Important Rules

  1. OpenRouter does NOT support /audio/transcriptions. The node will reject this combination with a clear error message suggesting alternative providers.
  2. Audio transcription preferred order: OpenAI (gpt-4o-mini-transcribe) > Groq (whisper-large-v3-turbo) > Deepgram > AssemblyAI
  3. Video default strategy: Extract audio with ffmpeg → transcribe with audio provider. Gemini can accept direct video input.
  4. PDF strategy: Local text extraction first → OCR fallback for scanned PDFs → Text analysis with LLM

Advanced Options

| Option | Description | |--------|-------------| | Temperature | Controls randomness (0-2, default 0.2) | | Max Tokens | Maximum output length | | Enable Timestamps | Word/segment timestamps in transcription | | Enable Speaker Diarization | Identify different speakers | | Enable Frame Sampling | Extract frames from video for visual analysis | | Number of Video Frames | How many frames to sample (1-30) | | Enable OCR Fallback | Use OCR when PDF has no selectable text | | Enable Summarization | Generate summary after extraction | | Enable Translation | Translate output | | Enable Structured Extraction | Extract key-value pairs as JSON |

Troubleshooting

ffmpeg not available

Install ffmpeg on your system:

  • Ubuntu/Debian: sudo apt-get install ffmpeg
  • macOS: brew install ffmpeg
  • Windows: Download from ffmpeg.org

Missing binary data

Ensure the previous node outputs binary data with the correct property name (default: data).

Unsupported MIME type

The node supports common formats. Check the full list in the media detection source code.

API key errors

Verify your credentials are correctly configured in n8n's credential manager.

License

MIT