---
title: "Automatic Podcast"
video_id: WXy6oIiEqy8
url: https://www.youtube.com/watch?v=WXy6oIiEqy8
workflow_page: https://workflows-of-ai.com/workflow/automatic-podcast
language: en
captions: generated
---

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