AutomationFlowsAI & RAG › Ripr - Gemini Validator

Ripr - Gemini Validator

RIPR - Gemini Validator. Uses httpRequest. Webhook trigger; 4 nodes.

Webhook trigger★★★★☆ complexity4 nodesHTTP Request
AI & RAG Trigger: Webhook Nodes: 4 Complexity: ★★★★☆ Added:

The workflow JSON

Copy or download the full n8n JSON below. Paste it into a new n8n workflow, add your credentials, activate. Full import guide →

Download .json
{
  "name": "RIPR - Gemini Validator",
  "nodes": [
    {
      "parameters": {
        "httpMethod": "POST",
        "path": "ripr-gemini",
        "responseMode": "responseNode",
        "options": {}
      },
      "id": "webhook-1",
      "name": "Webhook",
      "type": "n8n-nodes-base.webhook",
      "typeVersion": 2,
      "position": [
        240,
        300
      ]
    },
    {
      "parameters": {
        "method": "POST",
        "url": "=https://generativelanguage.googleapis.com/v1beta/models/gemini-2.0-flash:generateContent?key={{ $credentials.googlePalmApi.apiKey }}",
        "authentication": "predefinedCredentialType",
        "nodeCredentialType": "googlePalmApi",
        "sendBody": true,
        "specifyBody": "json",
        "jsonBody": "={\n  \"contents\": [\n    {\n      \"role\": \"user\",\n      \"parts\": [{\n        \"text\": \"You are a fact-checking validator. Given claims and sources, verify each claim independently.\\n\\nScore each dimension 1-10:\\n- accuracy: Are claims factually correct?\\n- freshness: Is information current?\\n- completeness: Are there gaps?\\n- relevance: Does it fit the audience?\\n- clarity: Is it well-structured?\\n\\nFor each claim, mark status as: VERIFIED, CONFIRMED, UNVERIFIED, CONTRADICTED, or MISLEADING.\\n\\nReturn JSON only (no markdown):\\n{\\n  \\\"validator\\\": \\\"gemini\\\",\\n  \\\"claim_validations\\\": [{\\\"claim_id\\\": \\\"C1\\\", \\\"status\\\": \\\"VERIFIED\\\", \\\"notes\\\": \\\"...\\\"}],\\n  \\\"scores\\\": {\\\"accuracy\\\": 9, \\\"freshness\\\": 8.5, \\\"completeness\\\": 9, \\\"relevance\\\": 9, \\\"clarity\\\": 9},\\n  \\\"weighted_score\\\": 8.9,\\n  \\\"feedback\\\": [{\\\"type\\\": \\\"suggestion\\\", \\\"issue\\\": \\\"...\\\", \\\"recommendation\\\": \\\"...\\\"}],\\n  \\\"verdict\\\": \\\"PASS\\\"\\n}\\n\\nClaims to validate:\\n{{ JSON.stringify($json.body) }}\"\n      }]\n    }\n  ],\n  \"generationConfig\": {\n    \"temperature\": 0.3,\n    \"responseMimeType\": \"application/json\"\n  }\n}",
        "options": {}
      },
      "id": "gemini-1",
      "name": "Gemini Validator",
      "type": "n8n-nodes-base.httpRequest",
      "typeVersion": 4.2,
      "position": [
        460,
        300
      ],
      "credentials": {
        "googlePalmApi": {
          "name": "<your credential>"
        }
      }
    },
    {
      "parameters": {
        "jsCode": "const response = $input.first().json;\nconst content = response.candidates[0].content.parts[0].text;\ntry {\n  return [{ json: JSON.parse(content) }];\n} catch (e) {\n  // Handle markdown-wrapped JSON\n  const cleaned = content.replace(/```json\\n?/g, '').replace(/```\\n?/g, '').trim();\n  return [{ json: JSON.parse(cleaned) }];\n}"
      },
      "id": "code-1",
      "name": "Parse Response",
      "type": "n8n-nodes-base.code",
      "typeVersion": 2,
      "position": [
        680,
        300
      ]
    },
    {
      "parameters": {
        "respondWith": "json",
        "responseBody": "={{ $json }}"
      },
      "id": "respond-1",
      "name": "Respond to Webhook",
      "type": "n8n-nodes-base.respondToWebhook",
      "typeVersion": 1.1,
      "position": [
        900,
        300
      ]
    }
  ],
  "connections": {
    "Webhook": {
      "main": [
        [
          {
            "node": "Gemini Validator",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Gemini Validator": {
      "main": [
        [
          {
            "node": "Parse Response",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Parse Response": {
      "main": [
        [
          {
            "node": "Respond to Webhook",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  },
  "settings": {
    "executionOrder": "v1"
  }
}

Credentials you'll need

Each integration node will prompt for credentials when you import. We strip credential IDs before publishing — you'll add your own.

Pro

For the full experience including quality scoring and batch install features for each workflow upgrade to Pro

About this workflow

RIPR - Gemini Validator. Uses httpRequest. Webhook trigger; 4 nodes.

Source: https://github.com/caprihan/openclaw-n8n-stack/blob/4b6fe46f523141863b58a54dbfc35db7f558578c/workflows/ripr-gemini-workflow.json — original creator credit. Request a take-down →

More AI & RAG workflows → · Browse all categories →

Related workflows

Workflows that share integrations, category, or trigger type with this one. All free to copy and import.

AI & RAG

This workflow automates end-to-end social media publishing powered by Late API. It generates text content with Google Gemini, creates branded visuals with Kie.ai, uploads media to Late, and publishes

HTTP Request
AI & RAG

This workflow is perfect for app developers, SaaS founders, and mobile growth teams who need constant UGC-style video ads without hiring creators or agencies. If you're spending $500+ per creator and

HTTP Request, Google Drive
AI & RAG

AI Background Generation with Nano Banana (Gemini Image). Uses httpRequest, googleDrive. Webhook trigger; 35 nodes.

HTTP Request, Google Drive
AI & RAG

This template is for developers, teams, and automation enthusiasts who want a private, PIN-protected Telegram chatbot that answers questions from their own documents — without relying on external AI A

Postgres, Telegram, HTTP Request +2
AI & RAG

Elevate your digital presence with high-fidelity cinematic video automation. This workflow orchestrates the complex, asynchronous rendering process of OpenAI Sora—transforming static product images or

HTTP Request, N8N Nodes Uploadtourl