Transcription
As somebody who has a newsletter myself, it absolutely pains me to say this, but there are way too many damn newsletters. I mean, how do you choose which one to read? What if I want to read all of them?
Well, I just built an AI automation that reads all the newsletters in a niche and converts it into a single newsletter for me. Now, instead of reading 15 newsletters every single day on a single topic, I can read just one and literally get all the information without missing a single thing. It is an absolutely epic automation and I'm constantly asked, how do you stay so tapped in on the news? Well, the process that you're about to see is the answer and it's surprisingly easy to build, too. So, let's break it down.
Okay, so the first step to get this to work is we need to create a brand new Gmail account. Now, the email address that you create, it doesn't really matter. It's not going to be public anywhere. Nobody else is really going to see it. So, it can just be anything random. It does specifically need to be a Google Gmail account though to do the process that we're going to work through. Matt's newsletters 915@gmail.com. And this is going to be the email address that I opt into all of the other newsletters with. So every single newsletter that I want summarized into my single digest newsletter, well, all I have to do is opt in with this email address. And once the automation's built, whenever I find a new newsletter that I want to make sure gets included in my daily digest, well, I just opt into that newsletter with this email address, and it will automatically be included in my daily digest. It's really sweet, but let's keep on pushing forward.
And for this example, I want to make a newsletter digest around finance newsletters. It's just a random example that I picked because I know there's a lot of newsletters in this niche. And I found this article over at explodingtopics.com with the top 25 finance newsletters. Now, some of these newsletters are paid newsletters, some of them are free. I'm just going to opt into the free newsletters. If we do this right, we should get all of the information that we ever possibly need from just free newsletters because we're curating them from so many other places. So, I'm just going to go down this list of the top 25 newsletters. We've got Sherwood Snacks here. So, let's go ahead and open this and see if I can opt into it. Subscribe to Sherwood and we'll go ahead and opt into this one. Plug in our brand new email address. Matt's newsletter is 915 and we'll subscribe. Cool. So, we're on one newsletter. Let's go to the next one. The average Joe free daily newsletter for investors. So, I'll go ahead and opt into this one with our new email address. Get the free newsletter. But you get the idea. You go through and you subscribe to all of the newsletters in the niche that you're trying to get this daily digest from. I'm going to go ahead and do that with as many of these 25 that are here, but I'm gonna pause the recording and do it real quick so you don't have to watch me opt into all these newsletters.
>> A few moments later. >>
And now I'm signed up to a whole bunch of different newsletters with this email address, as you can see from my inbox here with all the thank you and welcome emails. Now that we have an email address that's collecting newsletters for us and basically staying looped in on the topic of finance and investing, we can go and build an automation that's going to read all of these emails for us every single day and then just send one email to our main inbox with just what we want to see.
Now, to build our automation, we're going to use a tool called N8N. It is a super powerful automation builder that is amazing for exactly this type of use case. And one thing that's really cool about N8N is that they do have an open version of it. If you go over to N8N's GitHub, you can actually download all of the code and follow their instructions here to install it and run it locally on your own computer. So, you can actually use N8N for free if you want to install it and run it locally. However, if you do decide to install it and run it locally, there are a few issues. If your computer's ever turned off, your N8N automations aren't going to work. If your N8N isn't running on your local host, well, your automations aren't going to run. If your computer, for whatever reason, gets disconnected from the internet, guess what? Your automations aren't going to run. So, I actually recommend for automations like this, setting them up with a cloud provider. That's why for today's video, I partnered with Hostinger. They have a VPS option or virtual private server that makes it really easy to install N8N. If you head to the link in the description, it will actually redirect you to a page for a Hostinger self-hosted N8N. And when you sign up for this plan, it will basically just automatically install N8N for you without you having to do a lot of work. And right now, as I'm recording this, they do have a Black Friday deal, which will eventually be a Cyber Monday deal with an insane discount. And if you click on claim deal and you select the KVM2, this is the one that I highly recommend for running N8N. On the checkout page, you can add a coupon code and just type Matt Wolf and it will actually take the discount down even more. So an additional 10% on top of the Black Friday deal that they're already offering. Once you complete your checkout, there's a step-by-step process that will walk you through turning on N8N in your account. And you'll have a dashboard that looks like this once you log in. This is N8N. You follow those steps and your automation will always run. Whether your computer's off, whether you have no internet, it's all happening in the cloud and you don't have to worry about the automations just stopping because your computer's not connected. So, for the rest of this video, we are going to build it out inside of our Hostinger version of N8N. Thank you so much to Hostinger for sponsoring today's video. But let's keep on moving forward with building this thing.
I'm going to go ahead and click on create workflow. And now we can start building out every step of the automation. Now, stick with me here because some of these steps might seem a little bit confusing, but it's not as hard as it seems. Just follow along to what I do. If you're to just simply copy every step that I do in this, you should be just fine in setting up this automation.
Our first step needs to be some sort of trigger, something that's going to cause this automation to kick off and do all the processes. So, we'll click add first step. It's going to ask us what trigger we want to use. For this one, I'm going to use on a schedule because I want it to send me an email every single day with everything that it found in my inbox. So, for our trigger interval, we're going to put days between triggers, we're going to leave it as 1. For trigger at hour, you want to try to pick a time where most of the newsletters for the day have probably come in already. I like to set mine at 5:00 p.m. By 5:00 p.m., pretty much everybody that's sending me a newsletter will have sent it by then. And we don't need to do anything under the settings step here. So once your scheduled trigger looks like this, you're good to go. You can click back to canvas. And now we can see we've got our scheduled trigger, which is going to fire off our automation.
Next up, we need it to go and look inside of our Gmail inbox and read our email. So I'm going to click plus. And then under search nodes, I'm just going to type Gmail. It will find the Gmail node for us. I will select this. And then we have a ton of actions for Gmail here. I'm going to select the action get many messages because we want it to read all of the emails in our inbox. So that will be our option there. Now we need to connect it to our Gmail account that we just created. And if you remember, we created Matt's newsletters 915 atgmail. So for credential to connect with, I'm going to open this dropdown and we're going to create a new credential. And out of the entire process that we're talking about here, actually getting it to connect to your Gmail account is one of the bigger pains in the butt of this entire process. So, in order to get it to connect to our Gmail, you're going to want to click this little open docs here where it says need help filling out these fields. And it's going to walk you through how to connect your Gmail. You do it basically in these five steps here. So, step one, create a Google Cloud Console project. We'll open up our Google Cloud Console here. Make sure we're logging in with this new email address that we just created here. And we're basically just going to follow the steps that it lays out here. So, I'm going to create a new project up in here. I called it n8n newsletters. I'm going to turn on the Gmail API. We'll enable this here. And you'll just walk through each one of these steps. Now, for the sake of keeping this video a little more compact, I'm not going to walk through every single step in this tutorial, cuz then it just becomes me making a tutorial of myself walking through this tutorial. But I promise if you follow these steps, you will get your Gmail synced up. It's not that complicated if you follow every step to the letter. If something doesn't work, go back through this tutorial, figure out if you skipped any steps. I've done that before. And you should get up and running pretty quickly. There is one step in the tutorial that may get you tripped up. Right here in step number nine under configure your OAuth consent screen. It does say in the authorized domain section, add the domain n8n.cloud or if you're self-hosting, add the domain of your N8N instance. We are self-hosting. We're hosting it on our own VPS in Hostinger. And so you may be wondering, what do I plug in instead of n8n.cloud? Well, if you jump back over to where your server is located here, you've got this domain of where everything is installed on Hostinger. You just want this part, hstgr.cloud. I'm just going to copy just that piece here. And then under branding, we're going to add a domain. And the domain we're going to add is the one we just copied, hstgr.cloud. And then we'll click save. That might trip you up, but if you follow that step, if you're using Hostinger, should work just fine.
So, I've followed all the steps and I should be good to sign in with Google now. So, if I click this, I should get a Google authorization. And we can see down here it lets me connect to the email address that we created. So, I'll connect to that one. And I actually got this error while trying to set it up. Access blocked. Hosting or cloud has not completed the Google verification process. And I'm glad I did this cuz that means I skipped a step. So, if you see this, here's how you handle it. There's a troubleshooting step here that tells you exactly what to do if you get this error. And it basically means that I haven't set up my email as one of the test users that's allowed to use this. Now, to get to the proper page, we're going to jump back over to Google Cloud here. And we're going to click on the little hamburger menu and we're going to come to APIs and services OAuth consent screen. And then over on the left, we're going to click on users. Then down here, we've got this section for test users. Click add user and plug in the email address that we created as our test user and click save. And now when we jump back to N8N and we click sign in with Google and then we select the email address that we've been playing with here. Now it does again say Google hasn't verified this app. But we have the option to click continue. And if I click continue now I can give it access to everything it's going to need. We'll click continue again. And now our connection is successful and we've got access to Gmail. Again, this is probably the most complicated, annoying step in the whole process for some reason. But we do have Gmail now. And before we close out of this section, I'm going to rename this to the email address that we've been using. I'll just paste it in there. Click save. And that way, when I come to my dropdown here, I can see which newsletter I want to be activating this with, and I will make sure that one is selected.
Now, we're going to give it some details on what to look for when it's in our inbox. So under resource, we're going to leave it as message. We want it to read the messages operation. We want it to get many. We want it to read all of the emails that are in there. I'm going to select return all. And I'm going to unselect simplify. If you use simplify, it won't read the whole email. It'll just read like a quick summary snippet of the email. So we want that turned off if we want to make sure it's going to read it all. It does increase the processing time a bit. So it will take a bit longer than if you were to simplify. But if you have simplified turned on, it won't read the whole email. Under filters, I'm going to add a filter. And I'm going to say read status. And so under read status, we're going to select unread emails only. So it's only going to read emails that we haven't read yet. And that's all we need to do for this step. And if I click execute this step, it might take a minute, but we'll see what happens here. And we can see that it found 29 items. So it actually read 29 different emails. If I jump back to my inbox, let's see. It says 1 through 28 of 28. Maybe if I refresh, there's another one in there. Oh, no, there's one in my promotions tab. So, it it found all of the emails, including the ones in my promotions tab. If I move that to primary, we can see 29 emails in my inbox. So, looking back at our N8N workflow here, we can actually see all of the data it pulled in for every single email. So, we can see that this email is unread, all of the header information, and then all of the HTML and text that was in those emails. And we can see it's a lot.
But now that we know that it will read the emails, here's what we've got so far. Every day at 5:00 p.m., it's going to look at our Gmail and read every email that is marked as unread. That's what we've done so far. But now, I wanted to pull all 29 of those emails together and make it just one giant message. And we're going to feed that giant message from 29 emails into an AI chatbot to summarize it for us. But before we can send it to the chatbot, we need it to combine all these emails into one giant message.
So I'm going to click this plus to add a new node. And I'm going to add an aggregate node. So we'll select aggregate here. And then we're going to leave aggregate at individual fields here. And then for our input field name, I'm going to go and pull in the HTML from the email. So I'm going to scroll down until I find HTML. And this is the entire email in HTML form. I want to use HTML cuz I want it to preserve all of the links that are in there, all of the URLs that are mentioned. So, I will literally just hover over HTML here over on the left side under input and just drag this into the input field name. And now it's going to watch that and aggregate all of the HTML into one giant document. I'm going to select rename field and we'll call this field combined newsletters like that. The formatting doesn't really matter. I tend to use camel case just because I'm used to that for variables and I believe that's the only thing we need to do on this step now. So it's going to take all 29 of the emails that we found the HTML version and it's going to combine them all into one field called combined newsletters. So if I click execute step we can see here this is what it outputted. It gave us a field called combined newsletters and it has one giant text document with all of those newsletters in it.
But now we need to clean it up, organize it, understand what's going on in all of these newsletters. So I'm going to go back to my canvas and we're going to add us another step. And this time we're going to start playing with AI. So I'm going to click on AI and we're going to select AI agent here. So before we can have anything happen with AI, we actually need to attach an AI model to this. And on this AI agent page, down at the bottom, there's a little plus that says add chat model. I'm going to click this plus and I'm going to add a Google Gemini chat model. I personally really like using Google Gemini for this because it's got a massive context window, meaning that you could give it really massive documents and it's really good at understanding everything that's going on in those massive documents. Now, I've already connected my Gemini account, but I'm assuming you haven't yet. So, you're going to click this down arrow, click create new credential. It's going to ask you for a Gemini API key here. And you can get that by going to aistudio.google.com. Down in the bottom left, there's a button that says get API key. You can see I've already created one, but you'll click create API key. Name your key. You can call it something like N8N automations. We'll create the key. And then we simply copy our API key here to our clipboard. Come back to N8N. And we'll paste that API key right here. Click save. And now Google's Gemini is connected to our AI chat model here. For the model, I'm going to use Gemini 2.5 Pro. And this is sort of the one step where there might be a little bit of cost involved cuz every time this runs, it's going to use your API key from Google. And I believe Google's going to give you like $300 or something like that in API credits when you first sign up. But once you run through your free API credits, it will cost like a couple pennies every time you run this automation. But I'm going to use the Gemini 2.5 Pro model. All right. So now we've got our Gemini chat set up and connected to our AI module. So I'm going to click back to canvas. And we can see now that Google here is connected as our chat model inside of our AI agent. We'll click back into our AI agent. And now we can tell it what to do with all of the information that we're pulling in. So under source for prompt, I'm going to select define below. So, for our prompt here, I'm just going to put below is all the news. And I'll put a little colon. I'll give it a couple spaces. And then I'm just going to drop in this combined newsletters. This combined newsletters is pulling in again all of the newsletters we've looked at so far. But if I just pull this one box over, it's going to bring all of this in. So, I'm going to click combined newsletters. Pull this in here. And now we can see below is all the news. and I'll give it some additional details of in HTML format. So, this is what it's going to send to our chatbot. Below is all the news in HTML format. This little green blur here is where all the news will show up. And then down under options here, I'm going to add an option. And I'm going to add a system message that basically tells it what to do with this information that we just prompted it with. I'll go ahead and delete what's there. And here's the system prompt I'm giving it. You'll receive all the AI newsletters from the past day in HTML format. Give me a bulleted list of all the news that was reported across these newsletters. Don't duplicate news if it was listed in multiple newsletters. Also, give me the URL for each piece of news and a one-sentence summary. List the news in order of popularity. Consider popularity based on how many newsletters that piece of news was mentioned in. If a piece was only mentioned once, sort by your perception of how interesting the public will find it. Don't skip any news. Share it all. Don't output anything other than the summary. No additional context or things like sure, here's the summary, just give me the bulleted list. So, you can see in my prompt below is all the AI news and HTML format. It's going to pull in that giant piece of text that we just created. And then our system message tells it what to do and how to organize it. I'm going to click over to settings here and I'm actually going to turn on retry on fail cuz I have noticed that every once in a while Gemini will time out and not work. So, I'm going to put max tries as three. And we'll have it, you know, wait, let's make it wait 5 seconds in between. And that is our AI step done. I'm going to click execute this step to see what it outputs, but it's going to take a minute. So, I'm going to pause while it's doing that. So, I'll click execute step. And again, this might take a good 5 minutes for it to actually summarize all this. And so, here is our output. It's a fairly short output, but to be fair, all of the emails that are sitting in here are mostly welcome emails. and thank you for joining my list kind of emails. So, I doubt there's a whole lot of news in here for it to actually sum up for us. If you're looking closely, you'll probably also notice that it didn't give this back to us in HTML format. It gave it to us in markdown format. So, we need to create another step that converts it from markdown back to HTML for us.
So, let's go back to our canvas, add one more step here. I'm going to search for markdown and we'll use this markdown node here. And by default, it's set to HTML to markdown, but we want to flip that. We want it markdown to HTML. And then this output that we got on our last step, that's what we want it to convert. So we'll pull that to our markdown here. And we'll rename this to combined HTML. This module should run fairly quickly. So let's go ahead and click execute step. And we can see that it now spit out a HTML version of the exact same thing.
All right, so let's go back to our canvas. And here's what we've got going so far. Every day at 5:00 p.m., it's going to look into our Gmail account here, pull in all messages that are marked as unread. Then it's going to move to this aggregate step, and it's going to combine every single email into just one giant text file. We then feed that one giant text file into our AI agent, which is powered by Google Gemini, and we're telling it to clean it up and organize all of the news that it found in these emails for us. It gives us that output as markdown. And now we're converting that markdown into an HTML file that will look good when we get it like in an email. And now we just need it to email it to us.
So let's go ahead and add a final node here. Once again, we're going to use the Gmail node. And we will send a message this time. So, we'll select send a message. We'll connect with the same credentials. We'll just have that email that we already created. Send the newsletter. I'll send it to my email matt@futuretools.io. And then for the subject, here's all the finance news. Email type, we'll leave it as HTML. And then our message is going to be this combined HTML that we created earlier. And now, if I click execute step, theoretically, I should get this newsletter in my inbox. Let's click execute step here. Now, it says it sent the email. So, let's check my inbox. And you can see I've got an email sitting in my inbox that says, "Here's all the finance news." When I open it up, I mean, again, my original inbox is all welcome email, so there wasn't really any news that came to it yet, but it did find what finance news was listed in some of those emails. Mark Xandandy warns Trump's mass deportations could spike inflation to 4%. Investor Jim Rogers sells all US stocks. Older Americans may be losing money by claiming social security too early. So, it found three pieces of news among all of these uh welcome emails basically. But again, now all I have to do is go and opt into any newsletter I want and every single day it will include whatever I've opted into into this roundup that it sends me in my inbox.
Now, there is one step that this automation is missing. If you remember, when I tell it to get many messages, it's going to look for unread emails only. However, you'll notice that it pulled in all of the emails that are in here, but they're still unread. So if I ran this automation again tomorrow, it will find the exact same emails plus any new emails. So we need this automation to also mark the emails as read. Super super easy step. Right after this step of get many messages, I'm going to add a second node that runs in parallel here. So I'm going to click on this plus up in the top right to open the nodes panel. I'm going to create another Gmail node. We'll select this here and this time we're going to select mark message as read. It'll open up this node. We want to make sure it's connected to the same email address. The resource is set as message. And then the operation is mark as read. And then under message ID, we're simply going to come up to this ID right here under get many messages. This is the last step. And we're going to drag this into message ID. And that's it. Now, if I go back to canvas, let me clean this up a little bit here. You can see as of right now, all of these emails that we just looked at, all 29 are still unread. But if I was to go execute this step here, let's execute the step real quick. And it should take a couple seconds. And you can see output 29 items. Let's click into our inbox again. Let me refresh. Boom. All of them are marked as red here. So now when it goes to run this automation at 5:00 p.m. tomorrow, it's only going to see new emails since all of these were marked as red.
So one last run through of what this automation is doing. Every day at 5:00 it reads all the emails inside of this inbox that we just created. And then after it reads all of the messages, it simultaneously marks all of those messages as red that it just looked at and it aggregates all of those messages into one giant text message. It then takes that giant message of text, pulls it into our AI agent, which is using Google Gemini, and summarizes all of the news that it found. That news is given to me as a markdown file. So, I convert that back into an HTML file. And then Gmail is really good at reading HTML files. So, we send that HTML file back to my main email address where I can see the news every day. And that's the whole workflow. I know it seemed like a lot of steps. I have no idea how long this video turned out to be, but it's actually fairly simple. And if I was just building this without explaining it as I went along, the whole process would have taken about 10 minutes, maybe. But now I'm going to stay completely looped in on all of the latest financial news that comes across to this inbox.
As another little quick tip, if you're building one of these for an industry that you actually work in, so let's say you followed along and you're in the financial niche and maybe you've got your own finance newsletter that you've run. One thing that you can do is inside of your AI agent when it's looking at all the news, you can also add to your system message to give you a list of all of the sponsors as well. So all of these newsletters that you're looking at, most of them probably have sponsors. And if you tell the AI model to feed me a list of the sponsors from all the newsletters from today, that can be really beneficial as well. Just because it's a sponsored product doesn't mean it's a bad product. I mean, I only promote products on my channel as a sponsor that I think is a good product. I would imagine a lot of these newsletters have similar philosophies. So, it'd be handy to get a list of all the companies that sponsor all of these newsletters. A, you're supporting the newsletters that you're sort of scraping into your newsletter, so they're getting the benefit of you actually clicking on their sponsors. But two, they're also probably pretty decent tools. And three, if you work in this niche, you're getting a list of companies that sponsor newsletters in your niche. So, if you have a newsletter or a YouTube channel or a website or anything like that in the niche that you're building this newsletter in, well, you can have a daily list of who is sponsoring in that niche. Pretty beneficial. Something that can make you a lot of money if you create content in that space. So, another little bonus tip for you there.
So, if you want to be somebody that is the most informed possible person on any specific dish you could think of, this is probably the best workflow I've come across to ensure that that happens. So, again, follow the steps I just laid out. Build it for yourself. It's really, really, really fun. I'm having a blast building automations. I love making tutorials like this because it's stuff that legitimately benefits my life and actually solves bottlenecks for me. This is how I stay so looped in on AI news. I've built automations like this that keep me informed. If that's something you want as well for the industry or niche you're in, well, now you've got a great process to do that. And if you want more videos like this, you like learning how to actually integrate and implement these AI tools in your business or your life. And if you want to stay looped in on all of the biggest news in the AI world, make sure you like this video, subscribe to this channel. I will make sure you stay more looped in on all of this stuff. I've got some really fun and cool tutorials in the works that show you how to do some just ninja stuff with AI. So again, make sure you're subscribed if you're not already. Thank you so much for hanging out, nerding out, and tuning in with me today. I really, really appreciate you, and hopefully I'll see you in the next one. Bye-bye.
Thank you so much for nerding out with me today. If you like videos like this, make sure to give it a thumbs up and subscribe to this channel. I'll make sure more videos like this show up in your YouTube feed. And if you haven't already, check out futurtools.io where I share all the coolest AI tools and all the latest AI news. And there's an awesome free newsletter. Thanks again. Really appreciate you. See you in the next one.