---
url: 'http://workflows-of-ai.com/blog/automatic-podcast'
title: 'Automatic Podcast'
author:
  name: 'Marcus Johansson'
  url: 'http://workflows-of-ai.com/about/marcus-johansson'
date: '2024-03-05T15:34:49+01:00'
updated: '2026-10-10T12:14:04+02:00'
type: article
summary: 'Build an automatic weekly Drupal news podcast with AI Interpolator, Feeds, ScrapingBot, OpenAI, ElevenLabs and ECA, without custom code.'
tags:
  - 'Marcus Johansson'
  - Workflows
  - 'Drupal AI'
image: 'http://workflows-of-ai.com/sites/default/files/previews/61f36e9934f52137.jpg'
published: true
og:
  site_name: 'Workflows of AI'
  'image:width': '1280'
  'image:height': '720'
  'image:alt': 'Automatic Podcast'
---
Drupal AI

# Automatic Podcast

Build a weekly Drupal news podcast from an empty site, where AI picks the stories, writes the script and voices it, without writing code.

  Marcus Johansson

March 5, 2024 · 2 min read

 ## About this video

This is an end to end workflow of setting up an automated podcast where you don't have to touch anything.

It uses the AI Interpolator module in Drupal together with OpenAI, ElevenLabs and ScrapingBot.

It takes different sources like Planet Drupal, Security Announcements and the New Modules feed, and scrapes the content via ScrapingBot to create context for the AI.

Then it uses OpenAI to ask which of these make sense to put in a podcast, and it also categorizes them for future personalized podcasts.

After that it asks the editor to write a script and sends this off to ElevenLabs to generate the voices.

As the last step it merges this with an intro song to give the podcast some coolness.

This would of course not be possible without great contrib modules like Feeds and Podcast.

Check the podcast out at: https://podcast.workflows-of-ai.com

*This video is from before the AI Interpolator module became AI Automators, part of the [AI module](https://www.drupal.org/project/ai). Module and menu names have changed since, and some steps look different today.*

## Watch the video

[Watch on YouTube: Automatic Podcast](https://www.youtube.com/watch?v=WXy6oIiEqy8)

### Video chapters

- 0:00 What the automatic podcast does
- 6:13 Installing Drupal with DDEV
- 15:02 FFmpeg and cron in DDEV
- 18:06 AI Interpolator, ScrapingBot and Queue Unique
- 25:40 ElevenLabs and API keys in .env
- 34:51 Config export and settings overrides
- 50:35 Content types for news and podcasts
- 59:35 Importing Planet Drupal with Feeds
- 1:08:08 Drupal topics and article scraping
- 1:13:28 Tagging topics with GPT-3.5
- 1:31:27 Rating news in a custom field
- 1:53:57 A news overview admin view
- 2:13:35 GPT-4 picks the week's stories
- 2:25:40 Writing the script for ElevenLabs
- 2:35:31 FFmpeg mix with a Suno intro
- 2:39:20 Show notes from the selected news
- 2:44:03 Cover art with DALL-E 3
- 2:50:37 Weekly episodes with ECA
- 2:57:11 Podcast RSS feed with Views
- 3:19:51 Config export, hosting and next steps

## Transcript

YouTube's automatic captions, lightly corrected. Click a line to jump to that moment in the video.

### Transcript

- 0:00 hi there Marcus here uh today we're going to have the longest workflow ever so that's why I'm doing an introduction here uh the result you can see on this URL podcast. workflows of
- 0:12 a.com uh this is the website that it has generated so for for once this is an end to end workflow where we basically start from scratch and build a whole website
- 0:23 and have a finished website what this is is uh there is a podcast about group all Weekly News but the kicker here then is that I'm not going to sit and you know do
- 0:36 editorial work I'm not going to sit with my crummy Voice or my non-native English language and try to uh create something that would be probably horrific this is
- 0:49 actually 100% autogenerated this means that I have set up the code once I'm just going to let it run except for uh server updates and Drupal updates I'm just going to let it
- 1:01 run maybe do some tweaks here and there because there's some kind of other kind of content I forgot here um but otherwise it's just running by itself um the end result is basically a
- 1:17 podcast that comes every week that talks about a lot of U sources so it comes from like Planet Drupal it comes from other podcasts it comes from security announce ments it's also discussing new
- 1:32 uh like a new module of the week so it's looking in for like the last two weeks is there anything interesting in fold projects and modules uh and it's creating a podcast
- 1:44 around this and everything is 100% automized except one thing and that's the introduction song it's still done by AI so it's done by GPT-4 combined with uh Suno AI
- 2:00 uh and but it will be the same song Always until Suno AI has API because then you can do even more fun stuff like having a introduction song that actually sings about the content that it's going
- 2:13 to talk about but we're not there yet because they don't have API basically uh this is of course done on uh the back of many many great uh writers many great um podcast producers
- 2:30 so just take it for what it is I mean it is it is probably pretty boring but it gives you an idea what you could do for clients that might want to have internal
- 2:42 podcasts or might want to have external podcasts even with stuff that's happening inside the company um it has a XML so you can actually use it on your mobile phone if
- 2:54 you want to listen to this on your way to work uh it is I think a pretty good good summarization of what's happening in Drupal the last week and yeah that's it so this was
- 3:08 basically the introduction of it um you can go listen to it before you you start you know looking into this uh long video on how to set it up so you can see the
- 3:20 actual results from it I will also be completely honest and I'm saying this uh during when I'm setting it up the setup that I made is done without a single line of code I
- 3:33 haven't written any code this comes with certain restrictions uh which uh I have after that basically gone through to make a even better podcast meaning that I have added
- 3:49 code for uh doing stuff like the new module of the week that that I couldn't find a pathway where I could do this with just the Builder Tools in drup I had to write code for this but you
- 4:03 will get something that's 90% of what you're seeing here so it's still a very good uh solution and yeah that's it listen to it um if you like it if you think this is something that you want to
- 4:18 to you know uh create for clients or for your own website uh then please go ahead uh I mean it's very very useful for the long tail so Drupal is maybe not so long tail because there are podcasts
- 4:32 there's very good uh podcasts already about Drupal but if we're talking about even longer tals this might actually be a good way of being able to go into some very specific Niche and create a podcast
- 4:44 around it uh one more thing to think about when uh you're looking at this uh workflow so the tutorial is that I did not prepare anything to be honest before setting uh
- 5:02 this up I had some thoughts what I wanted to produce right uh this means that I do make mistakes during the time uh and I might uh Rectify those later in the video so it's kind of important that
- 5:16 you look at the whole video if you're interested in this otherwise you might end up with a product that doesn't work basically um hopefully so so this took almost a
- 5:27 day to make this video which is a lot of time for me because I want to focus on other stuff I thought this was though funny because it's a end product hopefully I will have this time to do
- 5:38 other end products uh but for now this will be the only video where you I'm showing end to endend how to set up a website so uh yeah if you're interested continue watching if you're not
- 5:51 interested but still in interested in the podcast just look at this URL then or I'm going to uh register it at different podcast directories so you can probably just search Drupal Weekly News
- 6:05 and you will be able to find it um and that's it happy watching so welcome to these development sessions um there are two things I already have on my machine that I will not explain
- 6:23 how to do but I will show you where there is documentation how to do it and it's very simple and it depends on your operating system so I'm running Linux right in this example um but this works
- 6:37 as well on Windows I would there are two versions for Windows but use V vssl 2 so that's Linux on Windows uh if you have the opportunity to do it it makes stuff a lot faster
- 6:50 simpler and then there is uh installations for MOS if you prefer uh that the other thing is I use uh Visual Studio code uh it's the same thing you can see for other platforms it exists
- 7:05 for Windows Debian uh red hat or any Linux and Mac so this works on any operating system that you that you are running so these two are already installed I'm now going to set up the
- 7:22 project so this you can find under CMS quick start and we just click down then to Drupal because we're going to use uh Drupal in this case and I'm just going to copy this
- 7:36 here and I run it in the terminal so if you're um yeah if you're on Mac or linux's terminal if you're on Windows you should use vssl 2 preferably but I guess you can do it in Powershell as
- 7:52 well I'm not sure actually I don't use Windows that much so I yeah my best guess is use vsl2 but maybe power Powers shell will work as well locally I would just call this
- 8:06 podcast uh I will just go into podcast and then we're going to start this that creates a doc rout uh we're going to start the dev there's one uh important thing here so
- 8:23 since I've been running D before this is going to go very fast if you're in installing D for the first time this might take time because it needs to download a lot of uh Docker containers
- 8:36 so now it's actually available on this website I'm not going to go there yet though I can prepare it I'm going to run without https in this case we don't have any um like web RTC or something that
- 8:52 requires SSL locally and we're just going to use composer to get the recomend commended Drupal system going to get trush that is Drupal shell so we can run shell commands here
- 9:08 in the terminal that makes stuff a lot faster than clicking around in the GUI so if you if you really hate the terminal you can actually do I think all the things I show in drush you can
- 9:22 actually do in terminal so that's that we have trash up and running then I'm just going to copy this but I'm going to do one change to it so this is installing Drupal right in
- 9:40 theory I could just click here and install it manually but I don't want to do that I want to use TR but this would install the standard installation that comes with uh nodes and stuff uh or
- 9:52 nodes actually I want but it comes with a lot of other uh things installed that I just just don't want so I'm just going to check through shite install Minal I guess it's
- 10:09 called so minimal okay so it comes directly after the command so we set minimal here so username and password is admin that's okay I'm running it locally it doesn't
- 10:22 need any security locally when I deploy it somewhere of course we should change this uh and then oh this creates a onetime user login I'm not sure why I would want
- 10:34 that actually uh this just opens in the browser but that I already have here so we're here we have our website up and running it looks very ugly that's because I Ed the minimal um setup which
- 10:50 is uh not so nice looking so the first thing I'm going to do is get Gin for Drupal so Gin is a very very good admin theme and since this web page well we will see later
- 11:07 maybe I'm actually going to add a front end to the web page because my idea is later that you can actually personalize your podcast if you're just interested in security updates for
- 11:18 instance you should be able to get it or security updates and security news say that you want that combination you should be able to just get a podcast that just talks about that
- 11:29 for instance so this will come later I'm not going to I'm going to prepare it when we are uh doing this but I'm not going to uh show it yet so we just copy the composer command run DD and this
- 11:41 composer command and it um uh let's see here what's wrong here oh we need gy toolbar first right see if it works better if I get Gin toolbar first and then we can get Gin login as
- 12:13 well because it looks nice basically so the login will look a lot \[Music\] nicer so then I got those three things I'm going to go to Administration extend the first thing I'm going to do
- 12:32 here is turn on the uh tool bar so we actually don't have to click around this much and then gin loging gin toolbar uh we're going to install here as well uh yeah breakpoint module is okay
- 12:47 to install and then we click appearance you see there's admin toolbar now and we're going to uh install this and we're going to use this Administration theme and now you can see it looks a lot
- 13:03 better right so that's that um I can just show you for the fun of it as well that I can log out and you see that the login page looks already a lot nicer um so one thing I saw there right
- 13:24 away that we can or no that's yeah we can do that but first I need the admin toolbar so you see here if I hold over something I have still have to click there's no Sub menu here so this is what
- 13:37 the admin toolbars solve so we're just going to install that and go to extend again and admin toolbar and admin toolbar extra tools is good as well and all right the gene uses this uh admin
- 14:03 toolbar I actually don't like that that much I mean it looks nice but I I'm I still I'm not used to it so I'm just going to go to appearance settings and choose that I want the Legacy classical
- 14:16 tool bar in this case save I want dark mode I think as well is nicer so we save that as well uh yeah I'm I'm just going to do this as well I'm going to set this to
- 14:30 default until we have a until we actually do what I said before with having podcasts running in the front end I'm just going to set this because then it looks nicer when I come to Pages
- 14:41 that's not inside the admin structure right um so now we have that running so we're going to start setting up stuff that needs uh no one thing first that's very
- 14:56 important before I start with that or two things actually uh when it comes to DD that we need to fix so uh oh one thing first in the composer let's see here uh oh this is not our project I'm just
- 15:16 going to go back to the terminal so if you have code where Visual Studio code running you can just write code dot in the in the directory where your code is and it's going to open up
- 15:29 an editor basically inside there so we have our editor here in the composer Json I'm going to do something so minimum stability we have to set to Dev because uh the AI interpolator
- 15:43 modules that I which show you later they're still running in beta mode so there will soon be a production ready I'm running them in production for my company and now I'm going to do this
- 15:55 podcast website that I'm running personally that's going to be kind of in production as well right um anyway so that's that the other thing I'm going to do is in DV config
- 16:10 doyo there should be a right so there's a web image extra packages that takes care of installing stuff and we need ffmpeg to be able to cut in podcasts so because of that I
- 16:25 just write FFmpeg so it installs that then I can start a new terminal here in Visual Studio code we don't need terminal power shell anymore and this will run bash even if you're on windows
- 16:37 so this is uh going to work the same in Windows as well for sure uh and then we just run DD start and it's basically going to restart with uh ffmpeg on the server
- 16:50 now the next thing we're going to do then is to search for uh ddev and Chron because we want a Chron job running and this is a plugin if I remember correct so I didn't work so
- 17:07 much with DV I used to work with doal a lot but I uh for professional reasons I want to learn DV so that's why I'm doing it here so you're learning with me basically so we're just going to uh get
- 17:20 the Cron job here uh and then there is D web build and there is a Time chronic example we can copy and paste this then and it's supposed to be called what Chron star. oh anything that's Chron
- 17:43 okay okay okay so we're just going to call this podcast. Chron and what we're going to set up is the queuing system uh and to be able to do to be able to see what this is actually
- 18:02 called I would first install the AI interpolator and all the things we need there so what we need here is the AI interpolator OpenAI so these are the modules that I'm working on the uh AI
- 18:16 interpolator stuff so I'm just going to download this now we also need ScrapingBot that is basically our way to scrape stuff uh and it's not just a way to scrape stuff it's a way to scrape
- 18:33 stuff uh that's rendered via JavaScript so a lot of modern websites right they um they are are not scrapable service I render they need JavaScript to render so you actually
- 18:47 need a browser to take uh uh scrape this so that's why there is the ScrapingBot and if you're going to do this workflow you're going to use ScrapingBot since it's a service that costs money by the
- 18:57 way uh notice that there is a promo code here you can use Drupal Ai and you get some uh money off to test it right um and you also help with the development of this module by doing this because
- 19:11 they are nice enough to give me free uh credits for automated testing to make sure that it works all the time basically so now that we have the AI interpolator there we can run ddev Q uh
- 19:25 list I think it is no sorry ddev d because it's thrush we have to run the queueing system uh oh so there is no let's see if we can find the \[Music\] Q oh you're right sorry there's a
- 19:41 obvious thing I forgot here I of course have to install AI interpolator otherwise it doesn't show up so we're going to do ai interpolator ai interpolator OpenAI AI Interpolator
- 19:53 ScrapingBot this is going to then install OpenAI Core as well that's going to complain that we don't have a API key so if I do Q now no sorry Q list you see there's AI interpolator
- 20:07 field modifier and since this is a automatic system it's very important that all the AI interpolation runs in our Cron job uh because it has to be automated and the uh saving of something
- 20:23 might just take too long for the normal Cron job so we want to have it in a queing system instead so because of this basically what we're going to do here is CD to this directory which is the home
- 20:35 directory right uh we're not need to run date there and we just need to run brush uh I'm just going to do something here we do DD D SSH so I jump into the docker comp container and see if I can
- 20:52 run rush yes it's a globally known command because what you can do otherwise if it's not you can do something like PHP uh vendor B crush and this is usually more
- 21:10 secure uh so this is how I'm going to set up the Cron job on the server because uh it's it's basically less secure to let uh scripts by themselves tell what is executable uh because in theory someone
- 21:27 could you know hack or or you know get an some other Dr file that just runs A bash command or something anyway I'm going to then do Q let me just run the Q command again
- 21:40 it's execute I guess no Q run so it's good I ran that AI interpolator uh field modifier and we're going to set it up so it runs every minute and there should be a uh let's
- 21:54 do Q run help there is this time limit is what I want to add so time limit equals 55 uh seconds so basically it runs every minutes and it's allowed to run up to 55
- 22:12 seconds before the next one starts uh and then we're just going to run I think the dev start again was it D restart and then this is running so now we can make sure that the whatever we
- 22:30 want to do with the AI interpolator is happening automatically based on this there is another module that's extremely important here that we actually install so if we go to the oh sorry here this is
- 22:43 what I'm looking for AI interpolator module uh we should run Queue Unique this is basically a must when you run uh Chron cues so it's a great module uh that makes sure
- 22:58 that um you can't have the same uh Q execution happening twice which is basically what would happen with the AI interpolator because how that works is that if the field that you
- 23:13 want to interpolate into is not filled out yet it's going to uh try to process it but with a cronjob processor of course this means that you could save the entity realize and then it stores
- 23:28 like okay next minute or what whatever it is in the queue I'm going to run this um process uh and it stores this but then you realize oh I I had a typo in the title so you fix the typo and save again
- 23:46 this of course will create another q object because it sees okay this field is empty so let's create another q object and this is basically doing the same thing twice and this of course
- 23:57 sucks big time if you're doing something like a podcast that might be hundreds of thousands of tokens might cost a couple of dollars to generate right and then it
- 24:06 does it twice and if it does this often you know the costs uh add up so you need Queue Unique um to make sure that this doesn't happen so we're going to install that right
- 24:23 away Q we didn't it oh it's still downloading okay Queue Unique and we install that so now we got that um so the next thing because what I'm going to set up now is the environment
- 24:45 so we're ready to start developing right so that means uh setting up so it's actually ready to P be pushed into a repo uh so it's I can set up you know uh uh a cicd system system around it uh and
- 25:01 one very important thing is here that you know we have all these keys so they OpenAI uh API key for instance that we do not of course want to push into the uh push into the repo especially
- 25:15 maybe it's a public repo uh I'm not sure if I'm going to make this public to be honest I we showcase not everything but I'm going to showcase the base at least how to set this up for you uh so we need
- 25:29 a way around that right so but first of all I will start uh installing stuff that I know that I want to uh set up that needs API key so the next thing we need is that we need ElevenLabs
- 25:43 because ElevenLabs is basically going to tell us um how to no it's going to generate the audio sorry I get a little bit confused sometime and when I'm going to in do such a long video it's I can't
- 25:59 keep everything in my mind so I might be rambling some sometimes sorry about that um so then we have 11 laabs field we're just going to go ahead and install this
- 26:11 as well so we're going to install the ElevenLabs field but also the AI interpolator ElevenLabs so that's what made sure that you can automatically generate dialogues so ElevenLabs field by itself you would
- 26:24 manually write what you want the people to say right but in this case we're we're going to automate this if you don't have ffmpeg running on your server you can in theory
- 26:36 set up this use case as well using ElevenLabs field by scale so this is a API service from by scale uh that is here where they do it for you over API but this just so you know it costs money
- 26:54 of course so for automated that happens often maybe it's too expensive I don't know or it's more cheap for you to install the FFmpeg that also doesn't have the cool stuff where you can
- 27:06 overlay audio so what what we're going to have in this podcast example is that there's going to be you know music in the intro underlying the introduction and cool
- 27:17 stuff like that that you can't do with the by scale so by scale can just take audio and put them after one another so we're going to install that this installs the file module as well uh
- 27:31 and then if I go to configuration um web services there is 11 lab settings and scraping Bo so we need all these three things running now and how we're going to make sure that we
- 27:44 don't store it locally is that we're going to get the dot key module for Drupal uh dot oh is it not do key what is it dot n sorry what did I I don't know where I got dot key from M and this
- 28:03 we're going to then run daa I'm going to show you now how much better it is to run stuff in drush because what I'm going to do here is I'm going to install this over drush
- 28:17 instead of reloading searching and so on so now I actually installed this I can just verify this so if we do extend and I search nowm you see it's installed this has a command in it that is
- 28:32 um here crush. end in in it and this is going to set up the initial uh oops sorry so now you're going to see there's a en and a en example n examples take care of this is
- 28:51 going to be in the repo so that's where you can say basically you can store stuff like in this case you can store the database actually uh because it's locally so the
- 29:02 database credentials are in no way uh um they're in no way a secret um you can also we can set app M to Dev actually let's see should like this uh but here we can also then do open
- 29:24 AI key uh no so we just write like this your open a I key and then we have uh scraping B I think that is username and password if I remember correctly let's see here yeah username API
- 29:45 kit um so scraping B password oh so there is one thing by the way just so you know I have um on my private machine I have a co-pilot installed so if you wonder why I'm
- 30:10 getting autocomplete that you might not get uh you can get this via copil copil Visual Studio code but it cost there's a monthly fee for it that you have to pay
- 30:26 basically um there's a legal risk to that as well I will say it right away even if Microsoft claims that they pay for any problem so there's a license for instance called agpl that says that
- 30:41 anything if you put some code that is agpl on a server anywhere that's publicly facing and they realize that this code is there uh you have to contribute all the
- 30:55 code you made so this is a huge huge legal problem for you if this happens so in my case it's fine because I do open source it doesn't matter I contribute already that's what I want to do right
- 31:08 oh this was a great typle by the way um and then ElevenLabs API key so one extra row because then we have those right and then we can just fill these up in the N file so I can just show you how it works
- 31:31 here because the ElevenLabs uh as far as I know I can't generate multiple apis API keys so in that case um I don't want to show with here because then I have to rotate the key and I'm using it at other
- 31:45 places but I will show you how it works for instance then with OpenAI because here I can create a new key podcast test to be replaced so I remember to replace this after I'm finished with this
- 32:02 because otherwise you could in the take this key and you know do stuff on my account that cost me money uh and you just put this into the N file and and the N file doesn't go into the
- 32:14 repo so in that case I could also do which makes sense I could have a development key for OpenAI uh for the local development because this basically in theory if you send them
- 32:28 stuff that are not allowed according to the content policies you can actually be cut off open a I mean that has to be malicious you start sending a lot of not safe for work stuff you know you want to
- 32:44 make a six spot or something then then it can be turned off but of course in the theory this could happen because I could have something like there's some Drupal news about uh
- 32:57 uh some NGO helping out in the in Palestine you know there's a big conflict right now or it's been forever but it's worse than ever and they might have some political
- 33:10 opinion of course uh about what's happening there that might be very heated so they're not allowed to the content policy and then you try to feed this into open Ai and you know
- 33:24 so just so you know the AI it runs it through moderation before so it's not going to happen with AI Interpolator but in the it can happen so that's why it's it's good to have two different keys so
- 33:36 the the rest of these things I'm going to fill out so you don't actually see it but then you know how to fill it out right uh and the next step then is that we're going to add this to the
- 33:46 settings.php uh so here you can take the decision if you should push settings.php to the reap or not but in this case uh I mean n was for the longest time said that you
- 34:01 please don't run this on uh production but I I think it's actually fine nowadays um so what you shouldn't push in this case then is the settings uh d.php so that might uh or basically you should
- 34:19 remove it before it gets deployed because that has a lot of development settings but anyway what we will set up here then is is the settings so we can get these so now we have to try to
- 34:31 figure out uh basically how let me just remove that we don't need a local as well uh here you can see by the way it loads the database from n DB name so this is
- 34:45 basically it's getting this one and replaces this so that's how it works right so what we're going to do now is to set up uh all the settings so but we we need to figure out what they are and
- 34:59 to do this we need to set a a config export place so configs for you who hasn't run Drupal or if you ran Drupal 7 or before uh that's definitely the main strength of Drupal I
- 35:18 would say so I used to do Drupal long long time ago I used to do drup 4 5 uh Drupal 4.7 I was a huge Drupal fan Drupal was everything for me I even you know used
- 35:32 it where you probably shouldn't be using Drupal because I loved it so much um but then a lot of more stable ways of doing development came so I moved away I got
- 35:44 job in you know bigger companies working on bigger Global huge huge scale pro products I was working on one of the top 20 products uh in terms of scale in the world and stuff that you know completely
- 36:01 other programming languages Lua Java what have you not uh because drupa was not professional anymore and I know this is a big conflict some people loves the Drupal hobby tool that's Drupal 7
- 36:15 right uh but if you're working on a professional professional or Enterprise environment this sucks because it's so untestable there are so many steps to you know um set up stuff and I know with
- 36:29 backdrop uh there's a lot of improvements actually running the drup 7 together with this but um anyway I you know like four or five years ago I got working on a big event
- 36:46 website that is truly big as well we're talking about hundreds of thousands of uh visitors coming all of a sudden the same second and we actually did the decision to run this in Drupal and then
- 37:01 I you know I came back to look into what Drupal has to offer now and from Drupal e on they have improved so much so so much so and one part of this is the configuration system then so what I'm
- 37:16 setting up here just is a config sync directory so what I can do now so you should always put this outside the web rout if you can if your hosting allows it so no one can actually find this but
- 37:26 mistake I know there's HDX file but maybe the server runs engine X and doesn't notice this or something so you know always always try to um put it outside of the web web rout and then
- 37:40 there is just uh this command trush config export and then it created a directory here config sync with all the different configurations that builds up this website so what is cool here now is I
- 37:57 could kill this website off completely and rebuild it again except for the content so there's a difference between configuration and content so I'm not going to go into this too much but I'm
- 38:10 just telling people that might be looking at this video because you find the whole idea of generating a podcast automatic and Drupal has uh I would say has a bad reputation and that is uh
- 38:28 I would say earned because Drupal 7 as a developer was horrible to be honest um I understand that PE some people loves it it's it's great for you know actually setting up a website without
- 38:43 knowing that much development but as a developer it was horrible and for you who have this idea I would say try Drupal now again because it is really really great and you will
- 38:56 not find a you will not find a better tool when you want a CMS that is flexible meaning a CMS where you might get a requirement in the future that is of the normal path of a
- 39:14 CMS then WordPress is held to work with and I I am a WordPress developer as well WordPress is super when you want to set up a CMS that follows the normal you know content search for the content have
- 39:27 some fancy first page and so on WordPress is better than drup in that case because the editorial experience is just better uh uh out of the box and Drupal requires a lot more work to get
- 39:40 it up to the same level but if you need something that can scale uh and also can extend in a way that is just better than um better than WordPress and on the other side of it compared to writing
- 39:59 this so if we take the PHP example because uh well no let's talk about you know if you use Symphony or some framework or if you know JS you use express or something I've used
- 40:11 them uh a lot in my work and there is no way you can even come close even come anywhere close in setting up a proof of concept or a prototype website as fast as you can in Drupal so I would say
- 40:27 having a working first version of a Drupal website is 10 times faster than anything you can build from scratch when you know how to use it so that's why I actually push now for everyone to use
- 40:40 Drupal especially with this AI stuff so that's that's why I started working on the AI interpolator Drupal has all the I mean I was working with python and Lang chain
- 40:51 and I realized okay I have to build like a there's no really great uh CMS for python uh that works as flexible and extendable as ruple and Drupal has its field API where
- 41:07 it has all uh the field definitions for extremely complex field type like opening hours where you know you have Monday I'm open between these hours Tuesday I'm open with this hour but I
- 41:21 have exception for lunch or something like that that is a field type that you can actually you know generate automation for Via AI so I quickly realized that inste instead of you know
- 41:33 trying to write this in Python where I have would have to write everything around the AI chaining because Lang chain is awesome but write everything around L chain it was better to
- 41:44 replicate the important things for me myself from L chain into a system that takes care of all the uh content framework which is trle so yeah sorry I got off uh tent tangent here spending a
- 42:00 lot of time talking about stuff that has nothing to do with this but um yeah I I am a Drupal believer again let's say it like that so anyway we have created this
- 42:14 config sync what we can do now uh just to figure out something so the ScrapingBot username and no let's start with the oh I hope the open a I know uh yeah okay I pasted that sorry
- 42:30 sorry I got confused there that's in the N file so what we want to figure out now is how to get it in there so we can just write test here uh and I will show you
- 42:40 what happens now then so now H configuration saved if I run config export again it's going to say oh hey look at this OpenAI settings changed I just say yes and then it's going to
- 42:50 update this file and if we go to this file we're going to see then that it has a API key called test uh but this is not what we want of course so what you can do in the
- 43:01 settings is that you can override this by using the settings uh variable then you use the file minus yo so that's OpenAI settings and then yeah it autoc completes your API key but that we can
- 43:19 find here so that's this we want to set a value that is n OpenAI a I key is that what we said no so it's not aware of this file this is what we want right and then we can just do the same here
- 43:34 for scraping B and do the same for 11 laps so and when we have done that we can run config sync export again sorry you see there is AI interpolator scraping butt
- 43:57 so we just do that say things AI interpolator scraping B then you can press control e in um Visual Studio code because then you can start writing the name of some
- 44:14 file and it's going to find it then you can see here what the keys are username and API key we do use oh sorry that's supposed to be here and that equals n i just copy and paste this and this
- 44:34 was what this was API key and this we call here username and password I guess I should actually call this API key to be more consistent uh and this is then in here
- 44:53 as well we set that and then the last one is uh AI inter no sorry ElevenLabs field settings and we just open that field settings Jamal and this is API key right so we do API
- 45:24 key uh and I don't think that's what oh that's what it was well just let's copy and paste just to be certain so so now we have set up this in the settings.php the N file I'm going to set up outside
- 45:42 of this recording so in another window just so you know so you don't see my keys um The Next Step then is that we can set up a git repo in this case I'm going to use uh
- 45:54 GitHub oh I am logged in I'm going to create a new repository called podcast I can just call it podcast I guess I set it privately maybe I will make it public later I don't know
- 46:08 let's see um and I create repository then inside here I'm just going to run get in it and this is then going to start a repository here uh that is going to store all the
- 46:22 stuff that I want um and uh the next thing I want to do is to create a git ignore file here so we just create a dogit ignore and this basically says which files should we not send into
- 46:42 the repo so we start by not sending the EnV right and I think there is already one in web right so there should be a do get ignore here I guess uh no there isn't
- 46:57 but there's like example so we're just going to copy this into uh here so that will take care of a lot of stuff not being sent so settings. PHP I'm actually okay with saving in this case s simple T
- 47:25 and so on and in this skit ignore we have to make sure that the vendor library is also not sent so there's no reason that all these dependencies that we have uh that we're
- 47:37 downloading should be stored in our repo since it's enough to run the composer install command as soon as you have gotten your website basically um so let's see here it seems to be
- 47:52 having core I don't want core to be sent here why doesn't it do that let's see here uh get ignore get ignore where was get ignore there uh so another thing we don't want is
- 48:16 modules cont so we don't want well let's just do this and tees Contra because those were getting as well profiles cont uh I'm not going to sit is okay s star file we should also remove so
- 48:34 that's all the files that gets created uh and the core we also don't want to basically uh push into GitHub um let's see here so that should be it I guess for now editor config for yeah we
- 49:01 can have that that's fine um so we have done the git ignore to make sure that certain stuff just don't go in there uh and then we're just going to do get add star so we're going to push
- 49:19 everything uh get commit initial setup initial local setup and uh right we create a g Branch main I might have branches on this later but I'm just going to copy the remote
- 49:42 here and then we're just going to push it no it's going to complain because I need to set Upstream of course so now I'm just taking my code and putting into the repo we reload here and that means
- 49:55 means that me myself if I have another computer I can just now do get pull from this uh ddev start it's going to set up the whole environment uh and then run uh DD
- 50:11 composer installed to get all this stuff and then run the installation command I will create batch commands for this later for D but um that is something you can look up
- 50:24 yourself so so at least you now have then a environment to start with so that ends the first part of this uh recording so next step is that we have to start creating content types
- 50:41 um and in the basic setup I'm going to show you I'm just going to have uh two content types making up the making up the well three content types so it's going going to be the
- 50:55 podcasts and that's what's going to be uh generating the actual audio in the end and this is what's going to be uh publicly available also using the podcast modu later there's going to be a
- 51:09 intro and there's going to be uh news and the news is what we're going to out of it uh so we're going to use the feeds module in the scraper bot but it's I mean just so you know say that you have
- 51:21 a Blog then you of course can generate a podcast maybe monthly or something from all the blog posts you did so it you don't have to have external sources necessarily so we just do this under
- 51:34 structure and content type we start by adding the news uh maybe we can call it Planet Drupal news or no news news because later I'm actually I'm what I show you now and just going to use RSS
- 51:50 to get from planet Drupal but later on I'm uh going to add I'm not going to show this so I'm going to make it a lot more complex where it can get security uh announcements where I use uh I will
- 52:03 show you another module here AI interpolator serator Ser this one that can actually Google so it can Google news about uh Drupal so it just gets the last week's
- 52:22 news and try to you know filter is this about Drupal is this important for Drupal and so on uh so I will add that later as well uh probably add sources like uh there's a lot of really good
- 52:38 podcasts about Drupal that's made by humans that's are far better than what's going to be created here so what we can use there is that we use the uh deep gr I we just show you deep am am
- 52:51 inator uh that can listen to these and basically listen to what they're talking about and make a summary of this uh so we can also have like news like this week there
- 53:05 is this podcast you can listen to and they talk about this in this follow the show notes to to to listen to them um but right now for the first version and the first version you will
- 53:18 hear it's just going to be uh setting up stuff from uh Planet trer basically these are news that build up the um build up the podcast they might they might be used or
- 53:41 discarded so one thing here is if I were to do this without trying to show off now here I would have done this as a custom entity type but what I want to show you
- 53:56 how to set up this as well as possible without actually having to code AS few lines of code as possible basically so uh they don't need to be publish promoted to front page and so on
- 54:13 actually I will try to hide them from people right uh I don't care about author and date information this comes with uh uh something called news in this case but I'm not going to use that so I
- 54:30 oh that was the content type sorry I'm stupid uh news for the podcast night or my Discord I wanted to add Fields there I thought it was out to uh generate the field but that field is
- 54:49 actually called body like you will see here uh and the reason I can't see this is I need to uh add a module calls the field UI uh oh one thing I actually will set
- 55:05 up because it's complaining about the Cron job is that uh we also will set up a cron now we can have that here make sure that it runs the Chron also so D Chron so so this is running
- 55:25 all the time the Cron job also uh because it's complaining otherwise here so now we set up the field UI so if we go back to the content type now now there will be manage field here and here
- 55:37 we're going to remove body and I'm going to add a oh right right so here's something we need to get some uh we need the options here and and see where do we have the field types
- 55:58 we need link so these are field types that we're setting up we need daytime because we need to know when the news came in telephone I don't think we need I mean there is actually interpolators
- 56:12 that can get the telephone number if someone we need to say someone's telephone number somewhere um and now I guess yeah it's better so we have a lot of stuff here what we will start with is I think
- 56:32 we add a extra date field here that we call published date because create creation date and update date are built into Dro right but they might not actually uh well I mean we can sync
- 56:48 creation date to publish dates in Fe actually that's that's enough we don't need a extra field for that or do we need that let's keep extra field just I'm not I'm
- 57:03 uncertain now if I need it but let's just keep it there it's required uh so this will be outo fill then via feeds um yeah there is one place I realize now so later I'm going to scrape
- 57:17 from Google new sources and there there is maybe no structured way of seeing the publish date so it actually has to look into the document and try to find it via AI so in
- 57:30 this case it makes sense to have another field that I can use the AI interpolator with uh then we have formatted text that is the HTML so this is going to scrape the
- 57:43 actual website's content uh and get the HTML and this is going to be limited to one and the next thing we're going to do is to set up a link so this is the URL right that's where it's
- 58:05 located uh and this takes only external and disabled link text um let me see so we have title publish date URL that should be what we need to scrape it from uh via the feeds
- 58:23 module \[Music\] uh so I'm just going to add the other ones so this is Introduction so this is going to create an introduction each time for uh the podcasts uh but I'm not adding any field
- 58:43 I'm just preparing it here and then we have the actual podcast so that's the final podcast uh title this can be published well no it should be unpublished by default so we can
- 59:01 actually build it beforehand and then publish it later uh I'm not sure if we're going to make yeah we can make those public available I guess so you can actually
- 59:12 find them uh oh I should write a description for both those also the actual final podcast um so we're going to come to this \[Applause\] later but for now the next step we want
- 59:35 to do is basically get uh new sources that we're going to base the initial podcast on and this we're going to get from planet Drupal so Planet Drupal is you know a a Blog basically that has
- 59:51 interesting articles that happened uh recently um in RSS feed well they have it in this graphical uh feed but we're just going to look for the feeds right and see if we can find it
- 1:00:12 here oh now that's how to add it let's see here maybe I should surf fars s feeds there we go uh so we have the main here right and uh oh sorry we need the feed oh it's
- 1:00:29 downloading in in Firefox I anyway that's the URL we need so what we need now is feeds module from Drupal so we're going to use this to basically get the actual
- 1:00:44 content so I'm going to copy this as usual do D oh sorry D and bum we're going to do DPM enable um feeds Drush I forget Drush all the time PM so we're just uh installing it as
- 1:01:13 well and if I reload now they're under structure there should be feed types where we can add a feed type uh we call this new sources \[Music\] so I'm just going to take something to
- 1:01:35 drink here so these are the new sources that we need right it's going to download from uh URL we use RSS ATM processor is node and we put them in news right it can import every uh I
- 1:01:54 don't I don't know yeah yeah let's take every hour that's okay uh uh we don't have to download it if it didn't get updated request is 30 language English insert new content items we
- 1:02:11 don't need to update existing ones uh previously important items we \[Music\] keep uh this I'm going to fix later so you know after the actual uh podcast is created and saved I will only keep this
- 1:02:33 for like a month or initially for two weeks the reason I want to keep them a little bit longer in the future is because I'm going to add a even better logic uh so in this logic in this
- 1:02:46 initial logic that I will show you I will make sure that it doesn't say the same news two times because it could be that two different new sources are reporting on the same thing right and
- 1:02:57 that's totally uninteresting to say that twice uh so we're going to take care of fixing so this doesn't happen via prompting but uh later on I will also make sure
- 1:03:13 that it can look backwards to make sure that it doesn't say something that has happened before or even follow up so basically you had a news of something that was evolving and then the next
- 1:03:26 podcast you will say like we talked about the last podcast uh there are some new news happening around blah blah blah right so make sure that this happens an owner can be the admin in
- 1:03:42 this case um and author create we don't create new revisions and that's it uh and then we're going to go ahead and manage field I don't know why it looks so funny
- 1:04:06 here is that the Gin module doing this maybe um or Gin let me just try something here I'm just going to turn on claro instead see if this looks better oh clar should be Administration
- 1:04:26 team of course okay so that looks better so Gin actually has a bug so Gin is not actually production ready yet it is release candidate so that could be one of the problems with it so we're going
- 1:04:41 to set now we're going to map then title to the feeds title uh we're going to map URL to the item URL we don't need a link text in this case uh and we're going to take
- 1:04:59 also uh publish date we said which is going to be the item creation date no to this date uh and this is it we're going to save this and then we're going to add a
- 1:05:15 new source so uh let's see here new source where is it we add it is it not under content is there a module I need to install more maybe say feed no should be here uh so there we have the new
- 1:05:50 sources and we want to add a new source I thought it was under content no there we go feeds not sure why it doesn't show up in the menu uh I'm just going to try something
- 1:06:05 here let's just try to flush the cach if that's what no okay but anyway it's here feed um we're going to copy this link uh and we call it Planet Dr right and this is okay and we can import
- 1:06:30 right away actually so there is a problem with importing right away actually and that's that we want to start adding the AI rules now so when I add the AI rules I'm
- 1:06:41 going to have to resave everything but that that's fine um so that is setting up the content types and setting up uh the initial import okay so before we continue I just have a
- 1:07:00 retraction to make instead of settings should be config because this is a config so otherwise the OpenAI won't work basically uh so what we're going to do now is that we're going to start
- 1:07:18 adding stuff with the AI interpolator basically so what I want to do is take each of these uh you know URLs so if we go to the uh this URL I want to read the article what it's
- 1:07:33 about and then I want to based on this try to figure out is this something that X person would be interested y person would be interesting um so we can partition this
- 1:07:47 up in the future for personalized uh podcasts I'm also going to put a category on it uh and based on this basically get an initial idea of uh what um what could be interesting to put into
- 1:08:06 the initial podcast so I'm going to start by extending and adding uh the tonomy module so this is a category module and I'm going to add a vocabulary here a category basically called Drupal
- 1:08:21 topic so these are the topics that we can uh basically categorize the content into so I already have an IDE as you see it prefills even because I did actually do
- 1:08:38 this one time trying out so we add just a lot of um type of categories that uh could be interesting to split this up into and I'm sure I will add more later uh so I mean this is a process
- 1:08:58 that you have to perfect so in general I think that the initial uh podcast will be pretty crummy to be honest and then uh uh later we can try to perfect it as much as
- 1:09:18 possible but the the important thing is I will try to make this completely a so now I added a lot we can just click edit and list here and you can see all the topics we added
- 1:09:30 right the next point then is that we go to the content type um no the next topic is that next point is that I want to get the costume sorry custom field not costume custom field uh module and
- 1:09:47 install that because the advantage with the custom field there's many advantages but with the module by itself because you can actually store multiv values or complex Fields without having to do uh
- 1:10:01 create a field type programmatically but the advantage connected to the AI interpolator is that you can save a lot of money because it cost money of course to do queries to
- 1:10:11 OpenAI so if you can make a query where you give the whole body as context and ask it many questions instead of just one question and do it over and over again uh it's nice if we can add it into
- 1:10:23 one question variant this is something we can do with a custom field so we're going to get this and uh then we're going to install it uh so it's custom field and now then we can go to
- 1:10:48 structure content types podcast manage Fields sorry not pod podcasts we are on new still so the first thing we need to do before we add new Fields is that we need to have context so I'm just going
- 1:11:02 to click here edit uh oh I don't know why this was enabled but we're going to enable it but we're going to choose the ScrapingBot crawler rule because we're going to take the link and crawl this
- 1:11:13 into the HTML so we're going to take the URL as the base field right and uh the next thing we're going to do that is that we're going to choose that we want to use Chrome so we we want to make
- 1:11:29 sure that we can uh scrape react or angular or other websites that require JavaScript to render and wait for Network because maybe someone set it up in JavaScript and it's not set up
- 1:11:42 correctly so it's waiting for a lot of network or it has a lot of analytics and and stuff uh ads running in the background that takes time um proxy countryes un United States makes sense
- 1:11:55 I'm sitting in Europe and I know sometimes I go to American websites and they don't want to they don't have a European audience that's big enough to manage the hellhole that can be
- 1:12:07 gdpr so because of that they just block it so it's better we scrape from us because usually from us you're you have no problems watching European websites uh crawler mode is article
- 1:12:21 segmentation so what you can do here you can take the up of the whole website and that just creates too much noise because it adds the menu and footer and sidebars
- 1:12:30 and stuff you could in theory if you know the HTML selector take that but since we are fetching feeds from different websites there's no way we can use a HTML selector so there is this
- 1:12:42 nice uh readability plugin that comes from Milla so from fir Fox basically uh where you know you can say I just want to read the main content of this article I don't want to see all the
- 1:12:54 other crap I just want to text this is the same algorithm so it just takes it out for you we set weight to a low value so 50 in this case to make sure this happens before any other
- 1:13:07 interpolator can run and then I'm going to add later to qron but I will set it to batch now so we can actually uh provoke this from the uh GUI to make sure that it actually works and then
- 1:13:20 when we see it works I'm going to switch over to Q Chron job we do save this uh and after we save this we can add our first rule then so we take reference taxonomy term and
- 1:13:34 Drupal topic we call this save this this can be unlimited because as you saw in the topics you can have uh a post from Drupal Association about backend accessibility so that's three
- 1:13:50 different uh rules right uh we're going to I enable the AI interpolator in this case as well oh we have to set the vocabulary to Drupal topic and the willu OpenAI taxonomy the base field is HTML
- 1:14:04 so we base this on the HTML I'm just going to inspect this and basically copy this I will make a module for this later so you have these prepared So based on the context text chose up no
- 1:14:17 choose all the categories from the category context that fits this text gives the value options comment and the context so it's basically asking GPT uh to do this now in this case I'm going to
- 1:14:31 set batch it's okay I think to use GPT 3.5 turbo it's it's smart enough to categorize and this saves a lot of money so we're just going to save this and then we can just try this on one of the
- 1:14:43 contents I'm just opening this in a new uh new uh tab here so how this works is that if this is empty wait I'm going to also fix the order of these so we take manage form
- 1:15:00 field there's first of all there's a lot of stuff that I'm not oh publish date is interesting though but publish is not interesting stick it because we're not going to use this in
- 1:15:12 the CMS so we not care about all these field then publish date and URL will come from the feed so we put them in the top right and then HTML Drupal top topic uh will be
- 1:15:27 under uh so it looks a little bit nicer because this is pre-filled thanks to the feeds and the AI interpolator will now fill in the HTML oh I see one thing we should fix
- 1:15:39 first content authoring text format and we want to add a text format that's called Full HTML uh authenticated your search can use this uh and I see another thing I
- 1:15:53 need to do here so we I want to see this in the CK editor field so a y wig field so it looks like how uh you can basically uh see the website so if I go back and configure now I can choose C
- 1:16:10 editor as text editor right I'm just going to pull some of these stuff here so we can go I mean I'm not going to edit this anyway but it's nice to have this rule available because this should
- 1:16:22 BAS basically allow in HTML that is not script and uh script and uh style tags because in theory that could be a security threat of course I mean I could in theory also
- 1:16:40 hide this field so it's never rendered either on the front end or the back end uh so uh we just do that oh did I st don't need sorry so and then if we go back to manage form
- 1:16:58 display click on well manage display by the way we can just remove HTML and stuff here just keep that so it's never exposed in HTML we go in and just set that full HTML is available here because
- 1:17:14 now you're going to see then if we go back to the content this becomes a CK editor field which is nicer and then you see there's Drupal topic and this also looks funny because there's not so many
- 1:17:25 what we can do is that we make it a checkbox instead that makes much more sense and I chose the wrong one again it should be news manage form display we do checkboxes save it because then it looks
- 1:17:40 a little bit nicer with the check boxes and in theory now if I didn't have the AI Interpolator I could go you know do this manually so I go in here and I see okay this has to be the content right
- 1:17:54 and paste it in and then read it and try to figure out oh this is about a podcast about General use right or something like that so but I don't want to do that because uh I want the AI interpolator to
- 1:18:10 do this automatically so instead I just click save and it starts working and now you see that it's doing it in batch mode so this is what we're going to change to
- 1:18:18 doing in Chron job later right um so now it's going to ScrapingBot asking that to basically scrape this website and then trying to figure out uh taxonomy on top of that so let's see takes very long
- 1:18:38 time why would it take so long time I maybe should check so I got the keys correct here let me see here uh text editor that took too long time I have a feeling let's see no HTML found so maybe
- 1:19:03 scraping but is not set up correctly or we try this I try just try another one to see if the same thing happens there no that works so it could be certain websites might have uh blockers
- 1:19:17 basically from automated traffic which is nice right uh uh no this also got no HTML found right or which one did I save no this one so something is wrong here I'm just
- 1:19:36 going to check again on HTML ScrapingBot crawler from the URL use Chrome weight for Network maybe we'll try without weight for Network just going to see if that works better
- 1:19:52 just remove move this so I should actually write there if there's uh no HTML found it should not set any categories of course let's see if this works better but anyway I'm going to open here and
- 1:20:11 this so I'm checking just outside of the window here uh so I set um set the rule correctly here so ScrapingBot API key ScrapingBot username I'm just going to check AI
- 1:20:37 interpolator ScrapingBot settings which is username and API key username API key scraping but username scraping pbot API key that should be correct so let's see so there was the drop times there
- 1:21:06 nope yes let's try on another one drop scker see if this works uh so we can see try to figure out why this isn't working no HTML found so something goes wrong there anyway
- 1:21:27 first thing first um or no that's actually fine when it says no HTML found we can add a bolean later that takes care of making Mark those because there are stuff where you can't
- 1:21:43 just uh basically scrape it but I'm going to find out why this isn't working so uh I C there because I needed to figure out why it's not working and I'm just being stupid this should be do
- 1:22:00 settings because the file is called settings. yo so I didn't even follow what I said there myself and now we're going to try just this and see if it works better
- 1:22:13 hopefully uh okay so I clicked back there which is not good we do this save let's see if this works better now uh let's close this so that might have worked better yeah so now it's got
- 1:22:35 the HTML here and it has set categories So it's talking about the best college websites on Drupal it has marked this as Drupal 10 let's just search here Drupal 10 yeah so it's uh
- 1:22:53 mention developers focused on a yeah I wouldn't maybe set this to development but I guess development versus for developers is different frent new modules tuto tutorial let's see why did it
- 1:23:20 say let's see because it's just saying that we so here comes prompt engineer we need to create a better prompt here for sure this this prompt sucks um let's go back to our uh Drupal topic
- 1:23:37 and we're going to do this a lot better based on the content I choose all categories that fits the text so you are a Drupal so this you can actually set in roll but um I I think it's better to set
- 1:23:52 here usually you are a Drupal expert that is looking at articles about Drupal based on your experience and the context of the article choose all the categories from that
- 1:24:24 that be precise and strict so this is just a start I'm going to maybe perfect this outo screen as well because you you might need have to give examples what is what basically but
- 1:24:40 anyway while you're doing it how you can test this is you just uncheck everything because then it's going to run again right and then we check if it got better so now it's develop velopment and
- 1:24:53 tutorial so I wouldn't call this a tutorial at all so uh let me see it doesn't say the word tutorial uh school no uh so we're just going to fix the it up even better
- 1:25:21 uh a tutorial is a guide that goes from one to go goes through steps how to build something build set up something set up develop something um if you do not know what to set set General
- 1:25:53 use develop develop so development is should only be set when there are code examples or the article is mainly about a piece of code or a Drupal module or piece of cord or Dev developing a drup
- 1:26:28 modu thing so let's try this then so this is the the problem of AI which makes it pretty fun to work with but also frustrating that it's uh it's not deterministic because if I do SQL
- 1:26:43 queries I know exactly what to do right because and I know exactly the results already when I start planning I I kind of know how to solve it and how to do it with
- 1:26:54 AI it's not deterministic which means that you you have to like prompt it like a junior intern or something until you get it right so now we got it right this is General news this is just about like
- 1:27:09 11 best university websites on Group B uh so we're just going to take another one the accessible Tableau integration module so this is for sure about accessibility right it's about
- 1:27:26 uh yeah let's see we have to read the article also so I'm going to save this and we're going to see first of all it's about the toow integration module so I guess this might go under
- 1:27:44 development as well yeah development new mod oh how can it not go under accessibility it's about accessibility uh that is very peculiar so we might have to give
- 1:28:04 more uh anything that mentions accessibility should set the accessibility category because basically if that word is mentioned it is interesting for people that works with
- 1:28:24 accessibility right so I'm going to reset this and we're going to run it again and of course one option here instead of doing better prompting is that you do GPT 4 that understands
- 1:28:36 better so now it did accessibility and development and that that is uh probably uh true I should also add so it's actually cheaper uh uh to add a very long prompt
- 1:28:56 for GPT 35 but because it's so much cheaper so actually doing a lot more explanation and sending it to GPT 3.5 is cheaper than uh just doing a one-off sentence and then sending to GPT-4 but of
- 1:29:10 course it's easier to do the oneoff sentence but now this is my private money I'm going to run this every week so it cost money for me so I want it as cheap as possible to shot ose a new module
- 1:29:25 category there has to be some explicit mentioning of that this module is something new so I just add this and in this case uh I guess it doesn't matter doesn't mention it so it's okay there
- 1:29:46 actually then uh designing content so this is a very short text it will be interesting to see what it sets but it should set podcast at least because this is a podcast right and they mention
- 1:30:00 podcast in the text I'm pretty sure so going to check General news sit down let's see if it doesn't mention podcast no it doesn't mention podcast in the text uh so this might be a place where I
- 1:30:20 actually have to set uh uh some general uh development rule maybe I can use ECA for it to basically check for parts of the URL so if this part exists then maybe it should fill out
- 1:30:36 also the podcast right uh because they don't mention podcast in the text so uh it it can't know then when it says we sit down with Greg Dunlap that uh you know it's about
- 1:30:51 it's about the podcast um so this I might add later but at least we have a rough topic now right that kind of works and this is something I'm going to um improve
- 1:31:06 off uh camera but as I said this is a lot like instructing a unior intern what it's supposed to do so it's it there's nothing in terms of development where I can actually maybe tell you that much
- 1:31:22 more more than going to learn more about prompt engineering so the next thing we're going to do is the custom field and these are um podcast filters I guess we can call them so this is trying to
- 1:31:37 figure out um a lot of stuff in one query uh so I'm going to start with a number integer that we call general interest then we're going to add another uh that is number
- 1:32:01 integer developer interest so how interesting is this for a developer can I add another number so I'm going to rate this like uh 1 to 10 uh we're going to take uh yeah
- 1:32:20 security interest uh we add another that is accessibility interest so and these I can of course add a lot more later uh then yeah what should we else add as rating so the thing is here we can also
- 1:32:57 add check boxes right so we can set a Boolean that sets uh yeah what do we need to know more to take a decision oh yeah uh is origin is origin story so this is going
- 1:33:22 to ask basically does is origin source does this seem to be the actual original source of the story or do they just reiterate some other source because if there is some big news happening so
- 1:33:38 there was this news about uh like almost every big university in the world uses Drupal right and this was big news so this got reiterated in many blogs but the only interesting thing to men
- 1:33:51 mentioned there is the original Source right and they should have the credits for for writing it um so that's a typical example of using a Boolean there what we can add already here is that it
- 1:34:06 should summarize we take a text long so it can do this as part of this query as well uh so we basically have a short summary I guess we can call it short summary
- 1:34:22 uh and that's it for now I just save so you can't really set an AI Interpolator until the structure is set and that's not set until I click save settings but something is wrong
- 1:34:34 here uh did I forget something no oh you have to click twice I think with custom filters uh so the custom field is also not production right yet so you know but anyway now
- 1:34:48 these are all set which means that you can also so here start setting settings for them and then we're just going to set minimum 1 to 10 right or zero to 10 actually something can be completely out
- 1:35:03 of scope for interest for Developers for instance uh and I you know I will probably add a lot of these later more so oh sorry uh so we can do this personalized podcast
- 1:35:20 later but for now uh we're just going to set this and the text area we don't need y wi I think is just saving a long string for the AI itself basically and then we're going to enable
- 1:35:39 the a inator sorry I need to drink care so I don't call so we're going to enable the AI custom field we're going to use used the HTML as no I will show you something
- 1:35:56 here actually just disable this a little bit because the title might make sense to add here it might have made sense last time as well so we're going to add the token module now so we can do
- 1:36:08 Advanced prompting and advanced prompting basically means that we can use multiple fields or even external entities to do the prompting and in this case it makes
- 1:36:19 sense because then we can use the take title and the article and the title matters extra much I guess in this case to do a choice about all this stuff right uh and that might actually just I
- 1:36:35 just yeah the podcast problem so we're actually going to fix that while we're at it so let's start with the Drupal topic uh I'm just going to copy all this and then I'm going to switch to advance
- 1:36:48 mode so this is enabled now because I enabled it token module uh so what I need to do now is well let's see if this works with the taxonomy I'm not sure because I need
- 1:37:02 the uh taxonomy values here podcast no sorry what was this called rot topic I'm not sure what this gives back but we can try this because if it only gives back the ID IDs the a will not
- 1:37:21 work because it needs the actual names of the the taxonomies right uh but we can see maybe it works so we're going to get field HTML here as the context uh and we're going to add
- 1:37:37 article title right this is then going to be um this one no title uh so let's see if this works we save this I'm not sure if this tonomy thing is going to work I mean you could
- 1:37:57 in theory list them manually but that sucks when you add them something you have to add it there as well right uh we just save this no it added it to General news
- 1:38:14 anyway because it can't read uh read the advanced field in this case so the Advanced field won't actually work on this uh which is a Pity I will have to think about a solution for this actually
- 1:38:29 so we switch back to base mode and this should be context we don't have article title and this we can get from here comma separated values otherwise it's the same so this is back
- 1:38:55 to this but for uh for the podcast filters we can definitely set this then so uh the well let's see I'm not sure if I have actually Advan mode here yes we do because this is a little bit special
- 1:39:15 because this has a overlying prompt and then it also has per field a minimal prompt and example how to the the um how the value should be right so you do something called onot prompting I think
- 1:39:33 it's called onot learning maybe it is um to make sure that this is understandable basically so we're going to uh do this let's copy this actually no this is a long one one based on the
- 1:39:53 article title and the article text figure out oh we start you are an expert at the CMS Drupal and you are editing a podcast about Drupal news and are figuring out
- 1:40:29 how out which news of the week to include in the show to do this you have a rating system for different Target groups of0 to 10 where zero means it is of no interest for them and
- 1:41:00 10 means it is of fundamental inter off for them so actually ger English is not my um native language as you can hear so what I could do here I could actually prompt this Swedish I'm from Sweden
- 1:41:22 right but I'm not sure fundamental is the uh uh of critical interest for them right I'm not sure what the correct word is there uh also answer if what did we have uh
- 1:41:44 also try to figure out if this is the origin in source of the news or if they are reporting someone else's else someone else um if there are no sources in the text you can assume they are the origin
- 1:42:19 so I'm actually want to put this on a new here uh then I also want you to write a summary of um maximum four sentences about the new uh about the article and why it would be of in
- 1:42:50 interest to report on it if at all so also here try to filter out texts that are just to promote the own business or that are to General about Drupal or or that are so General about
- 1:43:25 truple that anyone that knows trle has no interest in them remember that this podcast is for people that uses Drupal uh fairly often something like that right um So based on the article things already
- 1:43:53 to figure out all these data points so article title is see here uh title and article text we just feed it here then the HTML value I think we can take so it actually
- 1:44:21 strips off the HTML uh and then we have to set them I'm going to use B here by the way as well general interest how interested are the is the general uh grp bow professional about
- 1:44:44 this news uh I just set that's six between 0 to 10 right is a Drupal developer about this news how interested is a a Drupal security Drupal security advice I don't
- 1:45:22 know uh Drupal accessibility expert accessibility expert about this news I that's a article it's article system I can use uh seven is origin source uh is this the original source of the
- 1:45:57 \[Music\] news answer zero answer one if it is otherwise zero right a for right uh summary of four sentences so I'm just reiterating but this in the end this is creating a big Json blob uh
- 1:46:26 and asking for a big Json blob uh back and that's why we need these examples this article is about the token module and to install it uh how to uh add new tokens to it
- 1:46:52 it's interesting interesting for developers right this needs GPT-4 uh so I'm going to use turbo preview for this save it and then we're going to try here so this is a very short text here you
- 1:47:10 see all the by the way all these things is going to fill out uh oh what did I forget here I forgot something I'm pretty sure batch should be bat maybe I need to run it with a Reload
- 1:47:30 no why is this not working save what am I missing here could it be that I can't also use the custom code here I'm just going to try this then \[Music\] um where are we
- 1:47:55 here uh let's try base mode then just to see if that's the problem article so might be actually that this has a bug in trying to figure out when to use it uh in advanced mode no so that was
- 1:48:32 not it uh what are we missing podcast filters it has enabled the AI interpolator it's using OpenAI custom field base mode on the HTML field which is filled out
- 1:48:51 uh Tas batch mode Let's try direct mode ey moderation so somehow it could be that it thinks that this is filled in so I will try to to figure out what the issue is here so it turned out it
- 1:49:24 was actually a bug in the module uh this has been fixed now this will be pushed and a new release will be available when you start doing this yourself so now I'm
- 1:49:35 going to try to save it again and now it should be aware that it needs to save so now it's doing right and this is on this short podcast text so the question is if it can actually give a
- 1:49:48 high value there so I might have to do in the future what I said basically that we're GNA listen into the podcast to use this as context as well to for the topic
- 1:50:01 and for the this rating so it's still I mean it got general interest and developer interest up security and AC accessibility not so much so I know this is about a great book go to Kickstarter
- 1:50:16 and actually buy it I'm going to do it uh from Greg Dunlap that uh was part of uh creating Drupal eight and the whole uh redesign of the config system that we talked about
- 1:50:33 before um so actually read this so it got okay values actually it's a origin source of course no one is if someone referenced the podcast it wouldn't be and then a short summary what this is
- 1:50:46 about uh and this is all little text that the summary is almost the same length right so but we're going to take a longer thing here to try oh this one I saved just to uh try it out and you can
- 1:50:59 see this is about accessibility super high developers are interested in this as well general interest in this this one I would say should not have so high uh interest except for maybe
- 1:51:15 general interest then but we will see um I'm I mean you can talk about security and accessibility it's probably a little bit interesting because of course if big universities are using it
- 1:51:27 it means that Drupal is accessible and usable right uh so general interest is up security was not so accessibility is up um I don't know if it actually menur yeah okay accessibility so that's why um
- 1:51:48 and there is also developer interest so something actually I might do later if we're going to personalize if you are someone who cares about accessibility it should probably in the podcast talk
- 1:52:00 about this article from accessibility and maybe this specific uh you know uh University uh for instance uh so anyway uh we have a summary as well uh and the Reason by the way I have
- 1:52:18 these summaries is because there going to be overreaching editor later choosing the topics based on on a lot of uh features but um what the next step I want to do now is I want to actually
- 1:52:31 create a view for this where I can get a little bit overview of everything I've done and what maybe didn't get good uh ratings and so on oh before uh I do this though I just going to do something here
- 1:52:51 uh and that is basically say if it returns no HTML or if the article says no HTML or something similar and just set rating one on every everything and do not summarize this
- 1:53:28 should oh okay I'm a toic now but yeah we can do the same here or something similar then now here we have a failover it will set General news right but on uh the podcast filters it should set
- 1:53:45 low uh low interest uh on everything so it's not going to take that right uh but anyway I want to create a view now so I get some admin admin overview so there is the views module
- 1:54:01 for this we're going to enable that in the UI and then you're going to see that the content by itself actually already got better right uh so in theory I could uh
- 1:54:13 fix this one but I'm going to create a new view for this instead that we call uh uh new new over view that is a content of type news going to create a page called news overview that's under
- 1:54:29 admin SL content SL news overview is going to be a table okay show 50 pages we're going to create a menu link so it's going to be under Administration uh content we add it
- 1:54:46 there news overview save it start by setting the permission to um news news news uh edit any content we can use as the permission we show the title and then uh we're going to show
- 1:55:08 the not topic we're going to so this is a very quick way of uh setting up a Administration view if you haven't worked with ruple before so you just set which Fields you want which permissions
- 1:55:23 how it should look which filters you want and so on and it does this so I'm going to have link to delete content edit content uh we're going to use something called the drop button to have those and
- 1:55:37 then we're going to do the custom field which is what did I even call that filter uh so we start with the we don't call it to put just topic we take this and this should be excluded
- 1:55:54 from display because I want this to show up in the drop button uh edit exclude from display uh podcast filters we're going to start with uh just showing general
- 1:56:12 interest uh so we're going to set hidden on developer interest security interest hidden so this is a little bit annoying with using this but especially in uh especially in a table view right um
- 1:56:33 but that's just how you have to do so we can basically see the general interest just write General so the table doesn't become too big and drop button should be called
- 1:56:48 actions and and I'm just going to restructure those so edit comes before delete because I don't want to delete by mistake uh oh link to edit content where is that
- 1:57:04 podcast F wait did I call that wrong here podcast filters that should be link to edit content so uh and what podcast filters that's General Drupal topic is topic that seems about
- 1:57:31 right then I want to be able to uh filter on topics so we do a drop down filter we expose it so any anyone can choose it and then we just write topic here we just write topic here so it's
- 1:57:50 short and concise we don't create a super big uh URL we don't care if it's published uh we don't care about sort criteria we're going to use table sort for that so we create click setting here
- 1:58:04 that we can uh sort on General uh oh I forgot something very important here publish date of course we need to show we just show it in in uh short date format this should come directly after
- 1:58:27 the title go to settings we should be able to sort on this descending and it's the default sort save this if we check here now there is news overview and we have
- 1:58:41 our field oh so I see right away general interest we're not supposed to show the uh label here just apply this we reload and you can see that we can show like the topics here we don't
- 1:59:03 want to link the topics we have no use of this Texton page oh sorry that was not that so we have the topics the general uh rating the link to edit content should
- 1:59:24 be excluded I thought I did that save and then we can edit and delete and then we're just going to add the other ratings here now so we have to add again podcast
- 1:59:37 \[Music\] filters uh we're going to sort this by developer interest if you want to sort it this is H oh what happened there this is hidden developer interest we want to
- 1:59:56 show but no label oh sorry no this is hidden this is hidden this is hidden uh this is hidden this is hidden uh and we had developer interest here apply this rearrange you see we call this
- 2:00:32 developer save it just to see then we have the developer interest there um I I think I need to fix that uh fix that promp by the way that's way too high podcast
- 2:00:53 filters so this is a little bit annoying having to do this I think this has a bug in it obviously so security interest High general interest we High developer interest but we show security
- 2:01:12 interest without a label call the security by the way because then we're going to have this nice view where we can see everything basically and get a nice overview I'm going to add
- 2:01:35 another uh podcast filter that is then accessibility wait let's apply this first because there seems to be some bug there that's sorted by accessibility interest
- 2:01:52 we High general interest wa we High developer interest we had highight security interest High accessibility interest uh no sorry that should be seen but with a hidden hidden
- 2:02:12 label and now we're just going to push those up there save reload here and you can see them here right um okay so we have a good view here as well I don't think we have to show if this Orin
- 2:02:36 source and you see I have filter so I can click accessibility and just save and here I can also see which one didn't run then so but in the future of course or that's what I'm going to do now as
- 2:02:47 the last step of this part is that the Drupal topic well first I'm going to uh no so what I'm going to do here set this to qron so it actually runs on the Chron yob instead of when I'm saving
- 2:03:03 it uh and then we're going to also do podcast filters here and I'm just going to fix up this a little bit to try it first um uh set over five when it includes tutorials or
- 2:03:37 code set only over five we save this uh and then I'm just going to I don't don't understand how this would be eight for instance so we're just going to remove all this stuff so
- 2:03:53 it runs this again then we're just going to see if I get a better developer score and then I I need to tweak this of course later but then you get an idea how you can tweak
- 2:04:04 this um and if that is yeah developer score one instead that's very good I will just try this if I can find some something about this maybe yeah this one is good I'm just
- 2:04:29 going to try to save this because this feels oh if I want to save this I have to turn on Drupal toic to be batch mode again just so it saves that one as well just reloading saving
- 2:04:52 let's close this we don't need that anymore so now you see it runs all three of them because this didn't have anything so it got developer interest n perfect because this is of course super
- 2:05:08 interesting for developer how you can set up SSO uh with Drupal um so we have that one thing I'm going to do now by the way this might not be later but I'm going to also configure
- 2:05:23 here in system basic site system so this is my first page so if I visit the website I see this and I think if I go just with uh if I log out I'm going to get access denied which is fine
- 2:05:39 because I'm not supposed to have access to that right so good uh one thing I saw there by the way we should do right away configure people account settings people should not be able to
- 2:05:56 create register accounts on this this is not the open website so I just do this so administrators only can create account maybe I'm going to add account laters if you want to have personalized
- 2:06:08 podcasts so you have to get account for that but let's see that's a later question so that ends this part we have set up the news we have uh basically used AI to figure out
- 2:06:23 to to have a initial thought about if this is an interesting article at all so now we're going to go to the next part where we're uh going to create the podcast basically
- 2:06:37 um so what I'm going to do in between there I'm going to just make sure that everything is resaved so all these uh numbers fills out because that's what oh no before we do that so you just see it
- 2:06:51 is that I'm going to uh go here and set this back now to qron then because that's how we want to run it this and the podcast filter and the HTML fing uh so this happens automatically
- 2:07:07 when an article is added right \[Music\] so and since this is actually a new months now I can just for the fun of it give you an idea of the costs here because we ran
- 2:07:23 like four articles and we have run it over and over right uh let me see here is it under personal no it's usage usage usage there we go just so you can see yeah we're up
- 2:07:40 to almost a cent no 7 cents almost 8 cents so you see it's not expensive well it depends on how much you create of course but uh I'm going to be able to handle the cost of this podcast even if it's
- 2:07:56 free and I'm not going to put commercials on it I promise because this is in the end not my content I'm just setting up a Serv so you can basically find articles that real persons took
- 2:08:08 time to write um yeah so that ends this portion of the tutorial so now they are filled in as you can see I will show you because I actually added another field here um so
- 2:08:27 there are some problems with this also I can say right away uh I will show you when it comes to drop times so the drop times has certain type of uh content it's interviews I
- 2:08:42 think where it basically does not recognize what is the content and this is Sol there is a hook that you can hook into uh and I'm going to fix this for um for the drop time so they're going to
- 2:08:56 show up but since this tutorial is only about the stuff that I can control without actually doing any coding I will not touch that so this is something I will fix later I'm going to try to set
- 2:09:10 up everything without coding in this case so um anyway what I added then well first of all when it came to Drupal topic I had to add a lot more to the prompt um to give examples to make it
- 2:09:27 more diverse because it wasn't setting back and front end for instance it wasn't setting core for instance so I had to redo that resave everything uh when it came to oh no not
- 2:09:42 podcast filters that that actually worked uh fairly well well there is one thing I added and that was pushing even more that this is a a um podcast for people that knows drup
- 2:09:58 ball and if there are like commercial Texs that's done for SEO like how to upgrade to Drupal 10 and stuff where it's clear that the company wants to sell their services it should try to not
- 2:10:11 uh give them so high rating but then also what's important was to get the original author because we want to give credit of course uh and there are a lot of Articles where it says the author
- 2:10:25 right so I'm not talking about the host name or uh or like the company or the blog behind it I'm talking about the actual person writing something so I added a string field and there is a
- 2:10:37 scrapping B author crawler that you can use for this just um but we also want the source right so now I'm going to do something that I if I even if I did the AI Interpolator I would not do it this way
- 2:10:53 because I'm I'm a a developer I would write one line of code that's needed for this but I'm going to show you how you can do this without coding so the problem is this right we have
- 2:11:05 um this is labot right so this comes from labot uh but I mean we could in theory prompt um prompt the the AI to give this back but um in this case we actually just want the source here so
- 2:11:27 we want like LA but come right so what exist is this AI interpolator extractor so I'm just going to download this and install it um and then we can use a uh regx to
- 2:11:45 um basically extract this from from the link so I will uh just uh let's see here uh do crash PM enable oops I just need the nameer extractor so let's close some stuff here
- 2:12:18 uh so I have installed this um so this is installed then what we can do is create a new field here that we call original host uh plane text text plane I assume it's not going to be over 255
- 2:12:41 characters uh we are going to enable this to rig ex uh extractor on the URL and we need to put in a regex here this we can do direct because this is so fast that you're not going to notice so
- 2:12:57 I have a regex that I have tried here this is what this is linking to it's a great site for trying out Rix so I'm just going to copy this this doesn't copy with the Slash and the Slash and
- 2:13:10 this should be I am and we save this and now then if I reload there's going to be original host field if I save this click edit again hopefully it becomes laom right uh so once again I'm going to
- 2:13:27 resave everything uh and then we continue so I did resave everything now uh it's there our next step is that we're going to have the podcast choose which one of these to use in the weekly
- 2:13:43 podcast uh how I'm going to solve this now is the site build way um I had to think a lot about how to actually solve this without coding but I think I have a solution for this so this is what I'm
- 2:13:57 going to show you now this is not how it's going to run later because I'm going to add code basically because I'm going to add a lot more uh news input stuff but for
- 2:14:09 this this purpose we're talking about now I guess it's okay so we're just going to create a view that we call all possible news so this is going to list all the
- 2:14:26 news that we can use we're not going to use introduction I realized for how we do it here by the way so this was just unnecessary to add so we're going to have an unformatted list of fields we
- 2:14:39 want to show everything so we don't use a pager uh this is going to be scraped by something called the simple crawler so so this I already installed by the way so this is another way of uh using it's
- 2:14:52 like ScrapingBot but it's uh it's uh for service side rendering which I know is it is in this case it can also run against Local Host which is pretty nice uh and here we basically now need
- 2:15:06 to uh output this in the most textual way possible so as little markup as we possibly can get so we start by adding all the stuff that we need here so we need drot topic right we need um
- 2:15:25 original author original host podcast filters we need in multiple ways I guess the URL we need for sure did we forget something here publishing date publish date we
- 2:15:40 need so um and with topic we just don't want to l link it original author wait oh I forgot we should exclude this for this from display I will show you why going
- 2:15:56 to exclude this also from uh display but in this case we're also going to rewrite the result and just give back the summary nothing else here uh we're going to exclude this as
- 2:16:13 well exclude URL and here we want a show URL is plain text we remove this apply and then title we take exclude from display Drupal topics exclude from display so you see nothing is here
- 2:16:30 actually uh I can also remove publish by the way here sort criteria should be rating I guess um general interest and descending so it shows the one with the highest General
- 2:16:46 uh interest first and same here general interest we can do that it should be greater or equal to five otherwise it makes no sense to choose it uh and we have to output something
- 2:17:01 right so we just use Uh custom text in this case so we're just going to use a lot of Replacements here to do title title right topics and then uh author and you can see these
- 2:17:26 has new lines when when they are rendered in HTML it might look like they're on the same uh line but these new lines will be kept so when we fetch that they are
- 2:17:38 there which is really important actually uh summary we do last actual publish date URL oops I forgot something there and summary which we will um use this for and then we're also wait do an extra
- 2:18:11 roll and we're going to add a lot of dashes here so we separate each basically and now you see it doesn't look very great here right oh the summary was wrong there by the way
- 2:18:25 forgot um no I forgot it in here I guess then sorry in here rewrite results is missing there see if it looks better now yeah so here it doesn't look good but if we look
- 2:18:43 at the actual source code we can see that it's actually pretty good text and it's new line split as well uh what I want to do is also remove views roll classes here
- 2:19:02 uh we don't want field wrapper elements so it actually becomes less and less um HTML so it's just a div with everything this is good so and this is on admin all
- 2:19:17 POS ible news so what we're going to do now then is that first we can check this out that looks good we're going to go to structure content types uh podcast and we're going to start adding
- 2:19:33 the stuff we need here so this is always going to go get from this link so this will be podcast uh default link call this uh one exter internal disabled I mean it is not
- 2:19:49 external but I have to give the whole uh value here not the enable A8 F default value is what I want to set so we have this as a default value always um the next thing we're going to add
- 2:20:04 here then is plain text text plane long uh select selectable use had here and this is then going to use the enable AI interpolator simple crawler base mode get from
- 2:20:22 this um strip tags we take article segmentation and we set the lower value in this case we can do Direct in this case this is going to be qron later of course but for now just to try it
- 2:20:41 out we just add a new podcast here then so podcast first March 2024 save and we got back something that is a text that is definitely readable by AI so this is great so the next step wait
- 2:21:04 we can take away this and we open another uh another tab here is that we're going to take uh editorial select Dead news so now it's going to select some of these news right and for that I'm going
- 2:21:24 to use plain text text plane I'm just going to get the titles I guess no let's take a text plane long and we're going to enable a inter play to string long base mode and get
- 2:21:39 from the selectable news So based on the context give me back a Big Blob of all the titles of the chosen uh segment segments for the podcast um uh right and context so now we of course have to
- 2:22:15 uh instruct it better that's just what we want in the end basically Big Blob of all the titles uh with a new line after them example this is Title One this is title
- 2:22:40 two and now so you are an editor for for uh pod podcast uh for Drupal let's see here what we have to go with right uh for a weekly podcast about about the CMS I can't spell about the CMS
- 2:23:13 Drupal that uh available to you in the context is all the possible segment that that we can generate a podcast about we want around 8 to 12 segments uh can you choose the most interesting for a
- 2:23:52 Drupal audience make sure to have a divers diversity of topics um and host well what did we call them host yeah uh so that's it we're going to do uh D no we do batch on this GPT-4 turbo
- 2:24:31 preview set 99 because this is needed for some of the other stuff we have the context let's see oh well this works then so we take this we're going to save this now and see if it chooses some of
- 2:24:45 them then if I need to specify more so one one important thing to think about here is that in the AI Interpolator you can ask it to give back multiple values which would
- 2:24:58 mean that it creates multiple text areas if you have unlimited um field right that's why I wrote Big Blob because I just wanted to give back one result with all of it in theide so here perfect it
- 2:25:13 gave back exactly how I wanted it uh so we have the editorials selected uh news and now what we want to do basically from this is that we uh want to generate a podcast so we're almost on the final
- 2:25:40 step now right so I'm just going to create a new field here that I call the dial log that is a ElevenLabs field and I'm going to set this to unlimited because uh we should be able
- 2:25:58 to generate back and forth back and forth uh 11 labs and we're just going to enable AI interpolator in this case um we are going to set enable well we don't need enable batching because we're
- 2:26:17 going to have all this running on Chrome later uh and we're going to use advanced mode for this now so what we want to do is this uh wait I'm just going to copy this
- 2:26:36 because this is pretty very specific um so I'm going to choose a voice later in this case uh but I think I think I have one that's called Freeman here somewhere
- 2:26:50 that is like the ElevenLabs version of uh of Morgan Freeman uh so I'm just going to copy this because we need this to be added oh no now we have a problem here because we cannot use
- 2:27:13 multiple tokens in this case uh because it will not well we can so I'm going to show you something extremely Advanced now then uh because this will of course be uh replaced with
- 2:27:31 an actual ID so I am 11 labs. I'm going to log in here now oh I was logged in uh we're going to take voice and find Freeman and click copied voice ID so this is basically what this
- 2:27:56 placeholder is replacing so we have to say this and then we're going to give a name to our uh newscaster sorry I just need to drink something so I don't start coughing
- 2:28:15 here so sorry took some time um so this newscaster um name will be droopy droon that's nice um and then we're going to do uh based on the possible new sources pick out the new sources from
- 2:28:55 the um selected new sources by title and generate uh news segments about them you are the host Drew droopy Dron that is an informative and very um yeah what should we
- 2:29:29 say very um formative and very clear \[Applause\] Communicator write the script so that it has a natural flow for each of the uh news items mention author if available and mention
- 2:30:03 source which is under the host label it says author here right author um also make sure to mention the title after each news item uh make sure to mention that links to the news item is in the show
- 2:30:43 notes um so pick out the new s and select the new by title the speaker because you are on podcast editor writing a podcast script the title of the podcast is drall
- 2:31:17 Nation weekly uh no Drupal Weekly News it's written by AI also add an intro where where uh droopy presents himself and the uh podcast name and also where he mentions that it's
- 2:31:59 AI that it's completely end to end AI generated um also with the help of the AI interpolator module I have to make some advertisement for my own open source module here
- 2:32:25 \[Music\] um at the end thank and say thank you for listening and that you can uh subscribe where if ever you listen to podcasts uh the leveles we use so here we have to now
- 2:32:57 give them possible new sources oh let's do selected new sources first selected news sources which we get from here here selected \[Music\] news no that's the other one we want this is
- 2:33:28 editorial selected news right so and possible new sources selected new sources okay and uh yeah I'm going to do qon for this of course later but for now I have a
- 2:33:57 very long timeout so I can uh set this to direct in this case I'm going to save this is now going to take forever um so I'm just going to do this click edit I'm going to save now you see there's a
- 2:34:19 dialogue here I'm going to save and then uh there will be a cut and I will tell you how long it took basically okay so we have something here it's like 6 minutes which is a nice uh
- 2:34:33 time I think um I did change the speaker so uh this speaker was uh very annoying I I show something called uh Scott Parker it's called The Voice um and good afternoon dear listeners and
- 2:34:53 welcome to Drupal Weekly News this is your host droopy drupon yeah you can hear I actually added in the prompt uh some changes here so if we go to dialogue and go to the prompt there is
- 2:35:10 uh I added that he should say the today's date because that's of course important then Also may be uh mention uh very close by uh mention like if there's in the Christmas season now he's
- 2:35:27 going to say happy holidays and stuff like that right so anyway we're going to create a new field now where we're going to put the final file so this is going to be podcast
- 2:35:39 file so this is the file that you're actually going to play because if you just Ed 11 um module it's it's basically just going to generate uh like a virtual player
- 2:35:53 that plays MP3s after each other but that you can use in a real podcast right so we create another field that allows MP3 that has unlimited number of um values we save this we could fix file
- 2:36:09 directories and stuff here I guess uh and then we go into dialogue and what's important to choose here is audio generation we choose a uh a field we want to do it in FFM
- 2:36:22 Peg uh so here's the option that you could get bite scale as well and then we can add an intro outro and a soundscape so we're going to uh generate that in a second but we're going to try this
- 2:36:34 first uh and before I do this I don't want the virtual player to show up so I want you to actually use the podcast file uh and this is going to be audio and Playback controls right so we
- 2:36:51 save that and then I can save here so now there's going to be in the end here a podcast file uh uh field is the word I'm looking for sorry I'm tired now I've been sitting
- 2:37:07 all day with this uh and uh we have it here right good afternoon dear listeners and welcome to Dro highquality content content creation and leveraging Drupal yeah so we have
- 2:37:19 the uh final file there uh but now comes the co stuff we want to create uh some audio mix in this as well right yeah so what we're going to use for that is something called
- 2:37:36 uh Suno AI so I've already played around with this because I don't want to sit and spend a lot of time where you have to basically uh look at me generating generating this so I can just
- 2:37:49 see say what I did I just asked chat GPT to create uh lyrics and what kind of uh style of music is good for that and then I just put that in here in custom mode
- 2:38:00 where I added the lyrics the style of music and we got I think I \[Music\] theold so this is AI generated they don't have API unfortunately otherwise a cool thing
- 2:38:24 was was to be have have like a intro music that thinks about the current topics but not in this case it's not going to be that cool so I have a fixed intro for now and to do this we can just
- 2:38:37 click intro here and we just upload i h took this Drupal weekly fade MP3 and we're just gonna save that and then we can edit here click delete remove save and hopefully we get this
- 2:38:59 with a intro now let's \[Music\] see oh we have it with a intro right um so now we actually we're finished with the podcast part uh the next part is that we need to
- 2:39:23 write show notes uh and this is fairly simple so what we're going to do here is that we're going to create a new field called show notes and I think that has to be text
- 2:39:40 plan I'm not sure if you're allowed to have HTML in show notes probably not anyway way I do it in Tex plane and we take enable AI interpolator uh and I'm actually going
- 2:39:54 to go back here uh because I want to steal a little bit here from the dialogue because we're going to need to reuse some of the uh prompt here uh and we're going to do advanced
- 2:40:17 mode and then we're going to write this uh you are podc writing a podcast uh show notes uh it's written by AI the speaker is the host uh troopy drupon uh let's see
- 2:40:54 here I copied out some stuff that was important here so take all select the new sources matum title and generate a show notes about all them in the order this you can
- 2:41:17 mention the title and the link and then on new line uh also add an intro with a three sentence summary of the show today uh including the date uh so in a human readable
- 2:42:14 form without the type uh we just need to remove this and I think that should be enough oh I maybe have to say put them into one blog value to make sure that they not trying to create
- 2:42:41 multiple right uh I will do do gbd4 for this uh for yeah B sure this is going to be qron later as always but I just want to try it now right so we click edit there we have the show notes we see
- 2:43:02 if it can create show notes for us and uh basically show that they are correct later on I'm also going to use the interpolator deep gram I we show that here to uh get the start time of
- 2:43:24 each uh section so you can actually uh show the sections as well but that's for later uh so let's see here we go dropa and they have the URLs here right pretty cool so we have show notes easy
- 2:43:54 enough um I think no what we're going to have to add is another content type called uh podcast information I guess you have to actually invoke this into the XML
- 2:44:17 uh and this can be published uh that is the information about the actual show so uh let's start with I mean I can write the show introduction myself not everything has
- 2:44:40 to be AI generated but uh we're going to do this image prompt so just to get some more AI stuff in here we're going to have a formatted text that is the no I guess it has to be
- 2:45:00 plain as well description uh that I'm going to put in and then in the image PR I'm going to say uh we take description uh based on the context Tech context text generate an
- 2:45:29 abstract image generation prompt about uh this podcast show named Drupal E C news context I context uh we do 95 so this runs \[Music\] first save it then we create the image
- 2:46:06 field so this is going to be the podcast image image continue \[Music\] I don't need alt enable AI Interpolator we're going to do Del to generate this from the image prompt
- 2:46:26 context so that's the actual image prompt we do batch Del three best quality I mean I could save money and do this in chat GPT but I just want to show you that we can automize this as well
- 2:46:39 because I don't think each episode will have one otherwise that would be even better uh for automization of course but in this case I don't think it's like that so we Take podcast information gr
- 2:46:51 Weekly News uh The Drupal Weekly News podcast is an autogenerated podcast by AI using the AI interpolator module for Drupal it talks about news the last week in
- 2:47:22 Drupal um yeah I guess that's enough we save see if it generates something here I can write something better later maybe oh and there's something I'm going to add
- 2:47:36 by the way I can do that right away if we go to our view all possible news I actually have to add that the public publish date uh publishing date should be the last week of course so it should be
- 2:47:53 greater or equal to minus 7 days because otherwise it will show everything later which is crappy so uh this was uh uh bad prompt let's see okay so there's something called prompt perfect I will
- 2:48:16 show you that as well so there's AI Interpolator for everything where you can actually get perfect prompts via this so it takes a mediocre prompt to make a better
- 2:48:29 prompt uh so I will instead do uh uh a podcast host with the head of the Drupal icon on talking loudly and proudly into a micro phone his body is that of an robot we
- 2:49:04 save let's see how this works so this will take a little bit time this close this we can close this we can close this we can close uh yeah okay um uh that was his body wasn't even a
- 2:49:36 robot what is that his body is that uh with the head of a Drupal icon and the body of a robot uh it should look like an oil painting maybe that works better um so we're generating this now
- 2:50:03 and then I will do another cut and then I will start with the uh the XML and after that I will host it I don't I will not show how to set up hosting that you have to figure out by
- 2:50:21 yourself uh yeah this is much better makes no sense to text as always but this is cool then you know it's AI generator as well so I'm not trying to hide this so yeah the next step now is to
- 2:50:34 create XML then so before actually I start with the podcast I just realized there's another important thing we have to to add in between and that's that currently I'm
- 2:50:48 creating the podcast manually right so I'm adding a podcast here but we need to automate this um and this is something you I mean depending on how many workflows you want
- 2:51:07 there is the really really awesome module ECA event condition action so for everyone that knows rules from drup 7 this is this on stere steroids basically uh so I'm going to use this
- 2:51:23 because I don't want to write code as I said before so we're going to get the ECA module um and well start with that one uh we also need uh model I don't think that's
- 2:51:48 included so I'm gonna download this as well and there's a lot of modules needed here so I'm going to click extend actually um so let's see here we go to ECA and we need the the base we need um
- 2:52:11 BPM n. so that's a graphical interface basically for modeling we need core um content because we're going to create content automatically and we need user because we need to set the user
- 2:52:27 also uh so we're going to install this and then under configuration workflow you're going to see ECA and here we're going to set up a new model uh that we wait sorry sorry
- 2:52:45 sorry uh yes add new model and what we want to do here then is we start with a event and the event we're looking for is Chron we're just going to name it con job
- 2:53:02 started and this we have to set uh my idea is that we run this every Monday so I'm going to set uh z z uh no no it's going to run so this is UTC we say 15 because that's uh late
- 2:53:23 enough for Europe early enough for um uh late enough for Europe early enough for USA basically um and let's see if it can take mon as uh parameter here but I I guess it
- 2:53:44 should work like the uh normal or let's just set the number just be sure that's so one should be one right and then we're going to create a event here and what we need to do is we
- 2:53:59 need to switch the user because otherwise uh the current user might not have access to um uh o no I to load that's not what I wanted I want to switch user um so switch current
- 2:54:18 user so we switch user so we have a user that we know has access to actually generate content so we switch user to user one then we're also going to start create
- 2:54:34 podcast this is then create new uh and we call this podcast so you have to set a token because we're going to follow a couple of steps here that's content podcast entity label should
- 2:54:50 be uh Drupal Weekly News and then we can actually use tokens here because I think we need uh oh news we should set a current date here and we set uh HTML date so and should not be published
- 2:55:11 because we need to do all the steps before publish it basically and the owner should be one and then we need to add a field here oh sorry here so we need to set the
- 2:55:28 field set field value set a link is what we want to do and we don't need to think about this the field name of this is what did we actually give it as a field name podcast default link right so
- 2:55:46 that's this one sorry do URI because we want to set the link we don't save it yet uh well we could save but I will create a save for this as well just to be certain and we set this
- 2:56:03 value and the entity we're using is podcast and then we're going to just add another one here that says \[Music\] um save entity and that's just going to be podcast
- 2:56:23 and that is it basically so now we have set up a job that will on the crr job Monday 3:00 UTC will create a podcast and this podcast will then run all the interpolators um to basically generate
- 2:56:41 the the podcast so that is that and \[Music\] uh good so that's that so now we're going to do the podcast podcast XML I mean so let's set up the final step which is that we need to
- 2:57:18 install this module that is the podcast RSS feed so there is this um composer command for it that we're going to run um by the way these two guys contribute so much to Drupal Dro Bo should be so
- 2:57:37 happy for what they're doing check this out projects maintained it's crazy long list anyway um uh we're going to go ahead and install this and it's installed right
- 2:58:09 um by the way if you wonder about this warning message I turned off Chron uh temporary so it doesn't actually shoot off while we're still building here uh so we have added this the next
- 2:58:24 step we want to create now is then the actual P well maybe we don't have to call it actual podcast we're we're creating a view called podcast RSS that is of type news
- 2:58:39 because it's the news we want to show but this is also going to have the podcast information in it um we don't need to create a page or a block in this case we can just click add
- 2:58:51 here and we take a oops a feed that is a podcast RSS feed so we're doing it specifically for podcasts so here we're going to have to fill out some um we're going to have to add some
- 2:59:06 Fields before we can fill out this basically uh and here we take oh sorry we're going to use Fields here as well click cancel and then we're going to start adding Fields so we need
- 2:59:21 published date uh and I going to have to check whatever date this is that it expects uh podcast exm RSS date format RSS here we go let's see this is from Apple themselves so this should be
- 2:59:56 correct uh incorrect correct date for Wednesday 6 okay uh and we don't have that here I guess or there we go maybe no it's not that so we have to make a custom one
- 3:00:15 then uh where do they have the custom yeah this can be I'm sitting in Berlin so I'm just going to set Berlin I'm just wondering where is there should be a custom format is it not Ava
- 3:00:35 there there we go custom format um and it should be uh well let me go to php's time because I don't know all these no date sorry I don't know all these in my head this is in here it's
- 3:00:59 documented so we're going to start with W so that's three character short day which is where do we go here day oh day \[Music\] comma date single digit so that's J and three
- 3:01:33 character here month is capital M 2014 that's just capital Y and our minute second our minute second or maybe we actually should do UTC because that's easy then we can just
- 3:01:59 write you to see or does it take oh it takes we can do plus Z z0 because I'm not sure if it's actually called UTC so we have publish date uh we're going to have to add some
- 3:02:17 hardcoded Fields because we don't have author for instance I mean could give back admin but that would look very bad so uh what we anyway want is we need show notes we have title there we need link
- 3:02:36 link to content we need the actual podcast file and then we're going to add a custom text that's the author also so this is the uh link to content it should be absolute
- 3:02:53 \[Music\] URL uh output the URL is text then we have the podcast file which should be URL to file we have show notes that can just be plain text that's fine and Global custom
- 3:03:11 text I will just uh I will write my name and AI generat D be repuls because uh it should be a real person you should not try to hide yourself when you're especially when you do AI generated
- 3:03:35 content so that should be able to do the fields of this let's see here if we have enough enough Link Field descriptions is the show notes Creator is the custom text publication
- 3:03:50 date is the publish date oh uid we need to add a uh well we're going to use the U uid in this case uh well there is no format but that should be okay oh yeah it doesn't show yet but
- 3:04:11 let's see this should be possible to use here Creator is this description show notes link to content title uh where's the actual file am I missing something so I'm just going to put this
- 3:04:37 here just to see the output here or that could be publish data yes \[Music\] need to set a path so we call the RSS podcast XML no let's do podcast General because I'm going to add
- 3:05:01 more stuff later so here we see it but why doesn't it ask about the file should ask about the file right podcast Fields I'm so stupid sorry that was the normal RSS field uh here we
- 3:05:21 go this should have a podcast file length M we could add those later uh okay so I guess we could add uh some of these as well \[Music\] so so I guess so this actually takes image
- 3:05:59 that's interesting I didn't know that because I don't use iTunes uh or I don't use the Apple podcast reader so I didn't know you could actually add a image per episode so we're going to go ahead and
- 3:06:11 do that so we're going to take uh well one thing I got completely wrong this is supposed to be podcast not news we're building it on podcast of course um so we're going to go to manage field
- 3:06:31 podcast and here we're going to take and generate a podcast image uh let's see if I have to reuse did I use this name already maybe yeah episode image we call it then episode
- 3:06:54 image this is a image disable this is going to be autogenerated but we need to create a prompt for it to be able to be autogenerated so I'm going to create a plane text
- 3:07:06 here uh episode image prompt oh yeah t plan wrong that's fine could have takeen text plane there as well so we're going to enable interpolator on this and this we're going to to not cost
- 3:07:24 too much money we're going to base this on the show notes So based on the show notes of a podcast about Drupal can you take the most important news and make an abstract image of it make sure that you
- 3:07:52 incorporate the Drupal icon somewhere in the image uh context is context and I don't remember what weight we set on the other side I said super high because this has to happen later G
- 3:08:13 G pt4 well let's take GPT-4 turbo preview right now we on batch just to try it out and then we have to go back to the image field and enable we going to use Dolly base
- 3:08:37 mode image prompt we do just context here 160 batch mode dolly3 this neutral to HD we're going to go to content we're going to go to our podcast and try this so we have these two Fields now that are
- 3:09:02 not filled in so if we save it's going to fill in these hopefully so there's two processes one is to generate the image prompt the other one is to create the image oh what did I so now I thought it
- 3:09:28 would wanted to create a image that's not what we want we want the image prompt so I probably wrote this wrong because this is not the vision model right uh make an right make a prompt for an
- 3:09:49 abstract image of it so now we see if this works better then just remove it resave and this might work hopefully yeah so this second step takes time that means it's generating an image because
- 3:10:25 that takes time so then we should have an image at the bton there we go have no clue what that is and I don't know where the group icon is is it part of this maybe but
- 3:10:41 that's okay uh this is something of course oh okay Drupal icon so this is Drupal Mountain Camp okay yeah why not I wouldn't say that that's the most important news of them all but
- 3:11:01 okay I trust the podcast um so I'm just going to go ahead and save here oops something went wrong check your br developer console what am I together with an internal so this is this doesn't like to
- 3:11:36 have a \[Music\] external see if this works better I guess it doesn't have to be absolute because it's going to be on the same URL anyway um anyway then we need to set a lot of
- 3:11:53 hardcoded well we need a title field a link field last buil field here right so well no first thing first this is what we added now the image so episode image uh and this should be format the
- 3:12:12 URL in image can have original image I guess let's that way I will notice if it need some something else there and we just set image \[Music\] here we don't have a
- 3:12:27 season episode is something I just realized that we should probably be adding but that's something I will add later when I start adding code to this so I mean you yeah there is ways around
- 3:12:45 it where you can use it without coding with just building but for now I will just uh I will just keep it as it is so we're going to make another custom text for
- 3:13:01 this tags there and there we just write Drupal podcast news CMS uh AI generat we apply this I mean we can create the label because that does not show up anyway I
- 3:13:22 guess tags we just call it because then these are easier to find author we call this because it's going to be easier to find them now and I don't think they will be added
- 3:13:39 there uh this is tags let me me just check so it doesn't get added here uh gr gr B comma iTunes keywords no good uh then I'm going to add just one more field that says
- 3:14:02 false to tell uh to tell iTunes this is not explicit because there's basically no chance that OpenAI can create something that's explicit well it could I guess but not
- 3:14:20 in this case uh it could tell stories that are pretty horrifying actually even if it doesn't do certain words it the actual story could be very explicit um so this
- 3:14:34 is Fault duration I'm going to add later season we don't have episode I'm going to add uh later programmatically so um then we need to add here right so I mean there's two
- 3:14:53 ways of doing this I actually did this podcast information and I just realized that's pretty stupid because we're not going to need it but what we at least can add here
- 3:15:04 is um the title of it all so uh title and that's Drupal we news so we're going to do that here put title and this and this is okay actually uh I don't know if we should
- 3:15:35 maybe add a a a description image we can just take the last episode image that's okay um but the description we should definitely add so I'm just going to copy from this
- 3:15:52 content I made that uh I just realize was pretty stupid uh like this podcast summary save no one has copyright to this because I mean it's autogenerated so I should not claim copyrighted this
- 3:16:33 or if anyone has it it's the author that we retell the stories about uh I guess we can use author here explicit we just copy um \[Music\] author that's a lot of authors I have no
- 3:16:56 clue what the difference is here but sure uh keywords so I mean each episode we could add tags for as well but that's just uh iTunes category we do this on podcast see here what they might
- 3:17:24 have so I guess this goes under Technologies technology so we just write technology here so add another C system call category technology and that we put here I guess if someone wants to contact
- 3:18:03 me that is very okay so we don't put content that might be bad on there uh football podcast.
- 3:18:16 Marcus mailbox.com so I have catch all on my host name which is very good if you want to prevent spam because you know who uh who spams you which is very good uh
- 3:18:35 so and this should be be one thing publish date is completely wrong that is the news we're not going to use that we going to be authored them when it's created that is what
- 3:18:59 matters uh and here we do custom we do UTC uh oops didn't they custom so to tip apply save and there we go so I guess this is finished I won't know until I actually put it live
- 3:19:30 because it's it's kind of hard to test the local RSS feed I mean I guess I my phone is on the same network but even then because I'm using docal I would have to allow this to the world and that
- 3:19:45 has its own security implications so I'm not going to do this so uh the most important Next Step that I haven't done enough here is that we're going to do config
- 3:19:57 export basically everything we have done now we're going to push also and here's the interesting thing then if you check all the changes we have done since we set this up it's just configuration
- 3:20:09 changes which means we haven't written a single IO code to do this our automatic podcast uh yeah guys that's it I guess my next next step is to like create deploy
- 3:20:34 jobs uh do some develop stuff but I mean that's all I'm going to host on digital ocean as I said I think in the beginning beginning I don't remember if I said this just search Digital ocean lamp or
- 3:20:47 lamp if you prefer Apache is actually easier to set up but engine X is just so much more powerful uh if you don't know how to do this though you should do it with
- 3:21:00 anible but if it's a onetime thing it's important you do this and what's important then is that you also install the FMP so these examples are always a to I assume it's like app here
- 3:21:12 yeah apt update so to add onto this just do PSE sudo app install FFM p and that's it then you have everything you need uh and make it sure you set up the Cron job as well of course it's very
- 3:21:29 important uh and that's it then you have the you know easy version of the podcast I will continue now so my next step is is you know what I said then episode uh
- 3:21:43 episode num uh numbers and there I might add some prompt that it should celebrate on certain numbers when it comes to number 100 or something and first episode maybe it says something about
- 3:21:55 this um I will also add that there's going to be a discussion panel over modules it's also going to search the security fe uh feed so it's going to mention security update
- 3:22:11 so you don't miss those it's also going to Google to find news that might not be in Planet ruple uh and yeah maybe add some module of the week or something like that where it
- 3:22:29 just talks about some module based on documentation um yeah and that's it uh so now you know how to set up a podcast hopefully automatic if you have RSS feed at least so that is all thank
- 3:22:50 you for watching I hope I it wasn't way too boring I know it's very long but if you stayed this long then you were probably interesting in solving it yourself so thank you for
- 3:23:01 watching

  Filed under [Workflows](/blog?category=6) [Drupal AI](/blog?category=2)

Parts of this content were produced by AI.

This site has not assessed whether a label is required for this content.

  How was AI used?The video and the introduction are Marcus's own, first published on workflows-of-ai.com. AI wrote the subtitle, the summary and the video chapters from the transcript, and corrected misheard names in YouTube's automatic captions.

   Marcus Johansson

Tinkers with AI and Drupal

 [About Marcus](/about/marcus-johansson)[Drupal.org profile](https://www.drupal.org/u/marcus_johansson)[Drupal AI](https://www.drupal.org/project/ai)

## The post in three sentences

A full build of the Drupal Weekly News podcast, from a fresh DDEV install to a podcast RSS feed. Planet Drupal posts come in through Feeds, are scraped with ScrapingBot and tagged and rated by OpenAI, then GPT-4 picks the stories and writes a script that ElevenLabs voices and FFmpeg mixes with a Suno intro. ECA creates a new episode every Monday, and the whole setup is configuration only.