AutomationFlowsData & Sheets › The Scout Workflow01

The Scout Workflow01

The-Scout-Workflow01. Uses airtable, loopOverItems, httpRequest, rssFeedRead. Scheduled trigger; 14 nodes.

Cron / scheduled trigger★★★★☆ complexity14 nodesAirtableLoop Over ItemsHTTP RequestRSS Feed ReadChat Llm
Data & Sheets Trigger: Cron / scheduled Nodes: 14 Complexity: ★★★★☆ Added:

This workflow follows the Airtable → HTTP Request recipe pattern — see all workflows that pair these two integrations.

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
{
  "nodes": [
    {
      "parameters": {
        "interval": "hours",
        "value": 3,
        "mode": "every",
        "hour": [
          3
        ]
      },
      "name": "Cron Trigger",
      "type": "n8n-nodes-base.cron",
      "typeVersion": 1,
      "position": [
        250,
        300
      ]
    },
    {
      "parameters": {
        "resource": "table",
        "operation": "getAll",
        "baseId": "appAm1k33bkcyaV2y",
        "tableId": "Clients",
        "authentication": "apiKey",
        "credential": "airtableApi",
        "fields": [
          "Client Name",
          "Podcasts Searches",
          "Client Profile"
        ]
      },
      "name": "Airtable (Read Clients)",
      "type": "n8n-nodes-base.airtable",
      "typeVersion": 1,
      "position": [
        500,
        300
      ]
    },
    {
      "parameters": {},
      "name": "Loop Over Clients",
      "type": "n8n-nodes-base.loopOverItems",
      "typeVersion": 1,
      "position": [
        750,
        300
      ]
    },
    {
      "parameters": {
        "authentication": "none",
        "url": "https://listen-api.listennotes.com/api/v2/search",
        "query": {
          "param": [
            {
              "name": "q",
              "value": "={{$json[\"Podcasts Searches\"]}}"
            },
            {
              "name": "type",
              "value": "podcast"
            },
            {
              "name": "offset",
              "value": "0"
            }
          ]
        },
        "headers": [
          {
            "name": "X-ListenAPI-Key",
            "value": "={{$credentials.listenNotesApi.apiKey}}"
          }
        ]
      },
      "name": "HTTP Request (Listen Notes)",
      "type": "n8n-nodes-base.httpRequest",
      "typeVersion": 1,
      "position": [
        1000,
        150
      ]
    },
    {
      "parameters": {
        "authentication": "apiKey",
        "url": "https://www.googleapis.com/youtube/v3/search",
        "query": {
          "param": [
            {
              "name": "part",
              "value": "snippet"
            },
            {
              "name": "q",
              "value": "={{$json[\"Podcasts Searches\"]}}"
            },
            {
              "name": "type",
              "value": "channel"
            },
            {
              "name": "maxResults",
              "value": "50"
            },
            {
              "name": "key",
              "value": "={{$credentials.youtubeDataApiV3.apiKey}}"
            }
          ]
        }
      },
      "name": "HTTP Request (YouTube)",
      "type": "n8n-nodes-base.httpRequest",
      "typeVersion": 1,
      "position": [
        1000,
        300
      ]
    },
    {
      "parameters": {
        "url": "https://example.com/rssfeed"
      },
      "name": "RSS Feed Reader",
      "type": "n8n-nodes-base.rssFeedRead",
      "typeVersion": 1,
      "position": [
        1000,
        450
      ]
    },
    {
      "parameters": {},
      "name": "Merge Data Sources",
      "type": "n8n-nodes-base.merge",
      "typeVersion": 1,
      "position": [
        1250,
        300
      ]
    },
    {
      "parameters": {
        "mode": "merge",
        "values": {
          "string": [
            {
              "name": "podcastName",
              "value": "={{$json.title || $json.snippet.title}}"
            },
            {
              "name": "podcastDescription",
              "value": "={{$json.description || $json.snippet.description}}"
            },
            {
              "name": "podcastUrl",
              "value": "={{$json.website || $json.url || $json.link || $json.id}}"
            }
          ]
        }
      },
      "name": "Set Podcast Data",
      "type": "n8n-nodes-base.set",
      "typeVersion": 1,
      "position": [
        1500,
        300
      ]
    },
    {
      "parameters": {
        "resource": "table",
        "operation": "getAll",
        "baseId": "appAm1k33bkcyaV2y",
        "tableId": "Podcasts",
        "authentication": "apiKey",
        "credential": "airtableApi",
        "fields": [
          "Podcast Name",
          "Podcast URL"
        ]
      },
      "name": "Airtable (Read Existing Podcasts)",
      "type": "n8n-nodes-base.airtable",
      "typeVersion": 1,
      "position": [
        1750,
        300
      ]
    },
    {
      "parameters": {
        "operation": "findUniqueInSource1",
        "source1Key": "podcastUrl",
        "source2Key": "Podcast URL"
      },
      "name": "Compare Datasets",
      "type": "n8n-nodes-base.compareDatasets",
      "typeVersion": 1,
      "position": [
        2000,
        300
      ]
    },
    {
      "parameters": {
        "batchSize": 10
      },
      "name": "Split in Batches",
      "type": "n8n-nodes-base.splitInBatches",
      "typeVersion": 1,
      "position": [
        2250,
        300
      ]
    },
    {
      "parameters": {
        "model": "gemini-pro",
        "instruction": "You are a PR Scout for my client {{ $json[\"Client Name\"] }}, a {{ $json[\"Client Profile\"] }}. Based on the following podcast data {Podcast Name: {{ $json.podcastName }}, Description: {{ $json.podcastDescription }}, Podcast URL: {{ $json.podcastUrl }}, Latest Episodes: {{ $json.latestEpisodes || 'N/A' }}}, does this podcast align with their goal of reaching [Target Audience]? Score its relevance from 1-10 and provide a one-sentence \u2018AI justification\u2019. Output clean JSON: {relevance_score: 8, justification: 'Focuses on B2B SaaS founders, matching the target audience.'}\n\nRules for Relevance Scoring:\nScore 9-10: Perfect fit. High audience overlap, host aligns with client's expertise, recent episodes highly relevant.\nScore 7-8: Strong fit. Good audience, some relevant topics, potential for alignment with specific angles.\nScore 5-6: Moderate fit. General relevance, but may require a very specific pitch angle.\nScore <5: Low fit. Not suitable, clearly explain why (e.g., wrong audience, irrelevant topics, low engagement).\n\nInformation to Prioritize: Focus on topic depth, audience demographics, host's interviewing style, and recent guest profiles. Consider the 'thought leadership' aspect.",
        "jsonParameters": true
      },
      "name": "LLM (Scout Brain)",
      "type": "n8n-nodes-base.chatLlm",
      "typeVersion": 1,
      "position": [
        2500,
        300
      ]
    },
    {
      "parameters": {
        "conditions": {
          "value1": "={{$json.relevance_score}}",
          "value2": "7",
          "type": "number",
          "function": "greaterThan"
        }
      },
      "name": "IF (Relevance Score > 7)",
      "type": "n8n-nodes-base.if",
      "typeVersion": 1,
      "position": [
        2750,
        300
      ]
    },
    {
      "parameters": {
        "resource": "table",
        "operation": "create",
        "baseId": "appAm1k33bkcyaV2y",
        "tableId": "Podcasts",
        "authentication": "apiKey",
        "credential": "airtableApi",
        "data": {
          "record": [
            {
              "fields": {
                "Podcast Name": "={{$json.podcastName}}",
                "Podcast URL": "={{$json.podcastUrl}}",
                "Relevance Score [Rating 1-10]": "={{$json.relevance_score}}",
                "AI Justification": "={{$json.justification}}",
                "Status": "Discovered"
              }
            }
          ]
        }
      },
      "name": "Airtable (Create Qualified)",
      "type": "n8n-nodes-base.airtable",
      "typeVersion": 1,
      "position": [
        3000,
        300
      ]
    }
  ],
  "connections": {
    "Cron Trigger": {
      "main": [
        [
          {
            "node": "Airtable (Read Clients)",
            "index": 0
          }
        ]
      ]
    },
    "Airtable (Read Clients)": {
      "main": [
        [
          {
            "node": "Loop Over Clients",
            "index": 0
          }
        ]
      ]
    },
    "Loop Over Clients": {
      "main": [
        [
          {
            "node": "HTTP Request (Listen Notes)",
            "index": 0
          },
          {
            "node": "HTTP Request (YouTube)",
            "index": 0
          },
          {
            "node": "RSS Feed Reader",
            "index": 0
          }
        ]
      ]
    },
    "HTTP Request (Listen Notes)": {
      "main": [
        [
          {
            "node": "Merge Data Sources",
            "index": 0
          }
        ]
      ]
    },
    "HTTP Request (YouTube)": {
      "main": [
        [
          {
            "node": "Merge Data Sources",
            "index": 0
          }
        ]
      ]
    },
    "RSS Feed Reader": {
      "main": [
        [
          {
            "node": "Merge Data Sources",
            "index": 0
          }
        ]
      ]
    },
    "Merge Data Sources": {
      "main": [
        [
          {
            "node": "Set Podcast Data",
            "index": 0
          }
        ]
      ]
    },
    "Set Podcast Data": {
      "main": [
        [
          {
            "node": "Airtable (Read Existing Podcasts)",
            "index": 0
          }
        ]
      ]
    },
    "Airtable (Read Existing Podcasts)": {
      "main": [
        [
          {
            "node": "Compare Datasets",
            "index": 0
          }
        ]
      ]
    },
    "Compare Datasets": {
      "main": [
        [
          {
            "node": "Split in Batches",
            "index": 0
          }
        ]
      ]
    },
    "LLM (Scout Brain)": {
      "main": [
        [
          {
            "node": "IF (Relevance Score > 7)",
            "index": 0
          }
        ]
      ]
    },
    "Split in Batches": {
      "main": [
        [
          {
            "node": "LLM (Scout Brain)",
            "index": 0
          }
        ]
      ]
    },
    "IF (Relevance Score > 7)": {
      "main": [
        [
          {
            "node": "Airtable (Create Qualified)",
            "index": 0
          }
        ]
      ]
    }
  },
  "active": false,
  "nodesPositions": {
    "Cron Trigger": [
      250,
      300
    ],
    "Airtable (Read Clients)": [
      500,
      300
    ],
    "Loop Over Clients": [
      750,
      300
    ],
    "HTTP Request (Listen Notes)": [
      1000,
      150
    ],
    "HTTP Request (YouTube)": [
      1000,
      300
    ],
    "RSS Feed Reader": [
      1000,
      450
    ],
    "Merge Data Sources": [
      1250,
      300
    ],
    "Set Podcast Data": [
      1500,
      300
    ],
    "Airtable (Read Existing Podcasts)": [
      1750,
      300
    ],
    "Compare Datasets": [
      2000,
      300
    ],
    "Split in Batches": [
      2250,
      300
    ],
    "LLM (Scout Brain)": [
      2500,
      300
    ],
    "IF (Relevance Score > 7)": [
      2750,
      300
    ],
    "Airtable (Create Qualified)": [
      3000,
      300
    ]
  },
  "flowName": "Workflow 1: The Scout (Opportunity Sourcing & Qualification)"
}
Pro

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

About this workflow

The-Scout-Workflow01. Uses airtable, loopOverItems, httpRequest, rssFeedRead. Scheduled trigger; 14 nodes.

Source: https://gist.github.com/WhitneyFloat/adbc902a5159d0a86ca268160d9a46cd — original creator credit. Request a take-down →

More Data & Sheets workflows → · Browse all categories →

Related workflows

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

Data & Sheets

The-Scout-Workflow. Uses airtable, loopOverItems, httpRequest, rssFeedRead. Scheduled trigger; 14 nodes.

Airtable, Loop Over Items, HTTP Request +2
Data & Sheets

Collects crypto and/or stock market headlines from multiple sources: CoinDesk, CoinTelegraph, Google News, and X (via an RSS proxy). Normalizes all items into a consistent structure with fields like ,

RSS Feed Read, HTTP Request
Data & Sheets

I prepared a detailed guide that showed the whole process of integrating the Binance API and storing data in Airtable to manage funding statements associated with tokens in a wallet.

Crypto, HTTP Request, Airtable
Data & Sheets

Stop wasting hours on manual dialing and listening to ringtones. This workflow transforms your Airtable into a high-velocity AI Call Center using Vapi AI**.

Airtable, HTTP Request
Data & Sheets

Reel-Analysis-Of-Favourite-Content-Creator. Uses httpRequest, airtable. Scheduled trigger; 26 nodes.

HTTP Request, Airtable