Problem
As a growth marketer, I wanted a reliable daily feed of the latest growth hacking and marketing content from LinkedIn – without doomscrolling for hours. Most tools were noisy, didn’t filter for relevance, or were just plain expensive.
Solution
So I built my own growth content radar using Google Apps Script + SERP API. It automatically fetches fresh posts from LinkedIn every day, filters them by topic, and sends them to me via Google Chat. Zero manual effort.
Implementation
-
Tech Stack: Google Apps Script + SERP API + Google Chat Webhook.
-
I used SERP API to search the internet for different keywords (like “growth hack”, “CRO”, “SEO”, etc.) using
site:linkedin.com/posts
operator. -
It fetched and logged the top 10 organic results to a Google Sheet.
// Apps Script code for finding Linkedin Posts
const SERP_API_KEY = ‘API_KEY’;
// Monday Keywords
function searchAndAddToSheet() {
// Define the queries.
const queries = [
‘site:linkedin.com/posts/ “growth hack”‘
];const sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName(“All”);
if (!sheet) {
throw new Error(‘Sheet not found.’);
}
sheet.clear();sheet.appendRow([‘Title’, ‘Link’, ‘Snippet’]);
queries.forEach(query => {
const url = `https://serpapi.com/search.json?q=${encodeURIComponent(query)}&engine=google&api_key=${SERP_API_KEY}&num=10&lr=lang_en&tbs=qdr:d5`;
try {
const response = UrlFetchApp.fetch(url);
const json = JSON.parse(response.getContentText());if (json.organic_results && json.organic_results.length > 0) {
json.organic_results.forEach(result => {
sheet.appendRow([
result.title || ‘No Title’,
result.link || ‘No Link’,
result.snippet || ‘No Snippet’
]);
});
} else {
sheet.appendRow([‘No results found’, ”, ”]);
}
} catch (error) {
Logger.log(`Error for query “${query}”: ${error}`);
sheet.appendRow([‘Error fetching results’, ”, ”]);
}Utilities.sleep(2000);
});
}//Similarly for tuesday, wednesday, thursday, friday, saturday, sunday.
-
Once the results were in, they were sent to a Google Chat channel in the following structure:
post title + link to my Google Chat channel.function sendLinksToChat() {
var webhookUrl = “https://chat.googleapis.com/v1/spaces/SPACE_ID/messages?key=CHAT_KEY”;var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheets = ss.getSheets();sheets.forEach(function(sheet) {
var data = sheet.getDataRange().getValues();for (var i = 1; i < data.length; i++) {
var row = data[i];
var title = row[0] || “”;
var link = row[1];
var snippet = row[2] || “”;var message = title + “: ” + link;
var payload = JSON.stringify({ text: message });var options = {
method: “post”,
contentType: “application/json”,
payload: payload
};try {
UrlFetchApp.fetch(webhookUrl, options);
Logger.log(“Sent message for row ” + (i+1) + ” in sheet ‘” + sheet.getName() + “‘”);
Utilities.sleep(1000); // Pause to avoid hitting rate limits
} catch (e) {
Logger.log(“Error sending message: ” + e.toString());
}
}
});
} - I added daily trigger for both of the code above to avoid any manual work.
Results
-
💡 Discovered 2-3 high-value posts daily with no manual effort
-
📈 Inspired multiple content ideas + experiments
-
⏱️ Saved hours every week scrolling
-
🔔 Made growth updates part of our daily routine via Chat notifications