{
  "id": "RBchEmzuY9q4H9-F3j1lW",
  "meta": {
    "templateCredsSetupCompleted": true
  },
  "name": "Generate Podcast Topic Ideas from RSS Feeds using Google Gemini AI, SerAPI, and Notion",
  "tags": [
    {
      "id": "R555PGF6MWDpCMof",
      "name": "content research",
      "createdAt": "2026-01-14T19:41:40.767Z",
      "updatedAt": "2026-01-14T19:41:40.767Z"
    },
    {
      "id": "XmhkWrcOrQWDBL8U",
      "name": "podcast",
      "createdAt": "2026-01-14T19:41:33.637Z",
      "updatedAt": "2026-01-14T19:41:33.637Z"
    },
    {
      "id": "ryry9od8OzyCAmEj",
      "name": "content marketing",
      "createdAt": "2026-01-14T19:41:36.688Z",
      "updatedAt": "2026-01-14T19:41:36.688Z"
    }
  ],
  "nodes": [
    {
      "id": "89c3592e-3f55-4700-b638-c69fe4c10b01",
      "name": "Google Gemini Chat Model",
      "type": "@n8n/n8n-nodes-langchain.lmChatGoogleGemini",
      "position": [
        800,
        160
      ],
      "parameters": {
        "options": {},
        "modelName": "models/gemini-2.5-pro"
      },
      "credentials": {
        "googlePalmApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 1
    },
    {
      "id": "c9859875-a616-45ff-a862-02926150080a",
      "name": "Create a database page",
      "type": "n8n-nodes-base.notion",
      "maxTries": 2,
      "position": [
        1472,
        -48
      ],
      "parameters": {
        "title": "AI Content Ideas For BoC Podcast",
        "simple": false,
        "options": {},
        "resource": "databasePage",
        "databaseId": {
          "__rl": true,
          "mode": "id",
          "value": "2e5ae570623380ef8f32d826eec3f589"
        },
        "propertiesUi": {
          "propertyValues": [
            {
              "key": "podcast_idea_title|title",
              "title": "={{ $json[\"output.ideas\"].podcast_idea_title }}"
            },
            {
              "key": "topical_or_contrarian|rich_text",
              "textContent": "={{ $json[\"output.ideas\"].topical_or_contrarian }}"
            },
            {
              "key": "hook|rich_text",
              "textContent": "={{ $json[\"output.ideas\"].hook }}"
            },
            {
              "key": "channels_talking|rich_text",
              "textContent": "={{ $json[\"output.ideas\"].channels_talking }}"
            },
            {
              "key": "talking_points|rich_text",
              "textContent": "={{ $json[\"output.ideas\"].talking_points }}"
            },
            {
              "key": "=rank|number",
              "numberValue": "={{ $json[\"output.ideas\"].rank }}"
            },
            {
              "key": "Timestamp|date",
              "date": "={{ $now.toISO() }}"
            },
            {
              "key": "rank|number",
              "numberValue": "={{ $json[\"output.ideas\"].rank }}"
            },
            {
              "key": "thumbnail_idea|rich_text",
              "textContent": "={{ $json[\"output.ideas\"].thumbnail_idea }}"
            }
          ]
        }
      },
      "credentials": {
        "notionApi": {
          "name": "<your credential>"
        }
      },
      "retryOnFail": true,
      "typeVersion": 2.2,
      "waitBetweenTries": 3000
    },
    {
      "id": "5bcdfc2a-dcf4-47d4-b7b9-6dec9df665f8",
      "name": "Split Out",
      "type": "n8n-nodes-base.splitOut",
      "position": [
        1264,
        -48
      ],
      "parameters": {
        "include": "allOtherFields",
        "options": {},
        "fieldToSplitOut": "=output.ideas"
      },
      "typeVersion": 1,
      "alwaysOutputData": true
    },
    {
      "id": "8cf50930-be2c-499d-bd5d-29dfe6809669",
      "name": "SerpAPI",
      "type": "@n8n/n8n-nodes-langchain.toolSerpApi",
      "position": [
        960,
        160
      ],
      "parameters": {
        "options": {
          "device": "desktop",
          "no_cache": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('Explicit_Array', ``, 'boolean') }}",
          "google_domain": "google.co.in"
        }
      },
      "credentials": {
        "serpApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 1
    },
    {
      "id": "d0c34d28-b83d-4daf-b144-031e0ab19638",
      "name": "Sticky Note",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -432,
        -640
      ],
      "parameters": {
        "width": 2112,
        "height": 992,
        "content": "## How it works\n\nThis workflow automatically fetches fresh content from specified RSS feeds daily. It filters for recent articles (last 24h), then leverages Google Gemini AI and SerAPI to generate unique podcast topic ideas, including content hooks and thumbnail ideas. Finally, it stores these insights in Notion and sends a Telegram notification. Video walkthrough: https://www.youtube.com/watch?v=IoHayi68Ckk\n\n## Setup steps\n\n1.  **Google Sheets**: Create a Google Sheet with a column containing your target YouTube channel/website RSS feed URLs.\n2.  **Credentials**: Configure credentials for Google Sheets, Google Gemini, SerAPI, Notion, and Telegram.\n3.  **Notion Database**: Create a Notion database to store podcast topic ideas. Ensure it has properties, matching the AI output.\n4.  **Workflow Adjustments**: Update the Google Sheets node to point to your sheet and the Notion node to your database ID."
      },
      "typeVersion": 1
    },
    {
      "id": "c91788c4-1b38-485d-8c07-b325dece377b",
      "name": "Send a text message",
      "type": "n8n-nodes-base.telegram",
      "position": [
        1376,
        144
      ],
      "parameters": {
        "text": "={{ $now.toFormat('DD, HH:mm') }} - Daily Podcast Content Research Completed: https://www.notion.so/2e5ae570623380ef8f32d826eec3f589?v=2e5ae5706233808089e6000cb8dd99f4 ",
        "chatId": "123456789",
        "additionalFields": {
          "appendAttribution": false
        }
      },
      "credentials": {
        "telegramApi": {
          "name": "<your credential>"
        }
      },
      "executeOnce": true,
      "typeVersion": 1.2
    },
    {
      "id": "575f124b-ee06-44bf-9f40-0d6081007243",
      "name": "Execute every 24H",
      "type": "n8n-nodes-base.scheduleTrigger",
      "position": [
        -96,
        -80
      ],
      "parameters": {
        "rule": {
          "interval": [
            {
              "triggerAtHour": 12
            }
          ]
        }
      },
      "typeVersion": 1.3
    },
    {
      "id": "3f10b653-1525-4220-88f3-ebce23f61ebc",
      "name": "Get list of RSS channels/sites",
      "type": "n8n-nodes-base.googleSheets",
      "position": [
        64,
        -80
      ],
      "parameters": {
        "options": {},
        "sheetName": {
          "__rl": true,
          "mode": "name",
          "value": "Sheet1"
        },
        "documentId": {
          "__rl": true,
          "mode": "url",
          "value": "https://docs.google.com/spreadsheets/d/1dtmXQ7EXpOE74fMyPCgu_u8heqGN7Ru7adiDpN51m-8/edit?gid=0#gid=0",
          "__regex": "https:\\/\\/(?:drive|docs)\\.google\\.com(?:\\/.*|)\\/d\\/([0-9a-zA-Z\\-_]+)(?:\\/.*|)"
        }
      },
      "credentials": {
        "googleSheetsOAuth2Api": {
          "name": "<your credential>"
        }
      },
      "retryOnFail": true,
      "typeVersion": 4.7,
      "waitBetweenTries": 2000
    },
    {
      "id": "a2d839f2-5713-4be9-a05d-8a0a42988f60",
      "name": "Loop Over Rows In Sheet",
      "type": "n8n-nodes-base.splitInBatches",
      "position": [
        224,
        -80
      ],
      "parameters": {
        "options": {}
      },
      "typeVersion": 3
    },
    {
      "id": "88f2edd0-c75d-4aa7-b60d-d15a45323998",
      "name": "Scrape RSS for each link",
      "type": "n8n-nodes-base.rssFeedRead",
      "onError": "continueErrorOutput",
      "maxTries": 2,
      "position": [
        400,
        96
      ],
      "parameters": {
        "url": "={{ $json.feed_link }}",
        "options": {}
      },
      "retryOnFail": true,
      "typeVersion": 1.2,
      "alwaysOutputData": true,
      "waitBetweenTries": 5000
    },
    {
      "id": "2ce3b84f-e3f3-4acc-81df-13bd66e0b654",
      "name": "Filter for latest content (Last 24H)",
      "type": "n8n-nodes-base.filter",
      "position": [
        416,
        -80
      ],
      "parameters": {
        "options": {},
        "conditions": {
          "options": {
            "version": 3,
            "leftValue": "",
            "caseSensitive": true,
            "typeValidation": "strict"
          },
          "combinator": "and",
          "conditions": [
            {
              "id": "50ebc448-f56e-4256-80a5-3da9afaf60d9",
              "operator": {
                "type": "dateTime",
                "operation": "after"
              },
              "leftValue": "={{ $json.published ? $json.published : $json.pubDate }}",
              "rightValue": "={{ $now.minus(24, 'hours') }}"
            },
            {
              "id": "fc8bff20-c44c-4fbd-96de-7e7831960118",
              "operator": {
                "type": "string",
                "operation": "notContains"
              },
              "leftValue": "={{ $json.link }}",
              "rightValue": "/shorts"
            }
          ]
        }
      },
      "typeVersion": 2.3
    },
    {
      "id": "faeae6a0-bc76-4123-a556-095f1f1b8e07",
      "name": "Aggregate Results",
      "type": "n8n-nodes-base.aggregate",
      "position": [
        688,
        -32
      ],
      "parameters": {
        "options": {
          "mergeLists": true
        },
        "fieldsToAggregate": {
          "fieldToAggregate": [
            {
              "renameField": true,
              "outputFieldName": "headline_list",
              "fieldToAggregate": "title"
            }
          ]
        }
      },
      "typeVersion": 1
    },
    {
      "id": "513090ff-dcc0-475c-95e1-aad89304c6de",
      "name": "AI Agent Prompt For Content Research",
      "type": "@n8n/n8n-nodes-langchain.agent",
      "position": [
        864,
        -48
      ],
      "parameters": {
        "text": "=Analyze the latest 2026 crypto headlines being produced by other channels/blogs in {{ $json.headline_list.join('\\n- ') }} and generate podcast ideas from them by using your search tools to find  'Alpha' angle for today's show.\n\nGenerate 5 podcast ideas in total and rank them (descending order) in terms of which titles should be created into a podcast episode on our channel based on potential views, engagement and topic freshness. \n\nContent idea can be topical (everyone is talking) or a contrarian view. \n\nshow me top 5 podcast ideas into a table with these columns:\nPodcast idea title\nTopical or Contrarian idea\nNames of other other channels/sites talking about the idea\nwhat's the hook for the viewers with 3 main short talking points about the episode idea\nThumbnail idea based on best practices for YouTube (explained in short 1-2 lines)\nrank  [rank 1 being strongest recommendation]\noutput content ideas as a JSON file ",
        "options": {
          "systemMessage": "you are a crypto content expert helping www.youtube.com/@baapsofcrypto podcast in generating daily podcast ideas [30 min long episodes]. \n33% of my audience is from India. \n"
        },
        "promptType": "define",
        "hasOutputParser": true
      },
      "typeVersion": 3.1
    },
    {
      "id": "4656dcbb-537c-4152-ada2-05c4c4690a93",
      "name": "Structured Output Parser - fixed JSON format",
      "type": "@n8n/n8n-nodes-langchain.outputParserStructured",
      "position": [
        1088,
        160
      ],
      "parameters": {
        "jsonSchemaExample": "{\n  \"ideas\": [\n    {\n      \"podcast_idea_title\": \"string\",\n      \"topical_or_contrarian\":\"string\",\n      \"hook\": \"string\",\n      \"channels_talking\":\"string\",\n      \"talking_points\":\"string\",\n      \"thumbnail_idea\":\"string\",\n      \"rank\": 1\n    }\n  ]\n}"
      },
      "typeVersion": 1.3
    },
    {
      "id": "e0c5b6d6-8330-4be3-9b76-64be45681a38",
      "name": "Sticky Note2",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -192,
        -224
      ],
      "parameters": {
        "color": 7,
        "width": 800,
        "height": 528,
        "content": "## 1. Gather & Filter Latest Content\nInitiates daily, fetching RSS feed URLs from Google Sheets. It then scrapes each feed and filters content to include only posts published within the last 24 hours, ensuring relevance for fresh podcast topics."
      },
      "typeVersion": 1
    },
    {
      "id": "ad1fc879-22ae-485f-94e7-30e47db36285",
      "name": "Sticky Note3",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        640,
        -224
      ],
      "parameters": {
        "color": 7,
        "width": 576,
        "height": 528,
        "content": "## 2. Generate Topics with AI\n\nAggregates filtered content and sends it to Google Gemini AI. Gemini, assisted by SerAPI for external context, generates detailed podcast topic ideas, complete with content hooks and thumbnail ideas. A parser then structures these ideas into a usable JSON format."
      },
      "typeVersion": 1
    },
    {
      "id": "7fa30f14-3ea1-4954-9f5a-8644f32fbf9f",
      "name": "Sticky Note4",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1248,
        -224
      ],
      "parameters": {
        "color": 7,
        "width": 400,
        "height": 528,
        "content": "## 3. Store Ideas & Notify\nTakes each AI-generated topic idea and creates a new page in a specified Notion database. After successful creation, a Telegram message is sent to confirm the workflow's execution and provide a link to the Notion database."
      },
      "typeVersion": 1
    }
  ],
  "active": true,
  "settings": {
    "availableInMCP": false,
    "executionOrder": "v1"
  },
  "versionId": "0ed56506-df22-47f9-970a-23834db65445",
  "connections": {
    "SerpAPI": {
      "ai_tool": [
        [
          {
            "node": "AI Agent Prompt For Content Research",
            "type": "ai_tool",
            "index": 0
          }
        ]
      ]
    },
    "Split Out": {
      "main": [
        [
          {
            "node": "Create a database page",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Aggregate Results": {
      "main": [
        [
          {
            "node": "AI Agent Prompt For Content Research",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Execute every 24H": {
      "main": [
        [
          {
            "node": "Get list of RSS channels/sites",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Create a database page": {
      "main": [
        [
          {
            "node": "Send a text message",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Loop Over Rows In Sheet": {
      "main": [
        [
          {
            "node": "Filter for latest content (Last 24H)",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "Scrape RSS for each link",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Google Gemini Chat Model": {
      "ai_languageModel": [
        [
          {
            "node": "AI Agent Prompt For Content Research",
            "type": "ai_languageModel",
            "index": 0
          }
        ]
      ]
    },
    "Scrape RSS for each link": {
      "main": [
        [
          {
            "node": "Loop Over Rows In Sheet",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Get list of RSS channels/sites": {
      "main": [
        [
          {
            "node": "Loop Over Rows In Sheet",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "AI Agent Prompt For Content Research": {
      "main": [
        [
          {
            "node": "Split Out",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Filter for latest content (Last 24H)": {
      "main": [
        [
          {
            "node": "Aggregate Results",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Structured Output Parser - fixed JSON format": {
      "ai_outputParser": [
        [
          {
            "node": "AI Agent Prompt For Content Research",
            "type": "ai_outputParser",
            "index": 0
          }
        ]
      ]
    }
  }
}