← All workflows
AI Marketing Lab · Credentials Reference

Every credential,
in one place.

A single reference page for the external accounts and API keys the n8n Workflows for Marketing library uses. Pick the services your workflow needs, follow the numbered steps, and paste the resulting values into n8n when the workflow asks for them.

OpenAI Google OAuth Buffer Telegram Gemini / Veo Linking in n8n
00
Before you start

How this page is organised.

Each service below has its own section with step-by-step setup, what to copy at the end, and which workflows in the library use it. All services listed have a free tier sufficient for the coursework.

🔐

Golden rule — keep credentials off the canvas

Never paste API keys or tokens directly into an HTTP Request node's body or a sticky note. Always store them in n8n's Credentials panel (instructions in §05 below). When you export a workflow to share, n8n automatically strips credential values — as long as they're stored in the credentials panel.

🤖
Content generation

OpenAI

Used by every workflow that drafts copy with an LLM. Pay-as-you-go billing, a few cents per post.

🔷
Google services

YouTube · Sheets · Blogger

All three run on the same Google Cloud project. You'll set up one OAuth client and authorise three APIs.

🔀
Social publishing

Buffer

Queues and schedules posts to X, LinkedIn, Instagram and more from a single GraphQL API.

01
OpenAI API

The LLM key.

OpenAI's API powers the AI Agent node in every workflow that drafts blog posts, emails, or social copy. Creating a key takes five minutes.

01
Create an account

Sign up at platform.openai.com/signup. A phone number is required for verification.

02
Add billing

Settings → Billing → Payment methods → add a card. Then Billing → Overview → add at least $5 of credit. The free trial is gone for new accounts; pay-as-you-go is the only option.

03
Create an API key

Dashboard → API keys → Create new secret key. Name it "n8n marketing lab". Copy the value starting with sk- immediately — you won't be able to see it again.

04
Set a spend limit

Billing → Limits → set a hard limit of $10/month. Prevents runaway costs if a prompt loops accidentally.

⚠️

What to paste into n8n

In n8n → Credentials → Create New → OpenAI → paste the key starting with sk-…. Used in nodes: OpenAI Chat Model, Embeddings OpenAI, or the OpenAI standalone node.

02
Google APIs

One project, three APIs, one OAuth client.

YouTube, Sheets and Blogger all run on Google Cloud. The trick is that you don't need three separate projects — one project with three APIs enabled and one OAuth 2.0 client works for all of them.

Step 1 — Create a Google Cloud project

01
Open the Cloud Console

Go to console.cloud.google.com with the Google account that owns your YouTube channel, spreadsheets and blog.

02
Create a project

Project dropdown (top-left) → New Project. Name: "AI Marketing Lab". Location: "No organisation" is fine. Wait ~30 seconds until it's provisioned.

03
Enable the three APIs

Navigation menu → APIs & Services → Library. Search and click Enable for each: YouTube Data API v3, Google Sheets API, Blogger API v3.

04
Configure the OAuth consent screen

APIs & Services → OAuth consent screen. User type: External. App name: "AI Marketing Lab". Support email: your email. Under Test users, add your own Google email — required while the app stays in Testing mode.

Step 2 — Create the OAuth 2.0 client

01
Create credentials

APIs & Services → Credentials → Create Credentials → OAuth client ID. Application type: Web application. Name: "n8n OAuth client".

02
Add n8n's redirect URI

Under Authorised redirect URIs, add the one n8n shows you when you start creating any Google credential: usually https://<your-n8n-domain>/rest/oauth2-credential/callback. Copy it from n8n's credential wizard and paste it verbatim.

03
Save the client ID + secret

After creating, Google shows a Client ID and Client Secret. Download the JSON or copy both values into a password manager — you'll paste them into every Google credential you create in n8n.

04
Reuse the same client

The same Client ID + Secret work for YouTube, Sheets and Blogger credentials in n8n. You only need to do this step once.

YouTube-specific setup

Y1📺

YouTube OAuth2 credential in n8n

Used in: Workflow 01 (YouTube node)

In n8n → Credentials → Create New → YouTube OAuth2 API. Paste the Client ID + Secret from §02 Step 2. Click Sign in with Google — a popup asks you to grant access to YouTube. Accept. n8n stores the refresh token and uses it automatically on every API call.

Scopeyoutube.readonly (or broader if you later need uploads)
Watch outYouTube Data API has a daily quota of 10 000 units. One search ≈ 100 units — plenty for classroom use.

Google Sheets-specific setup

S1📊

Google Sheets OAuth2 credential in n8n

Used in: Workflow 01 (three Google Sheets nodes)

Same pattern: n8n → Credentials → Create New → Google Sheets OAuth2 API. Paste the Client ID + Secret, sign in. The consent screen will ask for permission to "See, edit, create, and delete your spreadsheets". Accept.

TemplateUse the reference spreadsheet for Workflow 01 as a starting point — it already has the two tabs (youtube and google trends) with the right column names. Open → Make a copy, then copy the new sheet's URL.
Spreadsheet IDFrom your copy's URL, grab the long string between /d/ and /edit. Paste it as REPLACE_WITH_GOOGLE_SHEETS_DOC_ID in any workflow's Vars or Sheets node.

Blogger-specific setup

B1📝

Blogger — generic OAuth2 credential in n8n

Used in: Workflow 01 (HTTP Request node posting to Blogger)

Blogger doesn't have a dedicated n8n node, so we use the generic OAuth2 credential. In n8n → Credentials → Create New → OAuth2 API. Grant Type: Authorization Code. Authorization URL: https://accounts.google.com/o/oauth2/v2/auth. Access Token URL: https://oauth2.googleapis.com/token. Scope: https://www.googleapis.com/auth/blogger. Client ID + Secret: the same pair from §02 Step 2.

Blog IDFrom your Blogger dashboard URL — a long number like 4123456789012345678. Paste as REPLACE_WITH_BLOGGER_BLOG_ID.
Live exampleThe reference blog for Workflow 01 is lovepoemscreator.blogspot.com — see what the workflow actually publishes.
Watch outThe HTTP Request node's URL has the blog ID baked in: /blogs/{BLOG_ID}/posts. Swap it before running.
03
Buffer

The social-publishing layer.

Buffer lets you publish to X, LinkedIn, Instagram, Facebook, TikTok and more from one API. We use the GraphQL API with a personal access token.

01
Create a Buffer account

Sign up at buffer.com. The free plan lets you connect three social channels — enough for the coursework.

02
Connect your X account

In Buffer → Channels → Connect a channel. Pick X (Twitter) and complete the OAuth flow. Repeat for any other platform you want to publish to.

03
Generate an access token

Click your avatar (top-right) → Developers → Create access token. Name it "n8n marketing lab". Copy the token — it starts with a random string.

04
Copy each channel ID

Click a channel in Buffer's sidebar. The URL becomes something like buffer.com/publishing/queues/6123abc…. The value after queues/ is the channel ID. Copy it for every channel you want to target.

⚠️

What to paste into n8n

There's no dedicated Buffer node in n8n. The workflow uses an HTTP Request node with the token in the Authorization: Bearer <token> header and the channel ID inside the GraphQL mutation body. Paste the token as REPLACE_WITH_BUFFER_ACCESS_TOKEN and the channel ID as REPLACE_WITH_BUFFER_CHANNEL_ID inside the workflow's HTTP Request node.

💡

Free alternative

If you don't want to use Buffer, the same workflow works with Zapier (webhook trigger) or direct platform APIs. For X specifically, you can swap the Buffer HTTP Request node for an X OAuth2 credential and post via api.x.com/2/tweets.

03b
Telegram

A free, zero-setup chat interface.

Telegram bots are the fastest way to give a non-technical user a trigger into n8n. Creating one takes under a minute and the API is free.

01
Chat with BotFather

Open @BotFather in Telegram. Send /newbot. Pick a display name and a username ending in bot (e.g. iema_lab_bot).

02
Copy the token

BotFather replies with an HTTP API token — a string like 1234567:AAE-…. This is both your credential and your bot's identity. Anyone with it can post as your bot — treat it like a password.

03
Initiate a conversation

Open your own bot in Telegram (search the username) and send /start. Bots can only talk to users who've messaged them first — this step opens the channel.

04
Create the n8n credential

In n8n → Credentials → Create New → Telegram API. Paste the token. Click Test — if it works, the credential turns green.

⚠️

What to paste into n8n

Used in: Workflow 02 (Telegram trigger + three Telegram sendPhoto / sendVideo / sendMessage nodes). The Telegram API credential is reused across all of them. In Workflow 02 the token is also stored in a Set-node field called YOUR_BOT_TOKEN so HTTP Request nodes can build file URLs with it — paste it there too.

🔒

Telegram file URLs leak the bot token

Telegram's file CDN URLs embed your bot token in the path (api.telegram.org/file/bot{TOKEN}/…). Workflow 02 uses these URLs to pass media to Buffer — they work, but never share an exported workflow JSON that includes a real token. Rotate it via BotFather (/revoke) if you suspect exposure.

03c
Google AI Studio (Gemini)

NanoBanana + Veo 3.1, one key.

A single API key from Google AI Studio covers both the Gemini 2.5 Flash Image model (nicknamed "NanoBanana") and Google Veo 3.1, the video generation model. Veo requires a paid tier.

01
Open AI Studio

Sign in at aistudio.google.com with a Google account. Accept the terms.

02
Create an API key

Left sidebar → Get API key → Create API key. Pick or create a Google Cloud project to link it to. Copy the key — starts with AIza….

03
Enable billing on the project

In Google Cloud Console → Billing → link a billing account to the project. Veo 3.1 is not in the free tier; without billing the Veo call will 403.

04
Set a spend cap

Cloud Console → Billing → Budgets & alerts → Create budget. Monthly amount: whatever you're comfortable losing if a loop misfires. Alerts at 50% / 90% / 100%.

💰

Veo is the expensive bit

Typical cost per 8-second Veo 3.1 clip: ~$3.20. Switch to veo-3.1-fast-generate-preview (already the default in Workflow 02) for ~$1.60 per clip. NanoBanana image generation is cheap at ~$0.04 each.

⚠️

What to paste into n8n

Used in: Workflow 02 — three HTTP Request nodes (NanoBanana generate, Veo Generation, Check Veo Status) send the key in the x-goog-api-key header. Workflow 02 stores it once in the Set node as gemini_api_key and every downstream HTTP Request references it via {{ $('Set: Bot Token (Placeholder)').first().json.gemini_api_key }}.

04
n8n credentials panel

Linking everything inside n8n.

Once you have all the tokens and client IDs, n8n's Credentials panel is where they live. From there, every node that needs a credential can reuse it — one source of truth.

01
Open the credentials panel

In n8n's left sidebar → Credentials. You'll see a list of credentials you've already created.

02
Create new credentials

Click Create New. n8n's picker shows dozens of credential types. Search for the service (e.g. "YouTube OAuth2 API") and follow the inline form.

03
Test before saving

Every credential form has a Test button (for non-OAuth) or a Sign in with … button (for OAuth). If the test fails, fix it here — it'll fail the same way at runtime.

04
Link from nodes

Open any node that needs auth → Credential to connect with dropdown → pick the one you just created. The same credential can be reused by dozens of nodes.

Best practice — name credentials consistently

Prefix every credential with the project or client: "Lab · YouTube OAuth2", "Lab · Google Sheets OAuth2", "Lab · OpenAI". When you work on multiple student projects in the same n8n instance, this keeps them from colliding.

⚠️

Rotating a leaked credential

If you accidentally push a credential to GitHub, or paste it in a screenshot on Slack — assume it's compromised. Rotate it immediately: delete the key in the provider's dashboard, create a new one, and update the credential value in n8n. Every workflow using the credential continues to work because the credential name didn't change.

05
Quick checklist

By workflow — what you need to import.

Two cheatsheets, one per workflow, for the moment before you click Import from File.

🤖

OpenAI API key

Starts with sk-

Stored as an n8n OpenAI credential. No placeholder to replace in the JSON — it lives only in the credential.

🔷

Google OAuth client

One Client ID + Secret, reused across three credentials

Three n8n credentials created from the same pair: YouTube OAuth2 API, Google Sheets OAuth2 API, generic OAuth2 API (for Blogger with scope https://www.googleapis.com/auth/blogger).

📊

Google Sheets document ID

Placeholder: REPLACE_WITH_GOOGLE_SHEETS_DOC_ID

The long string in your sheet's URL, between /d/ and /edit. Appears in three places in the workflow. Fastest way to get one: make a copy of the reference template — the two tabs and column schema come pre-configured.

📈

Google Trends tab gid

Placeholder: REPLACE_WITH_TRENDS_SHEET_GID

The numeric ID of the second tab in your spreadsheet. Found in the URL after #gid= when you click the google trends tab.

📝

Blogger blog ID

Placeholder: REPLACE_WITH_BLOGGER_BLOG_ID

A 19-digit number from your Blogger dashboard URL. Appears in the HTTP Request node's URL path. See the reference blog published by Workflow 01: lovepoemscreator.blogspot.com.

🔀

Buffer access token + channel ID

Placeholders: REPLACE_WITH_BUFFER_ACCESS_TOKEN, REPLACE_WITH_BUFFER_CHANNEL_ID

Token goes in the Authorization: Bearer … header. Channel ID goes in the GraphQL mutation body as channelId.

Workflow 02 · AI Viral Video — NanoBanana × Veo 3.1 × Buffer

💬

Telegram bot token

Placeholder: REPLACE_WITH_TELEGRAM_BOT_TOKEN. n8n credential: Telegram API.

Stored both as an n8n Telegram API credential (used by trigger + sendPhoto/Video/Message nodes) and as a plain string YOUR_BOT_TOKEN inside the Set node — because the HTTP Request nodes that build file URLs need the raw token.

🟠

Gemini API key (AI Studio)

Placeholder: REPLACE_WITH_GEMINI_API_KEY

Paid tier required for Veo. Stored as gemini_api_key in the Set node; referenced by the NanoBanana generate, Veo Generation, Check Veo Status, and Download Video nodes.

🤖

OpenAI API key

n8n credential: OpenAI API (reused from Workflow 01)

Used by GPT-4o Vision (image analysis) and GPT-4.1-mini (both agents). No placeholder in the JSON — credential only.

🔀

Buffer access token + channel ID + organization ID

Placeholders: REPLACE_WITH_BUFFER_ACCESS_TOKEN, REPLACE_WITH_BUFFER_CHANNEL_ID_X, REPLACE_WITH_BUFFER_ORGANIZATION_ID

Token and channel ID work the same as Workflow 01. Organization ID is extra here — grab it from Buffer's URL when you're on the org's home page.

🐟

FAL API key (optional, leftover)

Placeholder: REPLACE_WITH_FAL_API_KEY

The Set node carries a fal_api_key field that is not referenced by any live node in the current workflow. Leave the placeholder as-is, or delete the field if you're sure you won't use it.

💡

When a new workflow joins the library

This page grows with each new workflow. If a workflow uses a service not listed above, a new section appears here with the same structure: steps, what to copy, where to paste.