DEV Community

HongMei Wu
HongMei Wu

Posted on

Why I Changed My Faceless Reels Generator into a Faceless Reels Agent


I recently made a small but important change to one of my projects.

I changed the concept from a Faceless Reels Generator to a Faceless Reels Agent.

At first, this sounded like a naming change.

It wasn't.

The more I built the product, the more I realized that a "generator" and an "agent" represent two very different ways of designing an AI product.

A generator waits for instructions.

An agent has a goal.

That difference completely changed how I think about the product.

The old model: Generate a video

The original workflow was relatively simple:

User
  ↓
Enter an idea
  ↓
Generate script
  ↓
Generate voice
  ↓
Generate visuals
  ↓
Add captions
  ↓
Render video
  ↓
Download
Enter fullscreen mode Exit fullscreen mode

This is basically an AI-powered video generator.

The user is still the operator.

They decide what to make, provide the input, choose the settings, start the generation process, review the result, and decide what to do next.

AI is mostly doing individual tasks.

This model works.

But it has an obvious limitation:

The user still has to manage the workflow.


The new model: Give the agent a goal

With the agent approach, I started thinking about the workflow differently.

Instead of asking:

"How do I generate a reel?"

I started asking:

"What would happen if the user simply told the system what they wanted to accomplish?"

For example:

Create a 30-second faceless reel about
the history of the iPhone.

Target audience:
tech enthusiasts.

Style:
fast-paced documentary.

Platform:
Instagram Reels.
Enter fullscreen mode Exit fullscreen mode

The agent can then break this into multiple tasks:

Goal
 ↓
Research topic
 ↓
Create content angle
 ↓
Write script
 ↓
Generate storyboard
 ↓
Select/generate visuals
 ↓
Generate voiceover
 ↓
Create captions
 ↓
Assemble video
 ↓
Check output
 ↓
Return final reel
Enter fullscreen mode Exit fullscreen mode

The important difference is that these are no longer independent features.

They become a workflow controlled by an agent.


Generator vs Agent

This distinction became much clearer to me after building both versions.

Generator

A generator typically looks like:

Input → Model → Output
Enter fullscreen mode Exit fullscreen mode

For example:

Prompt
  ↓
LLM
  ↓
Script
Enter fullscreen mode Exit fullscreen mode

Or:

Script
  ↓
Video API
  ↓
Video
Enter fullscreen mode Exit fullscreen mode

Each operation has a relatively clear input and output.

Agent

An agent looks more like:

Goal
 ↓
Planning
 ↓
Tool selection
 ↓
Execution
 ↓
Observation
 ↓
Decision
 ↓
Next action
 ↓
Final result
Enter fullscreen mode Exit fullscreen mode

The agent isn't necessarily generating everything itself.

Instead, it decides what needs to happen next.

That was the key insight for my project.


The video model is not the agent

One mistake I initially made was thinking that using an LLM automatically made the product an agent.

It doesn't.

An LLM generating a script is not necessarily an agent.

An image model generating a picture is not an agent.

A video model generating a video is not an agent.

The interesting part is the orchestration layer between them.

For example:

                  ┌──────────────┐
                  │   Agent      │
                  │              │
                  │  Planner     │
                  │  Memory      │
                  │  Decisions   │
                  └──────┬───────┘
                         │
        ┌────────────────┼────────────────┐
        ↓                ↓                ↓
   Research Tool     Script Tool      Video Tool
        │                │                │
        ↓                ↓                ↓
    Sources           Script           Assets
                         │
                         ↓
                    Render Tool
                         │
                         ↓
                    Final Reel
Enter fullscreen mode Exit fullscreen mode

The agent becomes the coordinator.

The individual AI models become tools.

That architecture feels much more interesting to me than simply adding another "Generate" button.


What does a Faceless Reels Agent actually do?

A useful agent shouldn't just generate a video.

It should be able to make decisions throughout the process.

For example, imagine the user gives it:

Make a short video explaining
why old computers used floppy disks.
Enter fullscreen mode Exit fullscreen mode

The agent might decide:

Step 1 — Understand the goal

Determine:

  • Topic
  • Target audience
  • Approximate duration
  • Platform
  • Tone
  • Visual style

Step 2 — Research

Find useful information about floppy disks.

The agent could use tools such as:

Search
Wikipedia
Knowledge base
Web APIs
Enter fullscreen mode Exit fullscreen mode

Step 3 — Create the content structure

Instead of immediately writing a script, it can first create:

Hook
 ↓
Context
 ↓
Interesting fact
 ↓
Explanation
 ↓
Conclusion
Enter fullscreen mode Exit fullscreen mode

Step 4 — Generate the script

Now the LLM produces the actual narration.

Step 5 — Build a storyboard

The agent maps the script to scenes:

Scene 1
0-3 sec
Hook

Scene 2
3-8 sec
Historical context

Scene 3
8-15 sec
How floppy disks worked

Scene 4
15-23 sec
Why they disappeared

Scene 5
23-30 sec
Final takeaway
Enter fullscreen mode Exit fullscreen mode

Step 6 — Generate the assets

Different tools can then handle:

  • Images
  • Video clips
  • Voice
  • Music
  • Captions

Step 7 — Render

The agent sends everything to the rendering pipeline.

Step 8 — Check the result

This is another important difference.

The workflow shouldn't simply assume that the output is correct.

The agent can check things like:

Is the video the correct duration?

Are captions within the safe area?

Does the voiceover match the script?

Are any scenes missing?

Does the final resolution match the platform?
Enter fullscreen mode Exit fullscreen mode

If something is wrong, the agent can potentially send that task back through the workflow.

That's much closer to an actual agent.


The interesting part is not the LLM

One of the things I learned from this project is that the LLM is actually only one component.

The harder engineering problem is the workflow.

For example:

Agent
├── Planner
├── State
├── Tools
│   ├── Search
│   ├── Script generation
│   ├── Image generation
│   ├── Voice generation
│   └── Video rendering
├── Validation
└── Retry / recovery
Enter fullscreen mode Exit fullscreen mode

The agent needs to know what has already happened.

For example:

{
  "topic": "history of the iPhone",
  "script": "completed",
  "storyboard": "completed",
  "voice": "completed",
  "visuals": "3/6 completed",
  "render": "pending"
}
Enter fullscreen mode Exit fullscreen mode

This sounds simple, but state becomes extremely important once a workflow has multiple asynchronous operations.

If a video generation API takes two minutes and fails, I don't want to restart the entire workflow.

I want to resume from the failed step.


Agents make failures more interesting

A traditional generator often looks like this:

Generate
   ↓
Success
Enter fullscreen mode Exit fullscreen mode

or:

Generate
   ↓
Error
Enter fullscreen mode Exit fullscreen mode

An agent can potentially handle:

Generate
   ↓
Error
   ↓
Understand failure
   ↓
Change strategy
   ↓
Retry
Enter fullscreen mode Exit fullscreen mode

For example:

Video generation failed.

Reason:
visual prompt rejected.

Agent:
→ simplify visual prompt
→ regenerate scene
→ continue workflow
Enter fullscreen mode Exit fullscreen mode

This is where I think agent architecture becomes particularly useful.

The system isn't just executing an API call.

It is managing a task.


From "features" to "tools"

This also changed how I think about product architecture.

Previously I thought in terms of features:

Script Generator
Image Generator
Voice Generator
Video Generator
Caption Generator
Enter fullscreen mode Exit fullscreen mode

Now I think in terms of tools:

research()
write_script()
create_storyboard()
generate_visual()
generate_voice()
create_captions()
render_video()
validate_video()
Enter fullscreen mode Exit fullscreen mode

The agent decides when to call them.

That creates a much more composable architecture.

For example, tomorrow I might add:

analyze_trends()
Enter fullscreen mode Exit fullscreen mode

Then the agent could potentially do:

Find a trending topic
        ↓
Research it
        ↓
Write a script
        ↓
Create the video
        ↓
Validate it
Enter fullscreen mode Exit fullscreen mode

The user doesn't need to understand every individual API.

They just describe the outcome they want.


The UI also changes

This architectural change affects the UI.

A traditional generator might have a form like:

Topic: __________

Duration: [30 sec]

Voice: [Male]

Visual style: [Cinematic]

Captions: [Enabled]

[ Generate ]
Enter fullscreen mode Exit fullscreen mode

An agent interface can be much simpler:

What do you want to create?

┌─────────────────────────────────────┐
│ Create a 30-second reel about       │
│ why people still use mechanical     │
│ keyboards.                          │
└─────────────────────────────────────┘

              [ Run Agent ]
Enter fullscreen mode Exit fullscreen mode

The interesting question becomes:

How much configuration should the user actually have to provide?

The agent can infer reasonable defaults.

The user can still override them when necessary.

That makes the product feel less like a collection of AI utilities and more like a digital worker.


But "Agent" doesn't mean full autonomy

I don't think everything should be fully autonomous.

For content generation, there are many points where human approval is useful.

For example:

Research
   ↓
Script
   ↓
[ Human approval ]
   ↓
Storyboard
   ↓
Assets
   ↓
[ Human approval ]
   ↓
Render
   ↓
Publish
Enter fullscreen mode Exit fullscreen mode

An agent should be able to operate autonomously, but autonomy should be configurable.

For example:

Mode 1 — Manual

Agent proposes actions.
User approves every major step.

Mode 2 — Assisted

Agent executes most steps.
User approves before publishing.

Mode 3 — Autonomous

Agent runs the entire workflow.
User reviews the final result.
Enter fullscreen mode Exit fullscreen mode

This is probably more useful than treating autonomy as a simple on/off switch.


Why I think "Agent" is a better mental model

The biggest change isn't actually technical.

It's conceptual.

A generator asks:

"What should I generate?"

An agent asks:

"What are we trying to accomplish?"

That's a very different product philosophy.

If the goal is:

"Create one video."

A generator is probably enough.

But if the goal is:

"Create three useful videos every week about cybersecurity."

Then the workflow becomes much more interesting.

The system may need to:

Find topics
 ↓
Evaluate topics
 ↓
Research
 ↓
Write
 ↓
Create videos
 ↓
Review
 ↓
Schedule
 ↓
Learn from results
 ↓
Create the next batch
Enter fullscreen mode Exit fullscreen mode

At that point, calling it a "generator" starts to feel limiting.


What I'm building toward

The Faceless Reels Agent is still evolving.

The direction I'm exploring is not:

"How can I generate better AI videos?"

It's:

"How can an AI agent take responsibility for more of the video creation workflow?"

That changes the engineering questions.

Instead of asking:

Which video model should I use?
Enter fullscreen mode Exit fullscreen mode

I also need to ask:

How should the agent plan?

How should it remember state?

How should tools be exposed?

How should failures be recovered?

Where should humans stay in the loop?

How should long-running jobs be handled?

How do we make the workflow observable?

How do we prevent an agent from doing something unexpected?
Enter fullscreen mode Exit fullscreen mode

Those are much more interesting engineering problems.


Generator → Agent

So this is the mental model I'm using now:

                GENERATOR

User
 ↓
Prompt
 ↓
AI Model
 ↓
Output
Enter fullscreen mode Exit fullscreen mode

versus:

                  AGENT

User
 ↓
Goal
 ↓
┌───────────────────────┐
│       Agent           │
│                       │
│   Plan                │
│   Decide              │
│   Execute             │
│   Observe             │
│   Recover             │
└───────────┬───────────┘
            │
     ┌──────┼──────┐
     ↓      ↓      ↓
  Search  Content  Video
     │      │      │
     └──────┼──────┘
            ↓
          Result
Enter fullscreen mode Exit fullscreen mode

For me, the transition from Faceless Reels Generator → Faceless Reels Agent is really a transition from AI-powered feature to AI-powered workflow.

And I suspect we'll see more products make the same transition.

Not because every product needs an agent.

But because sometimes the most useful thing AI can do isn't generating something for us.

It's taking a goal and figuring out what needs to happen next.


Disclosure: This article was written with the assistance of AI and reviewed/edited by the author.

Top comments (0)