Transcript for:
Automating Content Management with Airtable

In this video, I'll show you how to build automations and a content database that can index and tag all of your content automatically so that you can search your content and repurpose it later without having someone to try to do this on every single piece of content by hand. Now let's get right into the build. I'm going to show you how to build out all of these automations step by step, including how to build out your own database. But if you'd like access to the make.com blueprint so you can simply import the blueprint just like that and have the automation pop right up. including access to the Airtable database. Make sure to jump into my new community, the NoCode Architects. There's a make.com workshop and lots of other pre-built templates like the one you see today. It's a growing community and you can get access to all of your tech questions. All right, so let's get started. I'm in Airtable. I'm going to go ahead and create a brand new database from scratch. This is what every new database starts out with. I'm going to go ahead and close some of these windows and then I'm going to go ahead and delete some of these default fields and I'm just going to start from scratch. Sometimes you can just modify them, but I just like to start from scratch. I'm going to rename our database here to tagging and search. And this is going to be our content table. So I'm going to go ahead and rename the table to content. And then for the primary field here, I'm going to go ahead and make it an auto number field so that we get a unique ID for each piece of content. I'll just call it ID. I'll go ahead and save that and then I'll collapse this. And so now to further build out our database for content. I am going to add a long text field here and we're going to call this text and this is the field where we are going to store any text related to any given post. If it's a written post we'll have that content here. If we have video content that has copy or a description along with it we would also post that text here as well. And then if our piece of content has an image I'm going to go ahead and use this attachment field here for image and then in order to store the context of what is actually in that image in text format, I'm gonna go ahead and create another column here to the right, and I'm gonna call it image context. And I'm gonna make this a long text field. And this is where I'm going to store all of the written information that we gather from ChatGPT when we send it an image to understand what's inside that image so that we can index it, and then we can ultimately tag it with our automations. And now I'm gonna go ahead and add another column here as well. we'll add another attachment for a video and we'll create that field and then i'll create another column here for video context and i will add that to the right video context and we will add a long text field and we will create that field and so then what we'll do is that as we add images into the system we can have an automation analyze it with ai chat gpt it's going to write out everything that is in that image so that we can use another automation to scan that and then finally tag it and we'll do the same thing with video and audio. In fact, let's just call this media and then we will rename this to media context and I'll go ahead and save it. And that way, once we upload any video or audio here, we can transcribe it and get the media context so that we can pass that to an automation to finally tag the content. So next up, I'm going to add another column for adding the tags. I'm and I'm going to go ahead and link to another record. This is going to allow us to create a new table. I'll create a new table and then I'm just simply going to type tags for the column name and then for the name of the table I'm going to type tags and we are going to allow linking to multiple records because each piece of content could have any number of tags. So I'll go ahead and create that field and that is also going to create the tags table. If I jump over there we're going to have the name of the tag and then we also have another column here which allows us to actually link back to the record here so just to fill this out a bit with some content i'm going to start to manually add some content into this specific system here if you wanted all of your content to be pulled into your database automatically there's lots of different ways and i have a bunch of other videos that would show you how to do that today i'm just going to add in some content here again manually so i've got a vertical video here i'm going to drop into media here and then i've got a podcast audio that i can drop here then i also have some images here that i can upload as images i'll add one more content row here and add these both in so i've got some images we've got some media i suppose there could be a scenario where we both have an image and some media at the same time and then let's also come over and grab some text content i'm grabbing this from my community the content academy and so we'll create one additional row and we'll drop that right here into the text and then i suppose your content could also have a title so i'm also going to insert a column to the left title single line text create field and let's grab the title of this post and we'll drop that right here as well now it's also possible in your database you might also have a description of the content we'll make that a single line text this might be just something simple here that is just describing the content versus it actually being the content I'm not going to use the description for processing and building out the tags, but just in case you need something for your own database. So there we go. We have a good sample of content in our system and we could come over to tags and we could add those here, automation, make.com, business. And if we came back to content, it would be easy to link any given piece of content to one of these different tags. But obviously, if you're creating a lot of content at scale or even just a little bit of content going back. through all of your content and thoughtfully looking at all of the content, the images, especially because typically you'd have to look at that image. And there was no way before that we could actually automate it and look at the image, but now we can. Or going through all of this media to really properly tag it would just take a lot of time, even with a little bit of content. So what we're going to do here is show you how to automate the entire process using automation and AI. So the first thing that we need to do in our automation for all of our content is first just to process it we need to look at the images to get the context of those images and we need to review the media to get the media context before we can really properly generate the tags so what i'm going to do is i'm going to ask chad gpt to look at all these images and to best describe them in words so that we can put that here i'm going to have chad gpt whisper convert all of our media into a transcription so that we can add that to the media context obviously for text-based posts we already have that in text-based form it makes it easier to start out and then once we have all of that then we can analyze it and then we can generate these different tags and then finally we can build out the search using these extensions or you can just create different views using these filters here to filter based off of specific tags so what i'm going to do here is i'm going to add a new checkbox that will help us understand whether a piece of content has been processed or not and by processed i mean have we looked up all of their images and provided the image context or looked up all of the media and provided all the transcriptions for the media context so i'm just going to add a checkbox i'm going to call it processed and i'm going to go ahead and create that field so now we have a checkbox here that will allow us to indicate whether a particular row has been processed and then what i'm going to do on this left hand side here is i'm going to create another view that's called unprocessed i'll create that view and then i'm simply going to add a filter and a condition based off of that new field here processed where it is unchecked that way in this view here we only have rows that have not been processed but before we build out that automation i still need one more column here i'm going to come over to create a new column and i'm going to create a last modified time we need this in order to build out our automation and i'm going to call this last processed and then i'm going to use a specific field here and i'm going to base the last updated time solely on the processed checkbox i'm going to go ahead and use selected fields and then i'm going to go ahead and create the field and all that really means is that this last processed timestamp is only determined by this column here so if i make a change over here that is not going to change the last updated time it's only when i hit the checkbox here will it actually update that timestamp notice that that was done just a couple seconds ago and if i undo this that will always pick the last time that This checkbox was updated. So now let's jump back to our make scenario. I'm going to go ahead and add an Airtable row and we are going to watch for records. And so since this is a new database, you're going to need to add a new connection. We'll go to add, connection type, Airtable OAuth. We'll pick tagging and search demo, save. It's going to open up our connection. We'll go ahead and add a new base, tagging and search. Make sure you pick the right one. This is the one that I'm using right now. grant access now i can go ahead and pick the base tagging and search and for the table we're using the content table and for the trigger field we are going to use that last processed column that i added over here and now you can see why i added that make.com needs this column here to properly find all of the columns that need updating so again i'll pick that as the trigger field last processed for the label field i'm going to go ahead and pick the ID. For the limit, I'll leave that at 10. That means it only processes 10 rows at a time. And then we're going to limit this watch records to all of the rows that are unprocessed. And I'm going to leave the formula blank. And I'll go ahead and click OK. And so when you put this into production, you'll want to select from now on. That just means that Airtable will only find the records that are added to this view after you turn that on. But for testing, you'll use choose manually quite a bit to pick a specific record and run that throughout the automation. i'll go ahead and choose a row it's going to load them up we'll grab row number one and if i run once should find a row here it actually found two rows so here you can see that we have our images or our existing tags or media that we might have linked up as well and we'll use this here to build out our automations to index them content so for each row that we find here we are going to need to do one of two things we either need to analyze an image or we need to analyze a video or we need to do both so i'm going to go ahead and add a router here for flow control and this will allow us to branch off and take two separate actions either for images or video and then to determine whether i go down a specific path or not i'm going to go ahead and add a condition here which is a filter and this must be true in order to go down this path for the top one we're going to go ahead and look at all of the images make sure to grab the images here don't use any of these internal values here and then i'm going to come here to the operator and i'm going to scroll down to array and then i'm going to select array length greater than zero so all that means is that we are looking for a value where there is more than one image in that row and then we can go ahead and click ok and then i'm going to just go ahead and configure this filter while we're at it this is going to be for videos so just like we did for images i'm going to grab the media here and i'm going to come to the operator scroll down where array length is greater than zero and i'll go ahead and click ok so now what we need to do is we need to process the image here that we pulled up here so i'm going to go ahead and add a open ai chat gpt process go ahead and click into this and then we're going to use this here analyze images vision if you don't already have a connection you'll need to add that connection for the prompt i'm going to say describe everything you can see in this image and then you need to actually provide it an image so you go ahead and click on that and we're going to provide it an image url and that image url is going to come from our search here and then we're going to go to image we're going to open that up and then we're going to pass it this url right here. And then for the model, you can go ahead and pick that. I'll go ahead and use ChatGPT 4.0. And then we can go ahead and click OK. So now what I'm going to do is I'm going to come back to Airtable. So it looks like here we can use row one for testing because we have an image here. I'll go ahead and take out this text here. And so what we want to do is analyze this image and then put the image context right here. So I should actually be able to finish this automation out. I'm going to go ahead and add an Airtable update record. I'm going to choose my connection. it's going to ask me to extend those permissions because we were only able to get read permissions here we'll go ahead and go through that authentication process one more time add your base search and there's our database right there make sure you pick the right base and grant access then we can go ahead and select our base tagging and search table is content and for the record id we're going to use the record id that came back from air table in this step here we'll use that right there id and then all we're doing here is we're going to take the result from here and drop it into the image context result. That should be good. We'll go ahead and click OK. Let's go ahead and save our automation. Then I'm going to come back here and I'm going to go ahead and choose again where to start. Choose manually. It's going to give us some rows. We can go ahead and use row one. Click OK. Let's go ahead and run once. It's going to take that image and send it to ChatGPT and then it's going to update our Airtable record once it's done. There we go. Let's jump back to Airtable. and now we have that image context so if we open this up so this image is a graphic featuring a profile image a name handle and some text here's a detailed description talks about the image profile so you could adjust your prompt to get just the information that you want if you only want the text but it's going to go in depth and figure out everything that it can based off of the prompt i gave it it's going to grab the name and handle it found my name in here in that image and then it's summarizing the text that was actually from that image which is pretty cool so now what we need to do is just build out the branch for video so let's do that now let's go ahead and add chat gpt whisper create a transcription with whisper but before we can actually use this we do need to download the media that is an air table air table is going to give us a link and what chat gpt whisper here is looking for is an actual data file that we map in so i'm going to extend this out a bit come right here and add a module we're going to use the http module we're going to get a file and we're going to use the url from our air table row we'll go to media and then we will go to url and we'll go ahead and click ok then we'll come back here to chat gpt whisper we can go ahead and map that file in it's now going to see that we have this download here and it'll allow us to directly use that module we can leave the model on whisper and we can leave the prompt alone and our response format will be json let's go ahead and click ok and then i need to add another air table module here to update the record just to make things easy i'm going to clone this one bring it down here going to auto align everything in our make project then in this case we already have this information here so that's nice i'm going to go ahead and remove the image context because in this case we are trying to get the media context so then i can go ahead and select that and everything should be good i'll go ahead and click ok and then i'll click save now once One final thing that we do need to add is that once we process the images in the video, we do need to mark the entire row as processed. So since this one always runs last based off of the order of the router, you can always figure that out by just coming to the router and clicking order routes. It's going to show you which one will run first and which one will run second. So in this case, I can just come back into this module and then I can mark this processed and we'll go ahead and click OK. Then I'm going to come back to Airtable. I'm going to choose where to start. Choose manually. let's look at our database in this case we'd like to use row number two i'll go ahead and grab row number two and then i'm going to process this automation notice that there was no image so it didn't go down that path this was a video so it downloaded that file sent it to jet gpt then it wrote that transcription to air table notice it's no longer in this row now if i come back here right here we have the transcription but it fell out of this view because our update marked this as processed and again notice here that it's 225 and the last updated is now 225. So now we have our automation that will get all of the context. We can get everything for images. We can get everything that we need for media. And if it's text, we already have the text itself to analyze. So the last thing we need to build out here is a way to look at all this data that we've collected and to automatically come up with the different tags, drop them into our database. And then finally, we just have to build out our search, which we'll use these extensions for. And if you're finding this video valuable, make sure to like and subscribe. It tells me what type of content you want more of. All right, so to finish this out, we need to build out an additional automation. I've got that make scenario ready to roll. But before we do that, just like how we had this view here for unprocessed, we need to have a view for untagged. So let's go ahead and create a new view here. I'm going to jump down here, add a new grid, untagged, create new view. Now, in this case, what we need to filter for is whether or not it has been processed. So in this case, we want to make sure process is checked. And then we want to add a condition where the tags are empty. So we'll do tags is empty. And just like we did before, we need to have a last updated for the tag. So I'm going to go ahead and add a new column called last tagged, scroll down to the last modified time, we're going to pick specific fields. And then we're going to go ahead and use the tags field and use selected fields. And then we'll create that field. so we're good to go i'm going to jump back to that make scenario we're going to add an air table watch records going to update the connection tagging and search demo base is tagging and search table is content and then for the trigger field we'll go ahead and use last tagged label field will go with id we'll go ahead and limit it to 10 that's fine and for the view this time we're going to use untagged and then we can go ahead and click ok and i'm just going to jump back to air table do we have we don't have any untagged in here so let's see what's going on here and that's just because we have these two already tagged when we were testing so if i remove that jump back to untagged still not working here let's just kind of diagnose what's going on so it looks like they weren't marked processed after the automation and that was because the first time we ran the first row we didn't have that automation to automatically check it and now just checking here we have something in row two which is the other row we ran which is keeping that out so if i remove this one the tag from row two and then call row one process then if i jump to untag we'll have two rows here perfect now i can come back to our automation let's choose manually let's just go ahead and pick i don't know just go with row two and so now what we need to do is we need to use chad gpt to analyze all of our text so what do we have available to us we have the title and the text in this case for these two pieces of content for whatever reason are just blank they could have a description in there or not but we do have the image context and we do have the media context and again we have those other examples as well where we have a text post and we have that text so we have all of these different fields here that may or may not be filled at any given time based off of what type of content it is so each time we process it we'll just use it all and whatever we have we'll process and tag so i'm going to jump back to the automation and i'm going to add a new field here we're going to go with chat gpt right here we'll create a completion model gpt 4-0 I'll go ahead and add a message. And for the user role, we'll go ahead and use user. And now for the message content, we'll say analyze all of the text below and develop a list of tags separated by commas that represent the key topics from the words below. and now you can play with your prompt a bit to give you exactly what you want but now what we're going to do is we're simply going to drop in the different fields that we want to process so if we wanted to process the description as well we could We can put the description, the title, the text, the image context, and the media context. And so if anything's blank, it's just going to come through into the prompt blank and it's not going to cause an issue. And then I'm just going to try this out. I've been playing around with the assistant. I'm going to go to the role assistant. The user role is for actually directing ChatGPT. And then the assistant role is really for determining what that output should really look like. ChatGPT is responding as the assistant. So we'll go ahead and just give some sample text as to what we want our output to look like. Tag one, comma, tag two, comma, tag three, tag four. And I don't know if we have to put brackets. I'm just going to experiment just to see what this looks like. And then for max tokens, I'm going to go ahead and use zero. And then I'll go ahead and click OK. And I'm going to go ahead and click save. And let's just run this once just to kind of see what comes out. I believe I already set up the trigger with the choose where to start. so if i run this the first time it should come up with something and then let's see what chat gpt came up with so there's the results just like we wanted clients content production efficiency team reduction video editing production short term results so definitely stuff that i talk about and tags that i might pick myself so that's looking good so now all i need to do is update the air table row with those tags so i'm going to come back to air table we're going to update a record should automatically select the right connection the base we'll use tagging and search then we'll use the table content and for the record id we're going to use the record id from that step in the beginning make sure not to use this id use this id here we don't need the description any of these other fields what we're looking for down here is the tags now in order to do this so we had a list that was comma separated what we need to do is we need to turn that into an array because this value here is expecting an array because it is a lookup field and you can select multiple things here. And so we have to pass it an array so that each one of those items becomes a tag here. But beyond that, we have to also use these smart links because we're passing in actual text. So typically when you add something here, you're supposed to put an actual record ID. So if we were just to put content systems here, this would error out because there is no content systems record id in our air table database and so what we're going to do is we're going to use smart links and what that means is that they're going to take in this name and if there's already a tag with this content systems name then they're going to find that record id and replace it and if there isn't a row they're going to automatically add that row for us which is pretty convenient but we can't use this view here we have to use the map so i'm going to click on the map and then from here i'm going to use the split command which is going to take our comma delimited string break it up by the comma and it's going to return an array which is what this field is looking for so we'll use the value from chat gpt the result we'll add a semicolon a comma and then we can close the open parentheses down here with a closed parentheses and again remember we have to turn on this smart links or we will get an error let's go ahead and click ok i'm going to click save and now i have to come back up here and i'm going to choose where to start choose manually Let's go ahead and pick row two again, click OK. And now I'm going to run this. It's going to analyze it. And then if we jump back over to Airtable, we now have all of the tags that were generated from chat GPT for this given post. You got to love this one here, bald man. So if you look at the image here, it got it right. That's pretty funny. That just kind of goes to tell you a little bit that when you haven't analyzed the images, you know, feel free to come to the prompt here. ask it what you want it to describe because the image context is obviously going to bring back every little thing that it could have found. And then when it comes to actually coming up with the tags, you'll want to think a bit about how you ask it to do that so that per your content in your situation, it's going to develop the kind of tags that you want. And then if you wanted, you could provide a list of tags so that didn't necessarily make anything. up on its own. And if you wanted to do that, it would be pretty easy to do. And you could control it by the tags that are actually in the system. So we have quite a few tags here now. And now I'm going to come back to our automation. I'm going to add a module here. We'll do an air table search records. We'll pick the base tagging and search. We'll go to the table tags. This time we're just going to look up all the tags. I'm going to grab the name. Don't need a formula. We'll limit it to 100 in case there are 100 different tags. We'll go ahead and click OK. I should be able to run this module only. I'm going to come back with all of our tags here. Then what I'm going to do is I'm going to come right here. I'm going to add another module, which is a text aggregator. It's going to take all of those separate rows that we saw right here that has all of this data that we don't need. We're just going to grab the name here. So now let's come to the text aggregator source module. We'll use the search records. Search records for the text we're going to use the values from here we'll use the name that is the name of the tag and then we'll go ahead and show advanced options and then you can add a row separator other let's add a comma and we'll go ahead and click ok and now what we should be able to do is come back to our chat gpt and now we can look at our prompt and say analyze the text below and develop a list of tags so what we might say instead is analyze all of the text below and generate a list of tags using the tags in this list in quotes and then I'll put a quote and then we'll use the text of that aggregator close quote and then I'll adjust this list the selected tags from the list above from the list above separated by commas and then I can remove this here so instead we're saying hey analyze the text below and generate a list of tags using the tags in this list List the selected tags from the list above separated by commas. And so we'll go ahead and check that out. We'll go ahead and click OK. Now we'll go ahead and choose where to start. Choose manually. No items available because we've ran this twice now. So I'm going to come back to our database. Going to go to row one and two. Going to delete those there. I'm going to come back to the tags. Remove bald man. Let's remove some of these other things that just don't make a lot of sense. They're just one word answers so that our list is a bit smaller. Don't need microphone. speaking, podcasting. So now I'm looking at here, we've got 19 rows. Just wanna see if it adds anything or if it just selects from these 19 rows. Choose where to start, choose manually. Gonna grab that row one again. Let's run this again. Haven't actually tested this section here. So we'll see how this works. So if we look here, we should see a list of all of our tags, the one that we've approved. And now we can come back here. Let's just check here in our tags. Ah, so it's still C. It still added a couple of different tags without our permission. So again, this is where you would come back and work with ChatGPT and adjust your prompt here. Here is a list of approved tags that we can select from in our request to you below. And I'm going to grab this here and paste. When you complete the task, do not use any tags that are not in the list directly below. analyze the text below and generate a list of tags using only the approved tags above. List the selected tags separated by a comma. So you can see you have to work with the prompt a bit to get exactly what you want. Sometimes it's actually quite hard to get ChatGPT not to come up with something that you don't want. And so sometimes you have to just come back and take out the tags that you don't want until you really get your prompt working properly. Let's give this a try. I'm just curious. Let's go ahead and click OK. I'm going to click. Save. Gonna come up here to the prompts. Just gonna delete a few more of these here to see how this is working. Black background came in twice. White text, content production. Actually, that's a good one. Groomed beard, we'll take that out. Dark colored shirt, prevent errors. We got 12 here. Let's come back to the content, grid view. Let's take out these tags again. All right, let's save the automation. Choose where to start. curious to see if chat gpt will listen to us in this case that's coming down here to run once come back to air table tags looks like it still added a few looks like it added this just a second ago yeah not always easy to get it to limit what it does but you get the idea you can continue to play with these prompts and really fine-tune it so that it does exactly what you want it's not a bad thing necessarily that it adds new tags but sometimes the tags that it adds are not exactly what we really want to be tagging our content with so finally once you have developed the automations to get the image context and to get the media context then the last thing to do is to build in your search so that it's easy to find the content that you want to search for later so now you do have the ability to create different filters so just like we created these filters here we could create a new grid here we could have a view for just efficiency we could create that view and then here in the filter we could simply say where the tags is exactly and then we could scroll down to efficiency and i thought we had one over here efficiency because it's an array you have to put has any of and then there's our row so you can filter by these views here but you can also come up to the extensions add an extension you can do a search and then just add that extension and then you can just update the settings here so we're going to just search on one table we can pick that table content and then you can actually pick the different fields so from here we could pick just the tags or we could also select the other fields as well the title and the description and then finally you click done and then we can put in efficiency we can search and then it's going to find all of those records with those different tags and again if you set up your search to look at title or description you can really fine-tune this to find exactly what you want and then you can just go to that row and then based off of whatever workflow you have, then you could then repurpose this content. And once you have thousands of rows of content, something like this becomes very powerful and that's what we use inside of our content engine database. So again, if you're interested in building out automations like this, make sure to check out the NoCode Architects. It's a growing community where you can get access to the templates like you saw today and get answers to all of your tech questions. Would love to see you there, but either way, I hope you found this video valuable and I'll see you in the next one.