Transcript for:
This Make.com Al Content Generator Prints Money

hello everybody in this video I'm going to show you an end to-end content generation system in make.com that leverages AI using the open AI endpoint to produce super high quality articles at scale I've implemented the same system in a variety of seven and eight figure companies and it basically takes the cost of producing content down from usually like between $50 to $100 per piece to literally between 10 to 20 cents it is absolutely unbelievably efficient uh this is the same software at the core of many like article generator AI websites that you know you're paying 5050 to $100 to $200 per month for I'll show you how to do it all for yourself in a few seconds that sounds good to you let's get into it okay so this is super simple and easy Let's uh first walk you through what the flow looks like in make.com uh this is a snapshot of the system as it currently stands we got some tip form stuff at the beginning we got some uh Google sheet stuff in the middle we got some open AI stuff in the middle and then you'll see sort of an interesting design pattern here and this is really where the secret sauce is this is at the core of all the SAS companies that say they'll produce content for you uh you have an iterator module and the iterator module like iteratively produces the content for you section by section uh before dumping it into a Google doc now this sounds pretty complicated so let's just go through the three or four pieces involved this is actually very simple first we have a Google sheet setup I call this my left-click content generation tracker the reason why is because everything in the sheet makes it onto my blog and this is my blog over here feel free to look through it on your own time if you want but you'll see that the pieces are high quality um you know they are written quite well it's like it's 21st century Darwinism at its finest out there right like this isn't stuff that most people would be able to take a look at and then instantly tell its Ai and neither can you know platforms like U you know Google or like zero gbt or whatever these are relatively well written um even for AI pieces it's very difficult for you know content detectors to pick them up so we have this sheet over here that houses all of the content for my blog and really the whole system and you'll see there are a couple of columns there's word count primary keyword secondary keyword internal links external links additional instructions outline doc article doc and then website URL uh so a lot to unpack there but basically in order to create a piece of content you need to provide it a title a word count a primary keyword and then some secondary keywords as well um well you don't need to not all of these are required Fields if you don't the you know system is is usually good enough to like kind of fill in the blanks and interpolate where you aren't um but you know if you wanted to like have internal links to a piece or external links um these are usually quite important for SEO purposes so I wanted to make sure that we can include them it's also that additional instructions column which as you can see is where you can like have your instructions WR in a business casual tone yada yada I don't actually personally use these this is just one of my uh virtual assistants U that thought that it improve the tone of the article so what I'll do here is I'm actually just going to go through the system I'm going to generate an article for you and then while it's generating I'll walk you through uh what the rest of the system looks like so let me just open this up actually let me just duplicate this in another Tab and then that way when it's running in one tab I can just like walk you through every module in the other okay so let me just make sure this isn't connected to anything that I don't want it to connect to and it looks like it is uh I'm not going to actually post this article on my blog so I'm just going to remove everything except for the Google Doc module at the end and then I'm just going to add this in here and then let me just update a row to remove this okay great we are now good to go uh so first things first what I'm going to do is I'm going to run this and now we see that it is currently awaiting data what I'm going to do is go over to a type form which I've apply named SL generator here I'm going to write in a title uh and we are going to do I don't actually know let's do HR automation 101 that sounds pretty fun how many words are the content have 1500 what's the primary keyword HR automation so I'm just going to do one what are some secondary keywords uh automate HR um automate hiring hiring automation process automation let's do AI aihr that sounds good are there any internal links that should be included in the content well internal link for those of you unfamiliar just refers to a link on your website uh that you're going to be posting the piece I'm just going to look up HR and see if anything comes up okay your ultimate to HR automation um interestingly enough this actually is basically the keyword that we're going after but we're not actually posting this so it doesn't matter are there any external links that should be included in this content let's do um just some random Forbes article I'm going to say managing employee resistance automation this is like a high Dr term or high Dr website so that's the external link are there any additional instructions or specific requirements for the content no let me just make sure this is still running okay great this is going to catch our web hook click submit and we are now waiting to catch the content on the generator side and then while all this stuff is generating what I'm going to do is just close out this tab I'm going to close this and it's not generating for some reason I don't really know why um I think we submitted it so weird it's not really coming up is it okay I'm just going to force stop this then oh wait this may actually be running in which case that uh that' be pretty dumb of me let's just catch this and make sure that this is going okay this is HR automation Okay cool so I mean this is the entire reason I use this for testing purposes sometimes type forms web hooks aren't working so I'm just going to run this uh directly and it looks uh looks pretty good although because I reset this um this may post on my blog um I may have set something up to error out over here okay great so now that that is generating why don't we go over to um the original scenario and now I can actually walk you through it step by step so first things first we are listing the responses of a type form that we watched for earlier so when that event happens um we will then pull the data from that previous format Tre I'm not doing anything special here there's nothing no um fields are filled out then we have Google sheet so we have a spreadsheet ID with an account that's hooked up to it uh and then what am I doing here well column A which is title I'm adding the title column B which is how many words should I have I'm adding how many words should I have so pretty self-explanatory and basically just pumping all of the fields that I've collected in the type form into the Google sheet and the reason why is because the Google sheet is just just like the single source of Truth for everything uh what I do after then well then after I add the row I immediately search for the row and what this is doing is this is like grabbing the entry that I just put in and then I'm using that Google sheet as a single source of Truth as opposed to type form so I'm using that data to set variables which we have over here so now title word count primary keywords secondary keywords you see I have a couple of formulas here um if secondary keywords contains a comma for instance then I'm splitting um the secondary keywords and then I'm basically like attaching them in an array structure so if you don't really understand what this is doing feel free to pause the video and then kind of check it out there but essentially this is just this allows me to put it into Json format which is necessary for the instructions that we're going to feed into AI later uh same thing with internal links external links this basically just allows me to handle if uh the person puts in one link or if they put in multiple links same sort of deal here so you may be wondering well Nick why are you splitting this into so many modules do you really need this do you really need this no I don't really need it but the C cost for me of additional of additional couple of operations uh to make the system a lot more maintainable and testable is totally worth it um I run this thing maybe once every couple days so it's like four Ops every day or some something like that uh and that to me is 100% uh very well worth the additional flexibility I have by having like a set multiple various module uh because that means that I could just like theoretically um drag and drop that I could stick that over there and then I could just trigger the entire workflow from a set variables module that I can set myself for testing so very worth it anywh who the actual Secret Sauce in Magic comes here with the gp4 call so I'm creating a chat completion model gp4 first thing I have is a system prompt that says you are a helpful intelligent writing assistant I will always use this format I find it's just like the simplest and easiest uh and then what I'll do is I'll add a user prompt where I say use the following Jason brief to write an engaging comprehensive outline in markdown format ATX that's really important ton of voice 50% Spartan and Casual now if it's the first time you've ever heard of markdown format markdown format is just a way of representing uh Rich text with text what I mean by that is let's say you have a Google doc and let's say you're trying to write uh I don't know a story or something so this is the title of your story this is the subheading of your story and this is the body of your story now all gp4 are uh is the English alphabet A to Z how would you represent the fact that a snippet of text is a title versus the snippet of text is a subheading versus a snippet of text is just like plain body text right obviously this provides a ton of information to the reader so how do you transform this into a format that gp4 can understand and moreover how do you get it to write so that we can produce these like gp4 can't write a heading all it can do is tell you that if something is a heading or not and usually it'll do something like uh you know heading or something and then it'll write that we don't want that we actually want the format of the text to be produced entirely in a format that we can massage and turn into headings and whatnot later well the way that you do it is with markdown format markdown format is really simple if something is a heading one so if something is like a title or whatever then it's just this and you'll see it actually does this now automatically so if I just put a um let's go back to normal text if I just put a single hashtag and then a space then this is technically like corresponds to a title tag if I do two this technically corresponds to an H2 tag three four right dollar signs Cash Money Baby uh and so on and so on and so forth and then if this is just like regular text then you don't have any um hashtags before it and basically this is just a way that we can get by the fact that open AI just doesn't have the the the formatting ability to like create headings or whatnot all we're doing is we're just sending it a bunch of raw text it's giving us a bunch of raw text and then we're using that raw text to create formatting on the back end so hopefully I explain that right okay so the next step is we have a user prompt with an example story that I've created and this is what I want to be feeding it um and so the way that it's set up is I have like a Json I have like a JavaScript object I have a title field a word count field a primary keyword a secondary keyword internal links external links additional instructions you'll see that I use the array format here which is uh a call back to what I was doing earlier where I was setting the variables um so if it was one link then I wouldn't have an array if it's more than one link I have the array down below I then have it output an outline and this is me just kind of training it once or twice that it knows the sorts of things I wanted to talk about and so I'm just having to generate an outline at this step what we're going to do is we're going to turn that outline into a massive article later on using procedural and uh like repeated prompting in a very Nifty way way that I don't think most people realize is possible so what am I doing here I have it generate a an introduction and then I have it generate a bunch of bullet points for the rest of the article this is important I find because if it doesn't generate the introduction doesn't really get the writing tone of voice down um if it just generates the bullet points because we're going to turn these bullet points into paragraphs later uh then you know it's usually missing some context and so that's what I'll do I'll do that once and then I will send it the actual content so title word count primary key whatever and then it Knows by now to produce the content in that format so pretty simple I then have a markdown to HTML module and this is what's responsible for turning that markdown that I just mentioned earlier into text that I can then use to create like a Google doc for instance after that I will create a Google drive folder just to house the document that I am creating and I do this just to keep everything organized so in my case it's like I have a parent folder called left click with my company in it sales and marketing which is a folder underneath that and then an SEO folder with a new folder with the name of the article and then I'll actually create the outline in the Google Doc and I just use kind of weird format o and then the title that's the outline the content is just the HTML from the previous HTML module um and then the documents location is inside of the folder which I Do by pulling the folder ID so pretty straightforward right now um why don't we go let me just see if this generated correctly yeah that looks good so why don't we go and actually take a look at like an example outline well if we go back to our content generation tracker scroll down you'll see there's an article now that was created because you know we're done with the generation stu um called HR automation 101 it has all of the data that I put in internal length the external length all that stuff and then if I go over to the outline dock oh actually I don't actually have an outline Dock and why is that um oh yeah it's because I uh that makes sense I tried running this once uh initially and then it didn't work so I had to x out the video and then try rerunning it but when I reran it I didn't save the way that the module should look so we should actually have a Google doc link over here and over here but we're not going to have that so I'm just going to pull them manually so if I go back here um the outline is right over here we can pull it direct from the module open it up in a new tab and then we have the outline of the uh the article so HR automation 101 today's data digital driven Enterprise Human Resources departments are rapidly embracing technology advents tools and techniques key among them is HR automation evolution is completely changing how we hire manage and develop staff this piece will guide you through the multifaceted real of HR automation highlighting how its intelligent procedures could streamline and enhance your HR operations now keep in mind the reason why uh it's writing like it is writing is because it's attempting to put in the keywords that I asked it to put in earlier and so this is actually relatively SEO optimized you'll see that there are title tags there are H2S H1s there there's everything here and it's because of markdown format when we uh the the output of gp4 was not this the output of gp4 was this oops well there you go goddamn Google Docs trying to uh improve how dare you um the output from gp4 was this but then because we useed the markdown module to HTML we transform that into a format that you know Google Docs understands as a heading so that's pretty cool right okay so anyway what do we do with this uh outline now well it's pretty simple what we'll do is we will take the outline that we generated actually let me go back here we'll take the outline that we generated we'll then um create it okay and then this is where the magic happens we have an input brief now the input brief is basically um the entire article that we just generated just in markdown format so we're not actually pulling text from here we're pulling text direct from generate outline and so this is going to be relevant in a moment because we then iterate through the this input brief what we do is we'll split this markdown input brief by new line and so now every new line is basically another object in a big array and now we're iterating over this line by line by line so if this was our article for instance this would be one new line let me be more precise this would be one new line this would be another um sorry this would be a new line this would be step one in our array this would be step two in our array this would be step three an our array this would be step four so on and so on and so forth and I think you're starting to see why that's important that's important because we're going to use every new um element in the array to generate a new paragraph okay so what do we do we double check to see the section starts with two hashtags why because in markdown two hashtags refers to a heading two so I'm separating or I'm just only processing sections that have those two hashtags because that's all I really care about I don't care about heading one because we already have an introduction I only care about heading twos because I want to generate content for heading twos and Beyond so if the section starts with two hashtags okay if the section is an H2 what do we do next we then produce text for that section oh sorry we then set a section input so what am I doing now I'm then replacing this value that I just created here this line with uh the same line just with an arrow next to it and this is really the secret sauce this is what any company that's doing this at scale uh is doing because gp4 has a ton of trouble understanding context by adding a an arrow next to The Heading and then telling gp4 hey I want you to generate this heading um you get significantly better results than if you just ask it to generate a certain amount of text and I'll show you in a second but anybody that's tried this is probably already uh waving their heads s thinking that this is impossible there's no way this will work well it does the actual gbt for prompt that we're using is you're a helpful intelligent writing assistant and then the following is an outline for an award winning article your task is to write one section and one section only the one marked by an arrow tone of voice 50% Spartan casual I usually use this because I find the gp4 can be pretty flowery now what do we do we paste the section input from previously and so we will paste that section with the arrow um on the heading that is relevant to us why do we do this we do this because we want gbd4 to have context of what happened before and what's coming up after the article uh after the paragraph being generated if we were to just ask it to generate a paragraph completely in isolation it would miss the context and then if we were to try and Stitch together all the paragraphs at the end of it it would read terribly but this hack gets away from that and it allows us to generate extremely contextually relevant articles that are super high quality and that quite frankly blow most people away when they read them they' say this is generated by a robot no freaking way okay so we'll produce this section text we'll then set the section text to be whatever the output was and then we have a router and this is an interesting router but essentially there's a 25% chance um that I Define by setting floor by getting the floor of random * 4 plus 1 uh and I and I'm saying that if this is equal to three AKA this is one out of four uh possibilities then I want you to go back through the text that we just generated and then I want you to edit it to break up the flow add bullet points and subheadings where needed for variety use markdown ATX format what I do there is I train it and basically what I'm doing is I am getting it to um every now and then with about a 25% chance I wanted to take a paragraph or take a collection of paragraphs and then break that down into bullet points I want it to vary its formatting uh and the reason why is because human beings when we read blog posts we don't just like reading a bunch of paragraphs one after the other after the other we want there to be variety we want there to be some areas with bullet points other areas with like subheadings we want some h3s some h4s thrown in there uh we like a sense of hierarchy in our content this also improves um AI uh sorry SEO outcomes because content like this usually is more engaging so humans spend more time reading it which results in higher engagement rates uh lower bounce rates and you know that's one of the reasons why these articles actually rank okay what do we do after that we set the section text in this variable here and then what we'll do is we'll actually grab the section text down here and so this is a pretty standard sort of make design pattern anytime you have a route and that route isn't always used uh you will set a variable at the end of that route and then you will get the variable immediately on the other end of that route so that you can reference the data that you just set and so what I'm doing is I'm producing section text I'm setting a variable and then I'm getting it now what I'm also doing is I'm setting section text back here what that means is basically no matter what happens whether I flow through this route only or if I flow through that top route I'm always going to have some section text that I can get right and so yeah it's pretty nifty design pattern that I use quite often um I'm then aggregating all of the section text and what this does is it basically just takes everything that just created and just turns it into one giant um paragraph or one giant essay I want to say I'm then uh processing it using the markdown HTML module the way that I'm doing that is I'm splitting the input brief at uh H2S and then I'm getting I can't actually see this because I think my monitor is a little bit blurry uh but then oh yeah yeah so I'm getting the H2 and then I'm I'm getting uh the first result before the H2 so I'm getting the introduction and then I'm pasting in everything that I generated after that so I have an introduction module and then I have everything else and then after that I finally create the article and then update it in the Google sheet so what does that look like in practice well you'll see that this ran through um eight times and so what did we feed it we fed it this whole brief there were 1 two 3 four five six seven uh there were seven um splits meaning that there were eight total pieces of content fed into the iterator and then reset the section and put eight times we then produced the section uh text eight times and so every time I was feeding it into gp4 it looked something like this this is some of its output the influence of AI and HR as we delve deeper in the 21st century AI is permeating every facet of Our Lives one area where the wizbang tech is making inroads as human resources where I shaking things up in the most remarkable ways you know there's a Forbes article that's linked here as you can see um this is just the the iterative thing you'll see 25% of the time so literally uh two out of eight times which is perfect uh it went through and it improved the formatting by breaking open the bullet points and that sort of thing then it iterated it aggregated it and then created the article now there's some other um there are a few other modules here which are relevant to me specifically um I'm posting this automatically on my blog so I have this updated every now and then and then I'm also creating a message in a slack channel so that my team knows that a piece was just added and to you know look it over and make any changes if they feel they need to I also have a custom JavaScript module here uh which I'm using uh the customjs function for this is a fantastic pretty nifty function that just allows you to do text processing a lot faster than in make in make usually text processing like this requires five or six or 10 Ops but with a customjs module I can just add in some of my own JavaScript um that like replaces you know uh basically just replaces any empty lines or whatever with dashes which allows me to make that the URL of my post so if I want to have like a post like HR automation for whatever uh for for instance um I'll basically turn h R automation 101 into HR automation 101 um but yeah that that's about it uh the thing that's relevant to us is the actual finished piece so I'm going to take a look at that now and this is what the article looks like at the end of it now you'll see it's not formatted nicely you could theoretically add a new formatting um thing if you wanted to so I could add a space after a paragraph um I could I don't know change the font to inter or something like that and then maybe do 1.5 spacing right so if you were delivering this to a client or something like that that's that's what you could do uh you'll see that there aren't images here but it's actually quite trivial to add images you would just tell AI to um reference the unsplash.com um the random unsplash API and then it would just basically generate from api. unsplash.com phos like a new image and then add that to the article anywhere you want um I just don't do it because we have our own images like uh you know charts and that sort of thing that we like to add you'll see if there's some links in the article and the actual quality of the content is pretty good um in today's dig this is the same introduction we had previously we have another introduction afterwards saying HR is the Cornerstone of my sucess business responsible for an array of critical functions from hiring to onboard and training compliance yet as with any operational department they face their own unique set of challenges enter HR automation a transformative solution for today's techsavvy efficiency driven workplaces in essence here's what it is blah blah blah blah blah blah so I'll link this piece specifically in the video so you guys can take a look at it and read through it on your own but suffice to say this is a 200 500 oh wow I went a little bit over our work count actually but this is a 2,500 uh word piece of content that otherwise would have taken you know an average of let's say like8 cents a word about $200 to do that we just generated in I don't know three minutes for about 15 cents worth of token costs um it's absolutely Bonkers if you consider just the profitability Improvement to any content company uh that employs a process like this and then this is one of the main things that I'm selling right now that I usually sell for anywhere from 5K to 15K which is pretty fun that said um yeah you now have everything that you need in order to produce content on your own whether or not you want to pump this stuff directly to your blog like I've tried or whether you want to add this to your CRM or your project management system and then maybe have like an editor jump in and add some images or change things that is entirely up to you uh at the end of the day though this is the design pattern that dozens of extremely high throughput SEO affiliate and uh you know agency companies are currently using today to generate a massive amount of highquality content for basically free so I hope that that was helpful if you guys have any questions about what this process might look like for you feel free to let me know I usually create videos based off your guys' recommendations or I'm starting to now simply because it's way easier to farm ideas that way and I'm trying to get to the end of a 30-day content challenge so if you like the video like comment subscribe do all that fun stuff and I'll catch you in the next one thanks so much see you later