WEBVTT

00:00.160 --> 00:06.320
This new AI video model from the TikTok team called sedan's, just dropped a few days ago.

00:06.440 --> 00:11.040
And as you can see, it's already beating Google's V3 and clink two.

00:11.080 --> 00:16.880
What if you could automate the process of generating videos using sedans with this workflow?

00:16.920 --> 00:23.240
Now the clips I'm going to show you in a sec were generated completely automatically using this agents

00:23.240 --> 00:25.560
and automation workflow you are seeing right now.

00:25.640 --> 00:26.800
So let's watch them now.

00:35.960 --> 00:41.760
Vo three has been the top AI video model since Google dropped it a few weeks ago, and people are using

00:41.760 --> 00:43.280
it to blow up on social media.

00:43.320 --> 00:47.080
There are channels that went from zero to tens of thousands of followers in weeks.

00:47.120 --> 00:48.480
Just look at this example.

00:48.760 --> 00:53.880
This account has over 70,000 subscribers and over 2 million views.

00:53.920 --> 00:55.040
Let's watch it quickly.

01:12.590 --> 01:16.750
Now let's watch the clips I generated in two minutes using the workflow.

01:30.470 --> 01:36.950
Now, what's really cool is that Siddons not only generates better quality videos, it can also be 25

01:36.990 --> 01:38.830
times cheaper than Vo3.

01:39.150 --> 01:46.630
So instead of paying $0.75 per second like you would with Vo3, you are looking at maybe $0.03 per second

01:46.670 --> 01:47.510
with Siddons.

01:47.870 --> 01:48.310
All right.

01:48.350 --> 01:50.470
Now I'm going to walk you through how this setup works.

01:50.590 --> 01:55.350
Now, this might look complex at first, but it's actually pretty simple once you understand the flow.

01:55.510 --> 01:58.020
So first of all, you have four main steps.

01:58.380 --> 02:03.740
Generate ideas, produce clips, generate sounds, and connect clips.

02:04.260 --> 02:07.620
So starting here on the left we have our idea generation.

02:08.020 --> 02:09.940
So this runs on a schedule trigger.

02:10.140 --> 02:13.620
So every day or however often you want it kicks off automatically.

02:13.820 --> 02:16.340
We've got two agents working together here.

02:17.020 --> 02:19.260
The first one generates.

02:19.260 --> 02:24.780
The first one generates unique video ideas based on whatever niche you are targeting.

02:24.780 --> 02:32.100
And based on your prompt, it's creating the full concept, writing viral captions with hashtags, describing

02:32.100 --> 02:37.980
the environment where the video should be shot, and even what sounds should go with it.

02:38.380 --> 02:44.380
Because we generate video clips and audio separately, then the second agent takes that idea and breaks

02:44.380 --> 02:47.700
it down into multiple detailed scene prompts.

02:47.980 --> 02:54.900
So from one idea, we are getting like 10 to 13 different scene variations that we can fit to sedans.

02:55.100 --> 03:01.340
Then the second agent takes that idea and break it down into multiple detailed scene prompts.

03:01.740 --> 03:08.460
So from one idea, we are getting like 10 to 13 different variations that we can fit to sedans.

03:08.660 --> 03:13.260
So our AI video generation model now we move into clip production.

03:13.500 --> 03:15.500
So this is where we connect to sedans.

03:15.820 --> 03:19.700
But we are not going directly to ByteDance.

03:20.260 --> 03:27.780
So the team behind the sedans we are using instead we are using wave speed AI, which is essentially

03:27.820 --> 03:34.940
a platform that bundles together hundreds of AI models and gives you access to them through one simple

03:34.940 --> 03:35.660
interface.

03:35.780 --> 03:42.700
So instead of learning how each individual AI model works, you can just use wave speed and access tons

03:42.700 --> 03:45.540
of different models through one service.

03:46.100 --> 03:51.500
They're actually one of the first to implement Sedans Pro, so you can use the model that just returned

03:51.540 --> 03:52.100
V3.

03:52.540 --> 03:58.370
Then we take this scene prompt and sent them one by one to see the answer through Wave Speeds API and

03:58.370 --> 04:03.370
we are using HTTP requests so the system waits for the clips to generate.

04:03.450 --> 04:10.250
Usually it takes about 2 to 3 minutes, then pulls back the video files using another HTTP request node

04:10.370 --> 04:11.490
to get the results.

04:11.610 --> 04:16.490
So from our original idea, we now have multiple short video clips ready to work with.

04:16.530 --> 04:20.770
Since sedans doesn't generate audio, we need to add sounds separately.

04:20.970 --> 04:25.250
For this, we are using full AI with the audio v2 model.

04:25.530 --> 04:31.410
This basically takes each video clip, analyzes what's happening visually, and layers appropriate sound

04:31.450 --> 04:32.610
effects on top.

04:32.730 --> 04:39.610
And the cost for this is really cheap, like a 10th of a cent per second, but it makes a huge difference

04:39.610 --> 04:40.850
in the final quality.

04:41.330 --> 04:47.250
So we connect to full AI to send the video clips and then get back the clips with the added audio.

04:47.850 --> 04:53.010
And finally we stitch everything together, so the system takes all those individual clips with the

04:53.010 --> 04:58.080
their sounds and uses for AI to sequence them into one longer video.

04:58.840 --> 05:05.200
Usually we end up with about 30s of content, and that flows naturally from scene to scene.

05:05.400 --> 05:11.880
Now, throughout this whole process, everything gets logged into Google Sheets so you can track your

05:11.880 --> 05:18.560
ideas, see which video got produced, and have URLs for all your final videos.

05:19.040 --> 05:23.560
If you want to take it further, you can connect this sheet to another automation that posts directly

05:23.560 --> 05:27.480
to TikTok, Instagram, YouTube, or any social media.

05:27.760 --> 05:33.960
The whole thing costs around $0.93 per video, which is incredibly cheap compared to what you would

05:34.280 --> 05:36.000
pay with other models.

05:36.160 --> 05:40.640
You would need to pay over 20 bucks using Vo three for the same output.

05:40.880 --> 05:42.560
So for the 32nd video.

05:43.040 --> 05:50.240
So imagine having a system like this running 24 over seven for you, which uses cadence which is much,

05:50.240 --> 05:53.550
much cheaper than Vo feel free and completely automated.

05:53.590 --> 05:58.390
All right, now let's actually build our workflow from scratch, node by node.

05:58.830 --> 06:00.830
So I'm going to walk you through each step.

06:00.830 --> 06:03.790
And you can follow me to set this up yourself.

06:04.150 --> 06:06.630
So as always we need to add the first step.

06:07.630 --> 06:10.790
So the trigger node to activate our workflow.

06:11.230 --> 06:13.550
So I'm going to use schedule trigger node.

06:14.750 --> 06:16.270
So let's search for schedule trigger.

06:21.070 --> 06:25.270
And I want this workflow to be activated every day at midnight.

06:25.550 --> 06:28.430
I'm going to leave the default configuration as it is.

06:29.990 --> 06:30.990
All right now.

06:32.550 --> 06:39.350
And now let's add our agent which will come up with new ideas for the videos.

06:39.790 --> 06:42.070
So I'm going to add agent.

06:45.990 --> 06:46.630
All right.

06:47.670 --> 06:49.030
Now let's configure this.

06:50.900 --> 06:53.500
For the source for prompt we want to define below.

06:57.380 --> 06:59.900
We also want to require specific output format.

07:00.420 --> 07:01.980
So I'm going to toggle it.

07:03.500 --> 07:05.540
And now I'm going to paste the prompt.

07:06.820 --> 07:08.660
Let's switch over to expression mode.

07:10.660 --> 07:14.380
Expand it and paste it here.

07:15.300 --> 07:22.980
So the prompt is give me an idea about realistic granite rock is being sliced with a sharp knife.

07:23.780 --> 07:29.460
Have your idea be in this format color material shaped like a random object.

07:29.460 --> 07:31.340
Examples for your inspiration.

07:31.660 --> 07:33.620
Glass shaped like a strawberry.

07:34.100 --> 07:41.500
Dry ice shaped like a snowflake and and diamond shaped like a hat, etc..

07:42.260 --> 07:52.740
And we also want to use a tool to review the output You can always go to ChatGPT and explain you an

07:52.740 --> 07:54.780
idea for for your workflow.

07:54.780 --> 08:04.060
For example for video generation workflow and ask for provide some expectations and ask for the prompt.

08:05.820 --> 08:07.180
So I'm going to leave it like that.

08:07.460 --> 08:09.300
Now you want to add system message.

08:09.300 --> 08:12.220
So I'm going to add option system message.

08:15.500 --> 08:17.500
And now I'm going to paste the second prompt.

08:18.820 --> 08:20.780
Again let's switch over to expression.

08:25.860 --> 08:27.740
So this one is quite lengthy.

08:28.780 --> 08:29.660
So let's see.

08:30.020 --> 08:37.340
The role is you are an AI designed to generate one immersive realistic idea based on a user provided

08:37.380 --> 08:37.860
topic.

08:37.900 --> 08:43.940
Your output must be formatted as a JSON array, single line and follow all the rules below.

08:43.940 --> 08:44.620
Exactly.

08:45.820 --> 08:49.370
The rules are only return one idea at a time.

08:49.850 --> 08:55.410
The user will provide a key topic, for example box escaping danger in forest.

08:56.370 --> 08:58.410
The idea must be under 13.

08:58.410 --> 09:03.170
Words must describe a worthy action or moment from the topic.

09:03.650 --> 09:06.570
The caption must be short, punchy and viral friendly.

09:08.210 --> 09:09.810
Include one relevant emoji.

09:12.250 --> 09:19.650
Include exactly 12 hashtags in this order for topic, relevant hashtags for all time most popular hashtags,

09:19.650 --> 09:23.770
and for currently trending hashtags based on live research.

09:24.490 --> 09:35.570
So we want our agent to do research and find the best viral topics we can use to generate our videos.

09:35.570 --> 09:38.650
About all hashtags must be lowercase.

09:39.050 --> 09:41.010
Set status to for production.

09:41.010 --> 09:41.690
Always.

09:42.210 --> 09:45.920
I'm going to show you what is the purpose of this sentence in a sec.

09:46.320 --> 09:49.200
The environment must be under 20 words.

09:49.480 --> 09:51.120
Match the action in the idea.

09:51.160 --> 09:51.800
Exactly.

09:52.520 --> 10:00.160
Clearly describe location, key visuals, background statistic, note macro, cinematic, slow motion,

10:00.200 --> 10:00.840
etc..

10:01.880 --> 10:08.320
Now the sound, because we are going to generate sound separately and then combine them with clips.

10:09.480 --> 10:12.400
So we need to include requirements for sound as well.

10:12.880 --> 10:15.080
So be under 15 words.

10:15.080 --> 10:18.680
Describe the primary sound that makes to happen in this video.

10:18.840 --> 10:22.000
This will be fit to sound model later on.

10:23.320 --> 10:26.600
And for the output format we want to use single line JSON array.

10:27.480 --> 10:28.640
And this is an example.

10:29.360 --> 10:36.320
So caption short viral title with emoji for topic hashtags for all time popular hashtags and for trending

10:36.320 --> 10:37.000
hashtags.

10:37.400 --> 10:43.080
Idea short idea under 13 words environment, stunt and status.

10:44.630 --> 10:54.870
So this prompt will give us a unique idea for our video with a caption that our agent, uh, prepared

10:54.870 --> 10:55.390
for us.

10:55.790 --> 11:03.030
So the core idea and the environment description, uh, a short prompt for the sand and also the production

11:03.030 --> 11:07.910
status so we can track the process of generating videos, uh, in our Google sheet.

11:09.630 --> 11:17.230
In other words, the system prompt defines the agent's role and provides rules to make sure the output

11:17.950 --> 11:18.990
will be as you want.

11:20.310 --> 11:23.510
So you can read through this and tweak it if you like.

11:27.870 --> 11:30.070
So the user prompt is relatively simple.

11:30.630 --> 11:36.670
It's just a command to give us an idea about the specific niche we are trying to to replicate.

11:40.590 --> 11:41.950
Now let's add our chat model.

11:43.740 --> 11:45.980
I'm going to use GPT four.

11:47.740 --> 11:54.140
Make sure your OpenAI account is connected and let's switch to GPT four.

11:55.420 --> 12:06.460
I don't recommend using GPT four because it struggles with splitting scenes for video clips and giving

12:06.500 --> 12:07.620
the proper output.

12:07.820 --> 12:09.260
I will show you what I mean later.

12:09.940 --> 12:11.900
So let's let's use GPT four.

12:11.940 --> 12:12.300
All.

12:16.900 --> 12:17.260
Right.

12:17.260 --> 12:17.700
Great.

12:20.260 --> 12:24.180
Now we don't need memory for the tool.

12:24.860 --> 12:27.060
Let's use think tool.

12:32.540 --> 12:33.060
All right.

12:33.060 --> 12:36.740
And let's leave the tool description as default.

12:57.340 --> 12:59.820
Now the next note is a simple Google Sheet.

12:59.860 --> 13:00.340
Note.

13:02.900 --> 13:09.420
Because we want to save ideas generated by the agent into spreadsheet.

13:12.900 --> 13:14.500
So let's add Google sheet node.

13:19.300 --> 13:21.380
We want to append row in sheet.

13:25.060 --> 13:28.940
Now let's rename this node save idea.

13:29.900 --> 13:35.380
Make sure you are connected to the correct account for the resource.

13:35.740 --> 13:40.250
We have sheet within document for the operation we want to add up and row.

13:41.570 --> 13:44.930
And now I'm going to share with you the sheet template.

13:44.930 --> 13:49.570
So once you save it you will be able to retrieve it here.

13:51.450 --> 13:55.010
So this is the Google sheet we are going to use for this workflow.

13:56.330 --> 14:06.170
We have a few columns ID idea which is generated by our first agent caption production.

14:06.570 --> 14:15.010
You have for production you have done and skip environment prompt, command prompt and final output

14:15.850 --> 14:17.730
which will be populated automatically.

14:17.970 --> 14:21.530
So it will be the link to the final video.

14:23.970 --> 14:32.570
So once you download it from the resource section and save it, you can use it here from list.

14:35.130 --> 14:38.360
Going to see that in a ten Hit one.

14:46.160 --> 14:52.920
And once you select this Google Sheet, it will automatically give you all the columns.

14:53.320 --> 15:00.120
So you have ID, idea, caption, production environment, prompt, sound prompt, and final output.

15:01.560 --> 15:08.360
This Google sheet looks generations, so when this workflow creates the final video the automation will

15:08.360 --> 15:10.440
mark this row.

15:10.440 --> 15:11.960
So production.

15:13.600 --> 15:16.360
So right here as done.

15:17.600 --> 15:21.000
So this Google sheet will be automatically populated.

15:21.240 --> 15:24.040
And you also get the link to the final video.

15:24.320 --> 15:28.680
So you can share it on social media or just download it.

15:29.680 --> 15:36.390
Now each of those columns we are mapping based on what our ideas agent Uh, provided us.

15:38.190 --> 15:41.310
So now let's actually rename this agent to.

15:44.310 --> 15:44.750
Idea.

15:44.750 --> 15:45.470
Generator.

15:50.870 --> 15:51.750
Agent.

15:52.750 --> 15:53.430
Perfect.

15:54.830 --> 15:55.910
Now let's close it.

15:57.030 --> 15:57.630
Save.

16:02.070 --> 16:08.710
And now let's test it to generate ideas so we can map all the values.

16:11.470 --> 16:12.510
To execute workflow.

16:18.270 --> 16:19.310
Let's wait a moment.

16:23.990 --> 16:24.990
Alright, we got some error.

16:24.990 --> 16:26.950
But don't worry, it was expected.

16:29.870 --> 16:34.860
As you can see, at least one value has to be added on the values to send.

16:35.220 --> 16:35.820
So now.

16:37.300 --> 16:44.460
Now as you can see we have an output, but we have all values just within this one object.

16:45.460 --> 16:50.380
So we need to split these values to match them to the columns.

16:51.260 --> 16:53.100
So we are going to use a node.

16:54.860 --> 16:56.420
So let's add another node.

16:57.140 --> 16:58.420
So output parser.

17:01.860 --> 17:05.860
Because we want to return data in a JSON format.

17:10.340 --> 17:10.980
All right.

17:11.620 --> 17:12.700
Now we want to.

17:14.140 --> 17:19.260
Now we need to provide an example of a JSON format from this output.

17:19.700 --> 17:20.620
We want to get.

17:20.940 --> 17:22.380
So I'm going to paste it here.

17:23.340 --> 17:26.780
Going to remove this and paste it here.

17:28.860 --> 17:34.020
So we want our output to be splitted to separate Eight key values.

17:34.980 --> 17:35.940
Show caption.

17:37.780 --> 17:38.340
Idea.

17:38.340 --> 17:39.020
Environment.

17:39.060 --> 17:40.060
Sounds and status.

17:40.620 --> 17:41.140
And now.

17:44.180 --> 17:44.740
Save.

17:46.740 --> 17:49.900
Now let's test the workflow again to execute workflow.

17:51.060 --> 17:51.620
All right.

17:53.900 --> 17:59.780
Now as you can see we have a nice JSON format so we can map the values.

18:00.260 --> 18:03.140
So let's leave it for now for the idea.

18:04.300 --> 18:05.780
Let's grab it and drop it here.

18:07.220 --> 18:08.180
Now caption.

18:10.780 --> 18:14.180
So we are going to pass dynamic variables because the text is green.

18:19.300 --> 18:22.980
Production is from idea generator.

18:23.020 --> 18:25.420
A note included in the output.

18:29.900 --> 18:31.890
Now for production we have status.

18:34.530 --> 18:35.930
For environment prompts.

18:36.650 --> 18:37.810
You have an environment.

18:40.370 --> 18:43.210
And for for some prompt you have sound.

18:48.170 --> 18:52.690
The last one will be populated automatically because this is the final video.

18:54.090 --> 19:02.690
So yes, now each column is properly mapped except for the final output where we will store the final

19:02.690 --> 19:03.250
video.

19:03.290 --> 19:05.450
Once the workflow generates it.

19:05.650 --> 19:10.170
So the ID uses an Excel formula by design.

19:10.690 --> 19:19.130
So when this node runs, the Excel formula gets stored and translates to an ID for our tracking.

19:19.450 --> 19:25.250
So the different values that our idea that our ideas agent will create.

19:25.450 --> 19:26.330
Alright great.

19:27.330 --> 19:28.610
So let's add this formula.

19:29.210 --> 19:30.840
So it's an equal sign.

19:31.240 --> 19:31.640
Row.

19:31.680 --> 19:33.000
Double brackets minus one.

19:33.800 --> 19:42.600
Now when you check the Google sheet and click on any ID, you can see that this is a formula by default.

19:42.880 --> 19:44.160
So you can just copy it.

19:46.680 --> 19:47.880
And paste it right here.

19:50.160 --> 19:50.520
All right.

19:50.520 --> 19:50.720
Great.

19:50.760 --> 19:51.800
Now this note is done.

19:53.400 --> 19:54.160
Let's move on.

19:54.560 --> 19:56.760
Now you can proceed with our second agent.

19:57.720 --> 20:05.680
So this agent will turn those ideas into multiple prompts to then generate three different scenes.

20:05.680 --> 20:12.640
Because we want to generate three separate clips and then stitch them together into one final video.

20:14.080 --> 20:15.320
So let's add an agent.

20:21.520 --> 20:23.920
Now for the source.

20:23.920 --> 20:26.840
For prompt we want to define below.

20:29.110 --> 20:30.430
I'm going to pace the prompt.

20:30.750 --> 20:34.110
So give me three video prompts based on the previous idea.

20:34.430 --> 20:36.710
Use the text tool to review your output.

20:38.830 --> 20:39.270
All right.

20:39.270 --> 20:39.630
Great.

20:40.350 --> 20:42.270
So this is our prompt writer.

20:43.070 --> 20:44.630
So let's rename it.

20:47.030 --> 20:47.550
To.

20:50.150 --> 20:53.590
Prompt writer agent.

20:54.070 --> 20:56.270
And you also require specific output format.

20:59.630 --> 21:01.390
Now let's add system message.

21:04.950 --> 21:08.790
Such that expression expanded I'm going to paste the prompt.

21:10.190 --> 21:20.070
So the role is you are a prompt generation AI specializing in cinematic ASMR style video prompts.

21:20.070 --> 21:26.580
And your task is to generate a multi-scene video sequence that vividly shows a sharp knife actively

21:26.620 --> 21:30.260
cutting through a specific object in a clean, high detail setting.

21:30.580 --> 21:32.540
So your writing must follow this style.

21:32.740 --> 21:35.140
Sharp, precise cinematic realism.

21:35.460 --> 21:40.620
Macro level detail with tight focus on the blade interacting with the object.

21:41.220 --> 21:46.060
The knife must always be in motion, slicing, splitting, or gliding through the material.

21:46.300 --> 21:48.380
Never idly or static.

21:49.980 --> 21:51.660
Camera terms are allowed.

21:51.860 --> 21:59.140
Macro view tight angle over the blade shot, and each scene must contain all of the following expressed

21:59.140 --> 22:00.860
through detailed visual language.

22:01.180 --> 22:03.380
The main object or subject from the idea.

22:03.740 --> 22:06.700
The cutting environment or surface from the environment.

22:06.700 --> 22:13.740
So as you can see from our previous note, idea and environment, the texture, structure and behavior

22:13.740 --> 22:20.820
of the material as as it's being cut, a visible sharp blade actively cutting, and descriptions should

22:20.820 --> 22:25.740
show the physical makeup of the material, how the material responds respond to the blade.

22:25.860 --> 22:28.100
The interaction between the blade and the surface.

22:30.620 --> 22:31.260
The tone.

22:31.860 --> 22:32.340
Clinical.

22:32.340 --> 22:32.860
Visual.

22:33.660 --> 22:36.340
No poetic metaphors, emotion or storytelling.

22:36.620 --> 22:39.460
Avoid fantasy or surreal imagery.

22:39.980 --> 22:43.740
All descriptions must feel physically grounded and logically accurate.

22:44.100 --> 22:44.740
And length.

22:45.220 --> 22:49.740
Each scene must be between 1000 and 2000 characters.

22:50.700 --> 22:53.020
No shallow or repetitive scenes.

22:53.060 --> 22:55.860
Each must be immersive, descriptive and specific.

22:56.260 --> 23:00.100
Is scene should explore a distinct phase of the cutting process.

23:00.140 --> 23:05.180
A different camera perspective or a new behavior of the material under the blade.

23:06.140 --> 23:06.860
And now for the.

23:06.900 --> 23:14.580
From the inputs we want to pass the values from the previous node.

23:14.580 --> 23:15.380
So idea.

23:15.580 --> 23:21.100
So you can simply just remove it and take idea from here.

23:23.930 --> 23:25.650
The symphonic environment and sound.

23:26.570 --> 23:30.410
So here we define the format we want to achieve.

23:31.450 --> 23:32.330
And since.

23:33.130 --> 23:37.770
So that's why we we want to toggle required specific output format.

23:40.170 --> 23:40.970
Alright great.

23:40.970 --> 23:44.450
So as you can see this prompt is very detailed.

23:45.770 --> 23:47.410
You can tweak it.

23:47.410 --> 23:53.730
You can modify it to to your needs depending on what videos you want to generate.

23:54.370 --> 23:59.450
This prompt was prepared specifically for the demo you watched at the beginning of this lesson.

24:01.330 --> 24:02.650
Now let's start our chat model.

24:04.850 --> 24:08.370
So actually we are going to use the same GPT photo.

24:09.010 --> 24:10.770
So just let's connect it to this node.

24:11.970 --> 24:13.010
We don't need memory.

24:15.130 --> 24:17.850
For the tool we want to use node as well.

24:19.490 --> 24:20.610
So let's connect it.

24:22.800 --> 24:23.160
Well, I.

24:23.160 --> 24:23.760
Perfect.

24:26.600 --> 24:27.720
Now for this agent.

24:28.000 --> 24:31.160
We also want to use a structured output parser.

24:31.560 --> 24:32.440
So let's add it.

24:34.760 --> 24:37.520
Because we want to define a specific JSON format.

24:41.080 --> 24:44.000
So how the output from our agent should look like.

24:45.480 --> 24:47.600
So I'm going to paste the JSON example here.

24:50.200 --> 24:54.760
So you have idea environment sand C1, C2 and C3.

24:55.080 --> 25:00.800
Because as I mentioned we want to generate three separate scenes and then stitch them together into

25:00.840 --> 25:01.960
one final video.

25:05.840 --> 25:06.200
All right.

25:06.200 --> 25:06.800
Perfect.

25:09.000 --> 25:11.480
Now let's actually save and test this workflow.

25:29.230 --> 25:30.230
Let's wait a moment.

25:35.670 --> 25:36.430
Let's check.

25:42.030 --> 25:45.230
Now, as you can see, we have nicely formatted output.

25:46.390 --> 25:49.350
If idea environment SAT and three separate scenes.

25:51.910 --> 25:55.630
So the idea is actually gray granite shaped like a donut.

25:56.190 --> 25:56.750
All right.

25:57.990 --> 25:59.470
You have a prompt for our sound.

25:59.510 --> 26:04.590
So sharp slicing sound with Rocky crunch the environment.

26:04.590 --> 26:08.790
You have a close up of sharp knife slicing through ground in workshop lighting.

26:12.470 --> 26:16.430
And for the scene, for the first scene, we have the camera zooms in.

26:17.630 --> 26:24.540
For the second scene we have a close up tight angle captures the right and over the blade shot highlights.

26:25.020 --> 26:26.460
Okay, perfect.

26:27.460 --> 26:29.860
Now let's check our Google Sheet.

26:30.540 --> 26:33.180
As you can see, one more idea has been added.

26:33.620 --> 26:38.300
We have ID, we have a gray granite shaped like a donut.

26:39.700 --> 26:40.700
So this is the new one.

26:43.260 --> 26:46.180
You have all the values stored in our Google sheet.

26:47.380 --> 26:48.460
So just to clarify.

26:50.820 --> 26:56.060
Scene one, scene two and scene three are all different variations of that one idea.

26:56.060 --> 27:01.460
So we can have different iterations when we pass that along to sedans.

27:02.380 --> 27:06.940
So the prompts are kind of similar to our first agent.

27:06.940 --> 27:10.460
So we have a user prompt which is very simple.

27:11.420 --> 27:18.700
Asking for free video prompts based on the previous idea we guide, we guided On what should do, and

27:18.700 --> 27:24.060
we provide instructions around agents, rules and role.

27:24.780 --> 27:26.740
So how the prompt should look like.

27:28.940 --> 27:29.380
All right.

27:29.380 --> 27:32.020
So now we've got our free prompts ready.

27:32.700 --> 27:36.940
And we need to actually generate the video clips.

27:37.300 --> 27:43.220
So the first thing we need to do might look a bit technical but stick with me.

27:43.500 --> 27:45.740
It's a pretty straightforward.

27:45.980 --> 27:53.580
Right now our free prompts are bundled together as one package in N810, so we need to separate them

27:53.860 --> 27:56.260
so we can work with each one individually.

27:56.860 --> 28:03.460
So we need to add a code node and paste the simple code snippet in JavaScript.

28:04.020 --> 28:05.660
So I'm going to paste the code node.

28:05.900 --> 28:09.980
So basically this is our scene extractor.

28:10.300 --> 28:12.540
So I'm going to rename this node.

28:17.330 --> 28:18.690
This extractor.

28:22.570 --> 28:29.170
So we need to unpack our prompts so sedans can process each scene separately.

28:30.570 --> 28:32.530
So that's what this node does.

28:32.930 --> 28:38.770
So I know that sounds intimidating, but you don't need to write any of this yourself.

28:39.850 --> 28:43.410
You can ask ChatGPT to create this script for you.

28:45.450 --> 28:50.930
Also, if you want to understand what's exactly this code is doing, you can copy and paste it into

28:50.970 --> 28:54.130
ChatGPT and ask it to explain every line.

28:54.770 --> 28:57.850
So the important thing is that after this step you have three.

28:58.210 --> 29:02.290
We have three separate items instead of just one package.

29:05.650 --> 29:06.290
So now.

29:08.890 --> 29:13.050
Just to demonstrate it to you when I pin data.

29:19.560 --> 29:20.760
And execute this node.

29:24.600 --> 29:27.280
I can see that I got three items.

29:27.840 --> 29:28.760
When I open it.

29:32.200 --> 29:33.920
Go to table.

29:34.920 --> 29:42.680
So here on the left in the input you can see that, uh, we already have three separate scenes.

29:43.240 --> 29:45.360
So C1, C2 and C3.

29:46.360 --> 29:50.480
And each one is its own field inside a single item.

29:50.760 --> 29:54.280
But in n810, that still counts as just one item.

29:54.720 --> 29:56.560
As one JSON object.

29:57.320 --> 30:04.160
What we need is to turn each scene into its own item, so we can send them one at a time to dance.

30:04.840 --> 30:06.640
So that's why we added this code node.

30:07.160 --> 30:10.280
And that's what this code snippet does.

30:12.160 --> 30:18.310
So it simply pulls out those three scene descriptions and splits them into separate items.

30:18.910 --> 30:21.990
As you can see on the right side in the output.

30:24.830 --> 30:25.270
All right.

30:25.270 --> 30:25.870
Perfect.

30:26.790 --> 30:31.590
Now we can move on to the actual video generation part.

30:33.590 --> 30:37.790
So we are going to use HTTP request node.

30:40.790 --> 30:41.950
HTTP request.

30:43.630 --> 30:45.030
Select this node.

30:48.990 --> 30:50.190
Now for the method.

30:53.030 --> 30:55.710
We want to send a request.

30:56.110 --> 30:59.230
So let's change the let's switch the method to post.

31:08.270 --> 31:11.380
Because we are going to send a request to see dance.

31:11.420 --> 31:12.940
Asking to create our video.

31:13.140 --> 31:13.940
Video clips.

31:16.780 --> 31:21.100
But we are not going directly to see dance.

31:21.900 --> 31:24.140
As I mentioned in the demo.

31:24.540 --> 31:28.260
Instead we are using a service called Wave Spy.

31:31.860 --> 31:39.940
We are going to use this service because they integrated a lot of different AI models into one platform,

31:39.940 --> 31:49.460
and instead of figuring out how to connect up some of the models and using different AI services, we

31:49.460 --> 31:56.140
can just learn how to use AI and we can get access to all of the models.

31:58.140 --> 32:05.700
And they were actually the first to implement Sedans Pro, which is the version that outperformed Google's

32:05.700 --> 32:06.260
V3.

32:07.220 --> 32:10.100
So we are specifically Using there.

32:13.740 --> 32:22.980
So basically the host, a lot of powerful AI models the text to video, image to video and so on.

32:23.300 --> 32:25.340
And you can make API calls to those models.

32:27.740 --> 32:31.980
And they offer good prices compared to the competition on the market.

32:32.220 --> 32:34.780
I guess they are one of the best currently.

32:35.380 --> 32:36.580
So create your account.

32:37.980 --> 32:42.820
Now once you create your account and sign in, let's search for the model you want to use.

32:44.140 --> 32:46.300
So you're going to use ByteDance.

32:46.860 --> 32:56.140
So the team behind the the creators of TikTok see does V1 Pro text to video 480.

32:58.620 --> 32:59.700
So let's select it.

33:05.140 --> 33:14.250
Now as you can see ByteDance sedans 1.0 is the new generation model, outperforming Cliq two with ultra

33:14.290 --> 33:16.850
fast generation and so on.

33:18.330 --> 33:19.810
Now here you have playground.

33:21.010 --> 33:21.730
You can play with it.

33:21.770 --> 33:27.050
You can give it some prompts and check the check if you like the output.

33:27.890 --> 33:30.250
Now your request will cost $0.15.

33:33.490 --> 33:37.330
So for $1 you can run this model approximately six times.

33:38.090 --> 33:40.930
So we are going to check the documentation.

33:40.930 --> 33:42.490
So select API.

33:44.930 --> 33:48.850
And here you will find all the details you need to set this up.

33:50.730 --> 33:52.410
So this is the URL we need.

33:53.570 --> 33:54.570
So let's copy it.

33:57.010 --> 33:59.330
As you can see the request should be post method.

34:04.290 --> 34:06.010
Let's paste the URL here.

34:08.480 --> 34:08.840
All right.

34:08.840 --> 34:09.320
Great.

34:13.360 --> 34:18.760
Now, as you can see, we want to use header for the content type.

34:18.760 --> 34:23.320
You have application slash JSON authorization bearer and the API key.

34:25.280 --> 34:34.720
So basically if you don't know how to use HTTP request node and make API calls to some services, you

34:34.720 --> 34:41.480
can always go to the documentation of a specific service and find out how to set up the connection.

34:42.080 --> 34:44.400
So now let's go back to our workflow.

34:45.560 --> 34:48.920
Let's switch authentication to generic credential type.

34:52.440 --> 34:54.200
We want to use header authentication.

34:56.160 --> 34:57.400
We want to send body.

34:58.720 --> 35:01.840
We want to switch body content type to row.

35:04.990 --> 35:05.550
As you can see.

35:05.550 --> 35:06.190
Data row.

35:10.670 --> 35:11.910
For the content type.

35:14.550 --> 35:16.830
We have application JSON.

35:20.950 --> 35:26.390
Now for the body let's switch over to expression mode and let's expand it.

35:27.230 --> 35:30.670
And I'm going to paste the body parameter.

35:32.510 --> 35:36.390
So here we specify the aspect ratio duration.

35:37.030 --> 35:42.590
As you can see in the documentation the duration you have a prompt.

35:44.710 --> 35:45.630
For the prompt.

35:45.950 --> 35:47.950
We want to pass video team.

35:48.270 --> 35:50.590
So from our prompt writer agent.

35:51.590 --> 35:52.830
So from this node.

35:55.590 --> 35:56.670
We want to pass idea.

35:56.670 --> 35:59.870
So basically I can do it right now.

36:01.190 --> 36:04.500
So we just want to grab this value and paste it here.

36:07.900 --> 36:14.380
For the for explaining to our credence model what happens in the video?

36:14.420 --> 36:15.900
What should happen in the video.

36:16.140 --> 36:18.340
We want to pass JSON description.

36:20.260 --> 36:23.060
And this comes from the scenes extractor.

36:23.060 --> 36:24.260
So the previous node.

36:27.020 --> 36:28.420
So the same as always.

36:28.660 --> 36:32.500
Just need to drag and drop it here.

36:34.260 --> 36:36.220
And the environment.

36:36.220 --> 36:45.540
So where the video is shot we want to pass environment variable from the output from our prompt writer

36:45.540 --> 36:50.060
agent which described for us the environment.

36:52.740 --> 36:53.140
All right.

36:53.140 --> 36:53.660
Great.

36:53.940 --> 36:54.740
And that's it.

36:56.420 --> 37:04.340
Now as you can see all these three variables are dynamic because they are green and here we can see

37:04.340 --> 37:05.020
the result.

37:05.420 --> 37:13.260
So the actual description, the actual idea and environment description of the environment here.

37:13.260 --> 37:19.580
So the prompt is dynamic which means it automatically pulls in the team the detailed action from our

37:19.580 --> 37:22.220
agent and the environment description.

37:23.140 --> 37:31.540
And since we are processing three different prompts you can click through and see what we are actually

37:31.540 --> 37:32.220
sending.

37:32.540 --> 37:38.420
So three separate requests to a wave speed AI platform.

37:41.820 --> 37:42.020
Here.

37:42.060 --> 37:42.300
One.

37:42.340 --> 37:43.380
Two three.

37:48.180 --> 37:48.820
Perfect.

37:50.660 --> 37:51.780
Now that's not batching.

37:51.780 --> 37:56.700
So let's add option batching.

37:59.020 --> 38:02.170
Items per batch, so let's set it to one.

38:03.930 --> 38:11.290
So basically what this means is input will be split in batches to throttle requests.

38:12.850 --> 38:20.450
So we sent one prompt at a time with a short three second pause between each one.

38:20.850 --> 38:24.370
So let's change it to 3000.

38:25.170 --> 38:26.370
3000 milliseconds.

38:27.490 --> 38:27.810
All right.

38:27.810 --> 38:30.170
Great save.

38:31.450 --> 38:36.570
Let's test our workflow to see if everything works properly.

38:40.290 --> 38:40.690
All right.

38:40.690 --> 38:41.210
Great.

38:45.010 --> 38:45.610
It's all green.

38:45.650 --> 38:46.490
That's a good sign.

38:47.490 --> 38:48.330
Let's open it.

38:51.810 --> 39:02.440
So as you can see, the status code is 200, Which means in the API language that everything worked

39:02.480 --> 39:03.200
perfectly.

39:04.240 --> 39:06.120
And you have three success messages.

39:08.960 --> 39:11.240
And that's because I already set up my credentials.

39:11.560 --> 39:12.520
Now it's your turn.

39:12.520 --> 39:15.440
So go to Header Authentication.

39:16.920 --> 39:18.040
Click on this little pen.

39:23.440 --> 39:25.560
And here we need to provide API keys.

39:26.120 --> 39:28.080
So let's go back to documentation.

39:32.840 --> 39:36.080
As you can see authorization is better and API key.

39:36.560 --> 39:41.080
So we need to type exactly as it is.

39:41.840 --> 39:45.400
So switch over to expression mode.

39:47.200 --> 39:48.080
Expand it.

39:52.360 --> 39:53.200
Remove it.

39:54.080 --> 39:54.880
Type better.

39:58.190 --> 40:01.470
Now go to Wave Speed AI platform.

40:04.710 --> 40:06.150
Go to API keys.

40:10.910 --> 40:15.310
And in order to use this service, you need to top up your account.

40:16.190 --> 40:24.070
And here you can buy credits so you can enter a specific amount for example $2 or buy packages for ten,

40:24.110 --> 40:25.390
50 or $100.

40:26.350 --> 40:32.430
Remember, the cost of each API request is $0.15.

40:33.630 --> 40:40.190
I spent $12 to top up my account and I also got $20 as a gift.

40:40.230 --> 40:41.390
Actually, I don't know why.

40:42.470 --> 40:42.750
Maybe.

40:43.030 --> 40:49.950
Maybe if you buy a $10 package you will get a recharge from admin, but I'm not sure.

40:51.030 --> 40:52.310
Once you top up your account, you can.

40:52.830 --> 40:55.590
Once you top up your account, you can go to API keys.

40:58.470 --> 40:59.870
And create a create key.

41:01.710 --> 41:06.230
Please enter a key name so it does.

41:09.470 --> 41:10.430
Create key.

41:12.630 --> 41:13.870
Now you can copy it.

41:15.950 --> 41:17.350
Go back to your workflow.

41:18.270 --> 41:19.190
Paste it right here.

41:21.310 --> 41:22.310
And then close it.

41:22.750 --> 41:25.470
It's safe and perfect.

41:26.510 --> 41:29.750
Now when you test the workflow you should get success message.

41:30.830 --> 41:31.150
All right.

41:31.150 --> 41:31.790
Brilliant.

41:32.790 --> 41:40.230
The key thing to understand is that at this point, we successfully requested our video clips, but

41:40.230 --> 41:42.870
sedans is still working on creating them.

41:43.070 --> 41:48.150
That's why our next step will be to wait for the generation to complete.

41:48.790 --> 41:52.110
So let's add wait node.

41:56.740 --> 42:00.260
Let's wait for 300 seconds.

42:02.540 --> 42:02.820
Yes.

42:02.820 --> 42:04.300
So here we have to be patient.

42:05.700 --> 42:06.700
Just a quick note.

42:07.940 --> 42:09.500
In the HTTP request node.

42:09.860 --> 42:11.060
Make sure that.

42:13.660 --> 42:17.540
The name is spelled correctly.

42:17.540 --> 42:23.580
So authorization with capital A and for the value also.

42:28.660 --> 42:29.260
Better.

42:31.740 --> 42:39.220
So you have you need to make sure that you get the capitalization right and include the space after

42:39.220 --> 42:39.700
better.

42:40.060 --> 42:44.900
And after that paste your API keys from wave speed.

42:49.740 --> 42:51.260
Otherwise it won't work.

42:52.450 --> 42:53.050
Safe.

42:58.410 --> 43:01.530
And actually now let's rename this node to.

43:03.730 --> 43:04.770
Create clips.

43:10.450 --> 43:14.210
Now let's add another HTTP request node.

43:14.210 --> 43:17.490
But this time to get clips.

43:18.930 --> 43:20.890
So search for HTTP request.

43:26.650 --> 43:29.050
So we are using get method instead of post.

43:29.570 --> 43:34.770
And now we're asking wave speed I to give us the finished clips.

43:36.530 --> 43:39.010
So let's go back to our documentation.

43:45.690 --> 43:47.890
So the model we are using is called.

43:50.440 --> 43:51.240
Let me check.

43:57.800 --> 43:58.520
All right.

44:00.880 --> 44:02.360
It will be quicker.

44:08.760 --> 44:09.840
So again API.

44:11.440 --> 44:14.440
And here we have instruction how to get our clips.

44:16.000 --> 44:18.080
So let's copy this URL.

44:18.480 --> 44:20.760
As you can see request get get method.

44:26.600 --> 44:29.800
Let's go to our Get Clips node.

44:30.920 --> 44:38.720
Let's rename it get Clips method get URL.

44:39.680 --> 44:41.080
Now you have to replace this.

44:43.280 --> 44:45.640
But first let's configure this node.

44:46.440 --> 44:52.710
So we want to Authenticate it by generic credential type.

44:53.990 --> 44:56.350
Generic authentication type will be header.

44:57.870 --> 45:00.150
And you have to do exactly the same thing.

45:01.510 --> 45:04.590
So let's check the documentation.

45:06.110 --> 45:09.150
The header we have authorization beta.

45:10.590 --> 45:11.630
So this is correct.

45:12.190 --> 45:13.710
Now let's add our API key.

45:14.350 --> 45:17.390
So switch over to expression expand it.

45:18.990 --> 45:19.670
Type beta.

45:24.150 --> 45:25.270
Followed by space.

45:27.710 --> 45:30.110
I need to grab my API keys.

45:42.110 --> 45:43.190
And paste it here.

45:44.430 --> 45:44.790
All right.

45:44.790 --> 45:45.350
Great.

45:47.030 --> 45:47.710
Safe.

45:49.430 --> 45:49.950
Safe.

45:55.190 --> 45:58.550
Now let's run our workflow so we can get the value.

46:00.070 --> 46:00.470
All right.

46:00.470 --> 46:03.310
So let's click Save and execute workflow.

46:06.190 --> 46:08.670
Oh actually it's starting from the beginning.

46:09.310 --> 46:09.870
All right.

46:10.550 --> 46:11.910
All right, let's wait a moment.

46:14.870 --> 46:22.950
Actually we have to wait a couple of minutes because I specified here 300 seconds to give our agent

46:23.550 --> 46:25.750
to give our model the time to generate clips.

46:26.270 --> 46:27.150
Now, let's move on.

46:27.190 --> 46:28.430
We got three items.

46:29.230 --> 46:32.950
Store three video clips generated by create clips node.

46:34.030 --> 46:36.190
So by sedans by the sedans model.

46:38.630 --> 46:39.630
So let's open it.

46:39.670 --> 46:40.550
We got an error.

46:44.470 --> 46:49.860
This is because we have to specify the request ID.

46:50.980 --> 46:56.940
That's why we wanted to test the first, to now be able to pass the ID from the root node.

46:57.620 --> 47:01.500
Of course, you can always type it, but I wanted to make it easy for you.

47:02.780 --> 47:05.580
So just simply remove this part.

47:09.260 --> 47:10.900
And grab the ID from here.

47:15.980 --> 47:18.580
Actually first let's switch over to expression.

47:25.620 --> 47:26.260
All right.

47:27.020 --> 47:28.980
And now it should work perfectly fine.

47:29.660 --> 47:30.060
Perfect.

47:30.060 --> 47:33.100
So the next step is to generate sounds.

47:33.100 --> 47:38.860
So we can put an audio layer on the clips we got from sedans.

47:39.300 --> 47:40.380
So let's hit save.

47:40.420 --> 47:42.860
Now let's add another HTTP request node.

47:43.340 --> 47:44.810
So search for HTTP.

47:46.850 --> 47:47.530
All right.

47:48.650 --> 47:50.770
Now we want to switch method to post.

47:53.570 --> 48:00.370
And the service the platform we are going to use to generate sounds is called Fallai.

48:01.250 --> 48:03.050
So go to philly.com.

48:03.730 --> 48:05.450
Create your account and sign in.

48:06.330 --> 48:09.450
So it's kind of similar to wave speed I.

48:10.410 --> 48:12.250
And now when you test it again.

48:15.810 --> 48:17.130
So let's pin the data.

48:21.410 --> 48:22.690
And execute this node.

48:28.010 --> 48:30.770
You can see that we get three outputs.

48:30.770 --> 48:33.530
So each containing an mp4 URL.

48:35.970 --> 48:42.130
You can actually you can actually copy this URL and paste it to your browser to see the result.

48:43.000 --> 48:46.240
So it will download the video clip for you to preview.

48:52.040 --> 48:52.680
Let's see.

49:01.960 --> 49:02.280
All right.

49:02.320 --> 49:02.800
Awesome.

49:03.680 --> 49:04.160
All right.

49:04.200 --> 49:09.360
Now that we have our video clips generated, the next steps are optional.

49:09.360 --> 49:11.760
But they are really complete the workflow.

49:11.760 --> 49:18.280
So we are going to add sound effects and then stitch everything together into one longer video.

49:18.880 --> 49:22.600
So for the sound generation we are using another HTTP request node.

49:30.240 --> 49:34.320
And we are posting a request to create sound effects for our clips.

49:36.760 --> 49:41.510
Now the platform we are going to use is kind of similar to a wave speed I.

49:41.870 --> 49:43.430
It's called fallai.

49:44.550 --> 49:48.310
So just go to Philly.com and create an account and sign in.

49:48.990 --> 49:50.230
Tuesday services.

49:50.230 --> 49:56.510
So to make API calls to the models they host, you also need to, uh, top up your account.

49:57.310 --> 50:01.590
But, um, the API calls are very cheap.

50:03.230 --> 50:10.710
So as you can see, I've spent $10 and generated like 30 videos.

50:11.070 --> 50:13.550
And so far I have only used $0.30.

50:14.270 --> 50:17.910
So the model we are using is called model V2.

50:20.430 --> 50:21.870
So once you top up your account.

50:24.750 --> 50:30.630
Just simply type and then audio v2.

50:30.870 --> 50:32.670
So it's the video to video model.

50:35.030 --> 50:43.070
Now we are going to use documentation to figure out how to set up the HTTP request node.

50:43.830 --> 50:46.110
So switch to the API tab.

50:47.590 --> 50:53.430
Then the table of content have to choose http curl.

50:58.470 --> 50:59.390
Then scroll down.

51:01.190 --> 51:05.870
And here we can check how to submit a request.

51:07.590 --> 51:10.030
So the client API handles the API submit protocol.

51:11.150 --> 51:11.750
All right.

51:12.350 --> 51:15.430
So yeah we have request post URL.

51:15.470 --> 51:16.950
So let's copy this URL.

51:20.270 --> 51:22.710
Let's go back to our workflow.

51:22.750 --> 51:24.430
Let's paste the URL right here.

51:25.470 --> 51:31.110
Let's just rename this node to create Sans for the authentication.

51:32.070 --> 51:34.470
Let's choose generic credential type.

51:36.310 --> 51:37.230
We also have.

51:37.230 --> 51:37.460
Of.

51:40.260 --> 51:40.660
Sorry.

51:40.660 --> 51:42.260
We also have a header.

51:43.020 --> 51:47.100
So for authorization we have a instead of better we have a key.

51:48.220 --> 51:50.180
So let's copy on authorization.

51:54.500 --> 51:56.580
Let's select header authentication.

51:58.540 --> 52:06.100
We don't want to use wave speed AI service for this node because we want to generate sounds not video

52:06.100 --> 52:06.660
clips.

52:08.100 --> 52:12.340
So let's provide credentials we have authorization.

52:13.540 --> 52:17.540
Now value expression expand it.

52:20.780 --> 52:25.100
And type capital key followed by space.

52:26.460 --> 52:28.300
Go to your account.

52:29.220 --> 52:32.060
Go to home API keys.

52:32.740 --> 52:33.420
Add key.

52:35.220 --> 52:35.980
Name it.

52:44.530 --> 52:48.850
Remember to keep it safe because it works like a password.

52:50.090 --> 52:51.170
So create key.

52:54.490 --> 52:55.810
Now you can copy it.

52:56.330 --> 52:57.130
Copy key.

53:01.210 --> 53:02.170
And paste it here.

53:03.250 --> 53:04.010
Perfect.

53:04.370 --> 53:05.090
It's safe.

53:07.410 --> 53:08.770
Now I want to send body.

53:10.530 --> 53:14.290
We want to switch body content type to row.

53:27.890 --> 53:28.530
All right.

53:29.210 --> 53:31.370
Now you have video URL and prompt.

53:32.410 --> 53:33.970
We can also expand it.

53:37.520 --> 53:38.720
For the content type.

53:44.560 --> 53:46.760
We have application JSON.

53:52.200 --> 53:54.520
And now let's create our body.

53:55.960 --> 53:59.320
So I'm going to switch over to expression expand it.

53:59.320 --> 54:01.200
And I'm going to paste the body right here.

54:01.720 --> 54:07.360
So the body looks like that as in our documentation we have a prompt and video URL.

54:11.640 --> 54:17.440
So for the prompt I've got ASMR is soothing sound effects.

54:18.000 --> 54:22.440
The prompt our prompt writer agent prepared for us.

54:25.120 --> 54:30.440
So you can simply just go to Prompt Writer agent.

54:36.190 --> 54:36.830
And.

54:40.190 --> 54:42.790
Simply drop it here.

54:44.870 --> 54:55.430
Duration and video URL from our Get Clips node within the output object.

54:59.830 --> 55:00.390
Perfect.

55:02.070 --> 55:08.390
So basically it looks exactly the same as in the documentation because we have a prompt and video URL,

55:08.430 --> 55:09.870
but we also added duration.

55:12.430 --> 55:15.270
As you can see the prompt and URL.

55:18.590 --> 55:19.070
Awesome.

55:20.430 --> 55:21.430
Now let's hit save.

55:23.070 --> 55:24.550
Let's also add batching.

55:24.550 --> 55:24.990
So.

55:27.790 --> 55:29.470
I'm going to add batching.

55:31.630 --> 55:36.230
Items per batch one and 2000.

55:38.430 --> 55:38.790
All right.

55:38.790 --> 55:39.310
Great.

55:40.310 --> 55:41.950
Now let's add another weight node.

55:45.790 --> 55:47.550
So let's wait.

55:49.870 --> 55:56.110
Let's wait about 60s for our model to generate sounds for us.

56:00.470 --> 56:04.510
And now let's get those generated sounds.

56:05.870 --> 56:07.710
So another HTTP request node.

56:14.950 --> 56:18.510
We get sounds method get.

56:19.870 --> 56:21.750
Now let's copy our URL.

56:23.950 --> 56:26.590
Now let's grab the URL from the documentation.

56:33.580 --> 56:34.420
Pass it here.

56:38.580 --> 56:39.500
Let's add.

56:42.380 --> 56:42.740
Okay.

56:42.780 --> 56:43.220
Forward.

56:43.220 --> 56:43.820
Slash.

56:46.500 --> 56:47.300
Request.

56:49.900 --> 56:50.780
Forward slash.

56:51.260 --> 56:56.380
And here you have to pass a request ID from the previous node from the.

56:57.340 --> 57:02.860
So from the wait node after we run this workflow and get it and get it from file I.

57:04.660 --> 57:05.620
So let's hit save.

57:07.500 --> 57:09.300
And now let's actually create songs.

57:10.060 --> 57:11.500
So let's pin the data.

57:15.980 --> 57:18.100
And let's execute this node.

57:21.820 --> 57:24.700
So now we're gonna wait 60s.

57:25.860 --> 57:26.300
All right.

57:26.300 --> 57:27.180
We got an error.

57:27.780 --> 57:28.650
Let's fix it.

57:30.370 --> 57:31.610
Some method not allowed.

57:32.850 --> 57:35.290
Please check you are using the right HTTP method.

57:35.330 --> 57:36.410
Item zero.

57:39.090 --> 57:44.450
So now we are able to grab this request id and drop it here.

57:45.770 --> 57:47.930
Let's switch over to expression.

57:51.130 --> 57:51.890
Perfect.

57:53.810 --> 57:55.170
Now authentication.

57:55.170 --> 57:55.570
Generic.

57:55.570 --> 57:56.530
Credential type.

57:59.010 --> 57:59.730
Question.

58:03.050 --> 58:04.210
Authorization.

58:05.170 --> 58:05.890
Expression.

58:10.450 --> 58:10.850
Okay.

58:13.010 --> 58:14.530
And let's grab our API key.

58:22.610 --> 58:23.690
I'm going to create a new one.

58:35.520 --> 58:36.480
And paste it here.

58:38.320 --> 58:40.200
And remember, it has to be exactly like that.

58:40.200 --> 58:40.600
So.

58:42.960 --> 58:45.320
Key followed by our API key.

58:46.880 --> 58:49.200
Oh, actually, I didn't copy it.

58:49.640 --> 58:50.440
Copy key.

58:50.600 --> 58:51.360
Okay, copy.

58:52.040 --> 58:56.000
All right, let's fix it like that.

58:56.960 --> 58:57.600
Save.

58:59.920 --> 59:00.640
Save.

59:02.320 --> 59:04.160
And let's execute it again.

59:06.000 --> 59:07.160
Now we got an error.

59:18.040 --> 59:18.280
Aha!

59:18.320 --> 59:21.400
Because I have to choose my credentials here.

59:23.040 --> 59:23.800
Perfect.

59:28.150 --> 59:28.910
Let's try again.

59:32.670 --> 59:33.070
All right.

59:33.070 --> 59:34.070
I know what's wrong.

59:34.110 --> 59:36.110
The request is still in the queue.

59:36.550 --> 59:40.310
So basically, the sons are not yet are not ready yet.

59:40.910 --> 59:42.790
So the I.

59:43.790 --> 59:46.910
So the API can send us the result.

59:47.310 --> 59:53.310
So to fix it, we just need to wait a bit longer or check the status first.

59:55.390 --> 59:57.510
Now let's actually restart the workflow.

01:00:01.670 --> 01:00:02.830
Let's wait a few minutes.

01:00:16.750 --> 01:00:20.790
Now the new idea has been added to our Google sheet.

01:00:22.030 --> 01:00:22.430
All right.

01:00:22.470 --> 01:00:25.070
So we have three new clips.

01:00:26.390 --> 01:00:27.910
The message is success.

01:00:30.150 --> 01:00:30.870
All right.

01:00:33.430 --> 01:00:34.790
Now let's wait a few minutes.

01:00:35.750 --> 01:00:35.990
Yes.

01:00:35.990 --> 01:00:40.190
So basically there are two ways to avoid getting this error in the future.

01:00:40.510 --> 01:00:44.590
You can increase the waiting time, for example, to.

01:00:48.310 --> 01:00:51.950
100 80s to give.

01:00:54.270 --> 01:00:57.510
More time to for generating the sense for us.

01:00:58.910 --> 01:01:04.590
Or another way is to add another HTTP request node.

01:01:08.310 --> 01:01:10.030
Before we getting the sense.

01:01:17.270 --> 01:01:18.390
To check the status.

01:01:19.750 --> 01:01:30.820
So you can use the get method to get the status from the AI platform by placing this URL field, and

01:01:30.820 --> 01:01:36.460
then we can use if node to add additional logic.

01:01:36.460 --> 01:01:40.380
So if the status is completed only then move to the next step.

01:01:45.860 --> 01:01:47.300
And then you would need to.

01:01:48.420 --> 01:01:51.860
And here you would need to specify the value.

01:01:51.860 --> 01:01:53.180
So this is our status.

01:01:53.940 --> 01:01:56.980
So JSON dot status is equal to.

01:01:59.980 --> 01:02:00.780
Completed.

01:02:08.940 --> 01:02:13.340
But we are going to stick with the simpler method to not make it more complex.

01:02:14.860 --> 01:02:21.330
I wanted to demonstrate to you how you can fix waiting times errors for the future.

01:02:25.330 --> 01:02:27.690
I'm going to delete these notes.

01:02:30.930 --> 01:02:34.850
And let's try it for our sons.

01:02:36.530 --> 01:02:43.650
Also, I did a test and I realized that I missed a closing bracket in the body in the Create Scripts

01:02:44.330 --> 01:02:44.810
node.

01:02:44.810 --> 01:02:47.610
So right here.

01:02:49.250 --> 01:02:55.010
So it's really important to double check that you don't miss, for example, any bracket when you compare

01:02:55.010 --> 01:02:59.370
the format to the format provided in the documentation.

01:03:00.490 --> 01:03:08.010
So in that case with the documentation on the fly platform, it's a good practice to double check the

01:03:08.010 --> 01:03:12.930
format to the format provided in the documentation of any API and any service.

01:03:17.930 --> 01:03:18.490
Perfect.

01:03:18.530 --> 01:03:21.200
Now when I open the Jetsons node.

01:03:25.160 --> 01:03:28.120
I can see that I've got three items here as the output.

01:03:28.280 --> 01:03:29.160
So that's great.

01:03:30.720 --> 01:03:39.960
And now the important part is that we are passing the description from our original prompt agent, the

01:03:39.960 --> 01:03:41.600
ten second duration.

01:03:41.640 --> 01:03:46.840
And most importantly, the video URL from our previous seasons generation.

01:03:48.920 --> 01:03:55.720
So since we are processing three clips, an audio model will add the sounds to each one.

01:03:56.520 --> 01:03:58.240
That's why we have three items here.

01:03:59.200 --> 01:04:02.960
And when this runs you will see the requests are in the queue.

01:04:03.480 --> 01:04:09.000
And audio model starts working on adding sounds to our clips.

01:04:09.920 --> 01:04:15.520
That's why we add another node here for 60s.

01:04:15.720 --> 01:04:23.390
But I increase the time to 100 and 80s to give a model time to process everything.

01:04:26.590 --> 01:04:30.790
And then we have another Get request to retrieve our clips.

01:04:30.950 --> 01:04:33.190
Now, with sand layers added.

01:04:33.630 --> 01:04:37.830
And each of our three items now contains a video with sound effects.

01:04:39.390 --> 01:04:45.590
Now you can copy this URLs and and preview them in your browser, and you should hear the sound effects

01:04:47.590 --> 01:04:49.150
on top of our original clips.

01:04:49.670 --> 01:04:53.230
Just a quick note regarding the audio model.

01:04:54.350 --> 01:05:03.830
The best part about this model is it costs only about 0.001 per second, which is basically a 10th of

01:05:03.870 --> 01:05:04.470
a cent.

01:05:04.710 --> 01:05:06.630
So it's a very economical for what you get.

01:05:07.350 --> 01:05:07.830
All right.

01:05:07.870 --> 01:05:16.870
Now that we successfully have three clips with sounds, we need to connect to stitch them together into

01:05:16.910 --> 01:05:18.030
one final video.

01:05:18.710 --> 01:05:20.150
So let's add another node.

01:05:21.390 --> 01:05:22.230
This time node.

01:05:22.230 --> 01:05:22.670
Node.

01:05:29.150 --> 01:05:30.950
And what we are going to do here.

01:05:31.470 --> 01:05:39.310
We are going to take this three separate mp4 files and group them into one item.

01:05:39.790 --> 01:05:43.230
So we need them bundled together for the stitching process.

01:05:44.590 --> 01:05:47.070
So I'm going to paste a short piece of code.

01:05:47.590 --> 01:05:53.310
So this code takes our individual video URLs and packages them together.

01:05:54.430 --> 01:05:55.990
Now when you execute this step.

01:05:59.590 --> 01:06:03.030
You can see that we had three separate items.

01:06:03.830 --> 01:06:08.190
And now we have all these videos combined into one item.

01:06:10.390 --> 01:06:13.230
And now we are going to add another HTTP request node.

01:06:14.140 --> 01:06:19.140
This one will be for stitching our videos together using ffmpeg.

01:06:19.300 --> 01:06:20.820
Through file I.

01:06:21.860 --> 01:06:28.380
FFmpeg is a video editing service that lets us do automatic video editing.

01:06:29.260 --> 01:06:33.900
Luckily, Pal-i has an integration with FFmpeg which makes it really easy to use.

01:06:34.500 --> 01:06:36.580
So the cost is very cheap.

01:06:40.180 --> 01:06:41.060
As you can see.

01:06:43.260 --> 01:06:48.900
It's about 0.0002 per compute second.

01:06:53.460 --> 01:06:54.660
So let's set this up.

01:06:55.140 --> 01:07:01.300
First let's actually rename this node to video.

01:07:03.660 --> 01:07:05.780
You are a collector.

01:07:09.860 --> 01:07:15.770
And now let's add another HTTP request node Not to start the stitching process.

01:07:18.370 --> 01:07:19.370
So http.

01:07:24.770 --> 01:07:26.530
Now we want to use post method.

01:07:30.570 --> 01:07:35.530
And to get the URL from Falaise documentation.

01:07:37.970 --> 01:07:41.810
So just search for the book.

01:07:44.810 --> 01:07:46.210
It's this one compose.

01:07:46.810 --> 01:07:48.530
So we did a video model.

01:07:56.090 --> 01:07:56.850
Selected.

01:07:58.170 --> 01:07:59.210
Then go to API.

01:08:04.410 --> 01:08:10.690
And here you can grab the URL and you get the URL from Falaise documentation.

01:08:12.280 --> 01:08:14.600
Authorization stays the same as before.

01:08:15.800 --> 01:08:20.080
So generic credential type header authentication.

01:08:21.520 --> 01:08:22.720
We want to send the body.

01:08:26.320 --> 01:08:36.320
Use raw type for the content type application slash JSON.

01:08:42.720 --> 01:08:46.080
And for the request body we need to add custom instructions.

01:08:46.720 --> 01:08:48.640
So I'm going to switch over to expression.

01:08:50.240 --> 01:08:56.160
Now this comes directly from file documentation on how they use ffmpeg.

01:08:56.560 --> 01:09:03.240
So what we are doing here is we are listing our clips one by one, providing timestamps and duration

01:09:03.240 --> 01:09:08.960
for each, and telling the ffmpeg to stitch them together into one video.

01:09:10.710 --> 01:09:15.870
And now when we run this node, the request goes into queue.

01:09:16.870 --> 01:09:18.670
So let's add another node.

01:09:26.630 --> 01:09:29.910
And let's wait for 60s.

01:09:35.750 --> 01:09:38.830
To let the model stitch our videos together.

01:09:39.350 --> 01:09:41.590
Now let's rename our HTTP request node.

01:09:44.470 --> 01:09:45.430
To sequence.

01:09:47.910 --> 01:09:48.550
Video.

01:09:49.310 --> 01:09:51.790
I forgot about batching, so let's add batching.

01:09:56.710 --> 01:09:59.710
Items for batch one.

01:09:59.950 --> 01:10:03.390
Batch interval thousand.

01:10:09.190 --> 01:10:09.990
Let's hit save.

01:10:11.430 --> 01:10:15.430
And now we need one more get request to retrieve our final video.

01:10:16.390 --> 01:10:25.230
Now, before you give it a test to get the request ID for the next step, make sure you are selecting

01:10:25.230 --> 01:10:30.270
the correct credentials in the authentication.

01:10:30.950 --> 01:10:38.270
So make sure you are using the credentials for connecting to our AI service, not the AI platform.

01:10:39.510 --> 01:10:44.870
All right, now we need one more Get request to retrieve our final video.

01:10:45.870 --> 01:10:48.830
So let's add another HTTP request node.

01:11:01.190 --> 01:11:02.790
Let's switch method to post.

01:11:06.540 --> 01:11:09.140
I'm going to paste the URL from documentation.

01:11:09.780 --> 01:11:11.180
Let me switch over to schema.

01:11:11.980 --> 01:11:17.300
You can grab the request ID from the right node and just drop it here.

01:11:24.140 --> 01:11:24.700
All right.

01:11:25.740 --> 01:11:33.180
So we are using the API URL with the specific request ID that they gave us from the previous step.

01:11:33.180 --> 01:11:36.060
So we can track which video is ours.

01:11:36.780 --> 01:11:40.740
And when this process completes we get our final video URL.

01:11:41.380 --> 01:11:43.740
So just let's add authentication again.

01:11:48.260 --> 01:11:48.820
Add the.

01:11:52.140 --> 01:11:52.700
Whole I.

01:11:57.620 --> 01:11:58.300
Like that.

01:11:59.500 --> 01:12:00.820
Now let's execute this step.

01:12:01.780 --> 01:12:08.290
So we got our final video URL And you can copy it and paste it into a browser.

01:12:09.170 --> 01:12:18.290
It downloads our complete 32nd video with all clips properly stitched together and all the sounds included.

01:12:20.370 --> 01:12:20.730
All right.

01:12:20.770 --> 01:12:21.250
Great.

01:12:21.290 --> 01:12:23.130
Now we have our final video ready.

01:12:23.490 --> 01:12:30.970
So the final step is to properly log that URL in our Google Sheet node.

01:12:31.490 --> 01:12:39.410
So let's add actually first let's rename this node to get final video.

01:12:41.130 --> 01:12:43.490
So now let's add one more Google Sheet node.

01:12:48.250 --> 01:12:49.290
And we want to.

01:12:51.450 --> 01:12:52.770
Update the sheet.

01:12:55.890 --> 01:12:58.170
Make sure you are connected to the correct account.

01:13:03.160 --> 01:13:07.160
Let's select our sedans sheet sheet1.

01:13:09.720 --> 01:13:13.480
The column to match all we want to select idea.

01:13:15.440 --> 01:13:18.520
So this connects to the same document we have been using.

01:13:18.960 --> 01:13:23.480
And what it does is find the specific row we need to update in our Google sheet.

01:13:26.080 --> 01:13:30.640
Remember that row we created at the beginning with our idea?

01:13:35.480 --> 01:13:44.080
We are going to find that exact row and mark the production column as done right.

01:13:45.640 --> 01:13:52.040
And most importantly, we are logging our final video URL into this Google sheet.

01:13:52.040 --> 01:13:55.760
So you have a proper tracking of where to find this video.

01:13:58.640 --> 01:14:02.270
And now let's grab the idea from the Safe Idea node.

01:14:04.870 --> 01:14:06.230
And drop it into this field.

01:14:07.030 --> 01:14:10.030
So we are using the safe idea from the.

01:14:12.670 --> 01:14:13.550
From this node.

01:14:19.750 --> 01:14:22.230
And now we need to replace the item.

01:14:24.550 --> 01:14:26.150
With first.

01:14:28.630 --> 01:14:29.630
And run brackets.

01:14:31.950 --> 01:14:39.190
Because when nodes run in different branches of our workflow and it can't automatically match which

01:14:39.190 --> 01:14:41.150
data belongs to together.

01:14:43.950 --> 01:14:44.350
Yes.

01:14:44.350 --> 01:14:50.950
So we want to tell anything to just to grab the first item from that node.

01:14:55.550 --> 01:14:56.030
All right.

01:14:56.030 --> 01:14:58.830
So now we have a dynamic variable here.

01:15:01.510 --> 01:15:02.190
Perfect.

01:15:03.390 --> 01:15:04.670
Now let's execute the step.

01:15:09.390 --> 01:15:10.070
All right.

01:15:12.110 --> 01:15:13.710
And now let's check our Google sheet.

01:15:17.910 --> 01:15:18.470
Awesome.

01:15:20.030 --> 01:15:20.390
All right.

01:15:20.390 --> 01:15:20.590
Great.

01:15:20.590 --> 01:15:21.350
We are done.

01:15:21.350 --> 01:15:24.270
And if we set this workflow to run every day.

01:15:27.790 --> 01:15:34.470
By using this scheduled trigger, it will create videos for us automatically and log them into this

01:15:34.470 --> 01:15:36.670
Google sheet one by one.

01:15:38.590 --> 01:15:43.070
And now you can either publish this yourself, or you can expand this system.

01:15:43.070 --> 01:15:47.590
To take it a step further, you can connect this Google sheet to.

01:15:48.070 --> 01:15:55.430
You can post these videos on social media platforms such as TikTok, Instagram Reels, YouTube shorts.

01:15:56.390 --> 01:16:06.460
Now to conclude to create 32nd video using CD-Rs and this automation, it was only about $0.09.

01:16:06.580 --> 01:16:12.980
Compare that to Vo3, which would have cost us about $20.

01:16:12.980 --> 01:16:14.340
So that's the massive difference.

01:16:14.940 --> 01:16:18.060
And adding the Suns is also very cheap.

01:16:18.340 --> 01:16:21.140
Only $0.03 for the final video.

01:16:22.180 --> 01:16:25.980
And then stitching the clips together is less than a cent.

01:16:26.580 --> 01:16:33.380
So in total we are looking at $0.93 to create a complete 32nd video automatically.

01:16:33.780 --> 01:16:35.100
So that's pretty incredible.

01:16:35.820 --> 01:16:38.260
All right, I hope you learned something new in this tutorial.

01:16:38.540 --> 01:16:42.220
Remember you can download the template from the resources section of this lesson.

01:16:42.500 --> 01:16:47.740
When you are building this solution from scratch and face any issues or get any errors.

01:16:48.020 --> 01:16:53.980
You can compare your configurations to the pre-made template and always you can ask questions in the

01:16:53.980 --> 01:16:54.980
Q&amp;A section.

01:16:55.980 --> 01:16:58.060
Thank you for bearing with me and see you in the next one.
