Skip to main content

4 posts tagged with "video"

View All Tags

Video Dubber Part 2: How to customize and deploy the web UI Application

· 4 min read
Faik Uygur
Co-Founder of Robomotion

Before we begin, you can get a firsthand feel for our Robomotion Video Dubber application by exploring our interactive live demo.

Video Dubber Screenshot

This is the Part 2 of the Video Dubber blog posts. You can access Part 1 from here.

Introduction

Video Dubber is an application designed to assist in video dubbing and language translation. It utilizes FlutterFlow.

Previously, we shared a post demonstrating how to modify the Robomotion flow. In this post, we will explore how to modify the FlutterFlow UI application.

FlutterFlow

First and foremost, you need to have a FlutterFlow account. FlutterFlow is an online platform that enables users to design and build mobile and web applications effortlessly, utilizing a drag-and-drop interface. It simplifies app development, making it accessible even to those without extensive coding knowledge. It is a low-code platform built on Flutter that facilitates the creation of high-quality, natively compiled applications for both iOS and Android from a single codebase. Additionally, Flutter supports the development of web applications, a feature we take advantage of.

FlutterFlow Home

The Robomotion Application Robots act as the backend, while FlutterFlow is utilized for the front end of our applications. This combination ensures seamless integration of intricate backend operations with intuitive frontend designs, enabling the development of robust and efficient applications that are both functional and aesthetically pleasing.

Setup

Moving forward, we will guide you through the process of importing and modifying the Video Dubber FlutterFlow Application. If your goal is simply to use the Video Dubber application, you don't need to read further; you can run the flow directly from our App Store as mentioned in this post.

First, log in to your FlutterFlow account. If you don't have an account yet, you can create one here.

Let's begin by cloning the Video Dubber FlutterFlow app from this link. Click on the 'Clone' button as shown below.

FlutterFlow Clone

For a quick test change, let's modify the title. Change "Let's Translate & Dub your video!" to something like "Welcome to Video Dubber!"

Change Header

Click the FlutterFlow settings icon.

FlutterFlow Settings

Update the App Details.

Change App Details

Click the Web Publishing link, select a unique subdomain for your application, and then click Publish.

Web Publishing

After the publishing is successful, you will see a screen like the one below.

Published App

You can now visit your allocated subdomain. In my case, it was https://my-video-dubber.flutterflow.app

Updated App

Update the Custom App URL

In the previous post, we demonstrated how to create an application using the official Video Dubber published web link. Now, go to the Admin Console -> Apps page and update that App URL with your custom App URL.

Video Dubber App Update

If you return to your App instance in Robomotion Apps, the "Open App" button will now open your custom application.

Custom App

Instance ID

Every instance associated with your FlutterFlow app runs on a different Application Robot. These are connected to the UI with the instance ID query parameter shown below.

Get Instance ID

You can also copy this link and the instance ID from the icon left to the "Open App" button.

Copy Instance ID

Why is Instance ID important?

The Instance ID is used to link the robot with your frontend. So if you go to the URL directly without the query param, the app won't work.

However, you can set it as a default instance within your Custom FlutterFlow App. Go to the Custom Code section and click the Custom Action named connect. In that code, you can uncomment the instanceID parameter of the robomotion.connect function and replace the instanceID with your instanceID.

Update Instance ID

This way, when you go to the URL directly, it will use this default instanceID without a query parameter. This is also required when you are using Test Mode and Run Mode while developing your FlutterFlow application.

Where to go from here?

FlutterFlow has its own extensive documentation, which goes beyond the scope of this blog post. To explore further, you can visit their documentation and delve into a wealth of additional resources. For a more interactive learning experience, consider watching the informative tutorials available in the FlutterFlow University playlist on their YouTube channel. This playlist provides valuable insights and step-by-step guides to maximize your proficiency with FlutterFlow.

Furthermore, if you have questions or want to engage with the FlutterFlow community, you can join their Forum at this link. The forum serves as a platform for discussions, sharing insights, and seeking assistance from other FlutterFlow enthusiasts.

Happy exploring!

Video Dubber Part 1: How to customize and run the flow

· 14 min read
Faik Uygur
Co-Founder of Robomotion

Before we begin, you can get a firsthand feel for our Robomotion Video Dubber application by exploring our interactive live demo.

Video Dubber Screenshot

This is the Part 1 of the Video Dubber blog posts. You can access Part 2 from here.

Introduction

Video Dubber is an application designed to assist in video dubbing and language translation. It utilizes a combination of technologies: Robomotion RPA for automation, Replicate for transcribing audio into text, and OpenAI for translating that text into various languages. The app allows users to edit these transcriptions and convert them back into speech using OpenAI's text-to-speech technology, which is then used to create the final dubbed video.

Video Dubber Cover

Key features include:

  1. Backend Automation: Powered by Robomotion RPA, it automates the process of transcription and translation.
  2. Transcription and Translation: Uses Replicate for accurate transcription and OpenAI for translating text into different languages.
  3. Customizable Text-to-Speech: Offers the ability to edit transcriptions and utilize OpenAI's text-to-speech to produce the dubbed audio.
  4. Flexibility in Tools: Users can replace OpenAI's text-to-speech with alternatives like ElevenLabs AI, and modify workflows in the Flow Designer.
  5. User-Friendly Frontend: Developed with FlutterFlow, the frontend is designed for ease of use, and the code is shared for further customization.

Video Dubber is suitable for users who need a straightforward solution for dubbing videos into different languages, whether for personal projects, educational content, or professional video production. It offers a degree of customization and flexibility, making it adaptable to various requirements.

Before we get into the nitty-gritty of setting up and tailoring Video Dubber to your needs, let's watch our introductory video. This quick video will show you exactly what Video Dubber is all about, showcasing its main features and how it can help your video projects.

Running it from Robomotion App Store

If you're looking just to run the app, you can easily do this through our App Store. Robomotion can operate this app on both your Desktop and in the Cloud. The app leverages various AI platforms such as Replicate and Open AI. You can use Robomotion AI Credits, eliminating the need to register separately on these platforms. Alternatively, you can use your own API keys which require subscriptions on all AI platforms.

The minimum requirements to directly run this app from the Robomotion App Store are as follows:

  • Application Robot ( Required - Our Personal Plan includes 3 Application Robots)
  • Cloud Run Minutes ( Optional - You have the option to connect a robot on your Desktop to run this app. You can buy Cloud Run Minutes from Admin Console's Subscriptions page.)
  • Robomotion AI Credits ( Optional - You can run the app using your own API keys by modifying the flow in Flow Designer as detailed below. You can buy AI Credits from Admin Console's Subscriptions page.)

Creating a 25-minute video with Cloud Run minutes and Robomotion AI credits is 5 to 10 times more affordable than comparable AI SaaS dubbing software found online. You can further reduce costs by modifying the flow to use your own API keys and running the flow on your desktop.

Additionally, you are not constrained by minute limitations or obligated to subscribe to higher plans for longer durations as is often the case with online SaaS dubbing software pricing models.

Running it from Robomotion Flow Designer

Moving forward, we will show you how to import and modify the Video Dubber flow. If your goal is simply to use the Video Dubber application, you don't need to read further; you can run the flow directly from our App Store as mentioned earlier.

This part of the process requires a certain level of skill in Robomotion development, which may take some time to learn. The resources in our getting started guide and the tutorials section, as well as our YouTube videos, will be incredibly helpful. We also invite you to join our Discord community, where our team is always ready to assist you with any challenges you face in your learning and development journey.

Setup

First, log in to your Robomotion workspace. If you don't have an account yet, you can create your workspace here.

Let's begin by importing the Video Dubber flow from this link. Click on the 'Import' button as shown below.

Import Flow

Credentials (Optional)

This section is optional and only necessary if you prefer to use your own API keys. The flow uses Replicate and Open AI. If you're not already registered on these platforms, you'll need to do so. You can skip this section if you are using Robomotion AI Credits.

  1. Sign up for Replicate and navigate to their API Tokens page to create an API token. Name your token for easy identification and save it securely.

Replicate Token

  1. Similarly, sign up for OpenAI, go to their API keys page, and create an API token. Remember to name your token and keep it saved in a secure location.

OpenAI Token

  1. Next, we'll set up a Vault for securely storing your API key credentials using Client-Managed Encryption Keys (CMEK).

Click on the Vaults icon.

Designer Vaults Icon

  1. Enter your workspace password to access your vaults. Note that vaults are secured with your workspace password and vault secret keys.

Designer Vaults Workspace Pass

  1. Click on the 'Create Vault' button, give your vault a name, and then click 'Create'.

Designer Create Vault

  1. Carefully copy and save your Vault Secret Key in a safe place. It's important not to lose this key; without it, you won't be able to access your vault and will need to create a new one. This secret key will later be used to inject into your Application Robot running on your machine or a VPS server.

Vault Secret Key

  1. Click on your newly created Vault.

Vault

  1. Add your Replicate and Open AI keys to this vault.

Vault

  1. After adding the keys, close your vault and click on the Setup node in the flow.

Vault

  1. Click on the black 'Connect' node with the Replicate icon, deselect 'Robomotion AI Credits', and under Credentials, select your vault and the Replicate API key name you just entered.

Replicate Credentials

  1. Repeat the previous step for the green 'Connect' node with the Open AI icon, deselecting 'Robomotion AI Credits' and choosing your vault and Open AI API key name.

  2. Finally, save the flow.

Save Flow

Publish the Flow

To use our flow as an Application, we first need to version and publish our flow.

  1. Click on the "master" button.

    master

  2. After clicking the "Create Version" button, create a new version. Fill in the Name and Description fields, then press "Ok".

    Create Version

  3. Finally, publish the created flow version. This step is necessary for the Admin Console.

    Publish Flow

Create Application

Now, let's open the Admin Console to transform our flow into an Application.

  1. Click the hamburger menu at the top left corner and then select the Admin link.

    Menu   Admin Console

  2. In the Admin Console, click the Apps link.

    Admin Apps

  3. Press the "Create App" button and fill in the details as follows:

    Admin Create App Button

    Admin New App

  4. Click the Advanced tab in the "Create App" dialog, select "2 vCPU 4 GB Memory", then click the Create button. This automation requires a minimum of two vCPUs to run, especially if you want to run it in the Cloud.

    Create App Advanced

    You will see a App created successfully message upon completion.

    App Creation Success

Create Application Instance

After creating an application in the Admin Console and connecting it with the Video Dubber UI Application that we provided for you, along with the imported flow, follow these steps to generate an Application Instance in the Robomotion Apps dashboard.

This is for creating an Application Robot for the flow to run. You can then run this app on your Desktop with this Application Robot, or in the Cloud without any installation.

  1. Click the hamburger menu at the top left corner of the Admin Console application and select the Apps item.

    Apps

  2. In Robomotion Apps, you will see your generated app. Click on the "My Video Dubber" icon.

    Apps

  3. Click on the "Create Instance" icon, then click on the created instance item.

    Create Instance

  4. As a side note: If you check the Admin Console - Robots screen now, you'll see a new robot created with the same name as the instance and type Application Robot. You can rename it if you wish. This is how instances are linked to an Application Robot. You can only run the App flow on this robot.

    Admin Console Robots

  5. Return to the instance page you created in Robomotion Apps. In the top-right corner, you'll notice that 1 Application Robot slot has been allocated for this instance. When you click the Play button, two options will be available: Cloud (if you have Cloud Run minutes) and Desktop (if your robot is connected from your Desktop).

    Instance Options

  6. To connect your "My Video Dubber 1" robot from your Desktop , you can follow this guide.

  7. Remember the Vault Secret Key we created earlier? Now, you need to inject it into your newly connected robot from your desktop. This process only needs to be done once for each robot. Navigate to the Admin Console -> Robots screen. Your robot should appear as "Connected." In the Action menu on the right, select Inject Vault Secret. When prompted, enter your workspace password, then choose the Vault and input your Vault Secret Key. The key will be encrypted with your robot's public key and securely transferred to your robot. Whether your robot is running on your machine or a VPS, it can now use your encrypted credentials in your vault. For detailed instructions, refer to this guide.

    Inject Vault Secret

Once you return to the Application Instance and click the Play button, the Desktop option should be highlighted, allowing you to run the application. (If it's not highlighted, try refreshing the page.)

Open App

If you click the enabled Open App button, it will launch the UI application which is now connected to your Application Robot running on your Desktop.

Video Dubber App Opened

info

This application is connected to the v1 version of the flow you have published. To run the flow from Flow Designer, stop the instance in Robomotion Apps, return to the flow project, and run the flow on your newly connected robot.

Run in Flow Designer

info

We went through the previous steps to create an Application Robot for this Application by creating an instance. Now, you can select the Application Robot to run this flow.

Run in Flow Designer 2

This way, you can develop and run the flow on the Application Robot from the Flow Designer without creating and publishing new versions every time you make an update.

When your development is complete, create a new version, publish it, and update your app version from the Admin Console -> Apps screen. We will explore how to do this in the next section when we update the flow to replace OpenAI text-to-speech with ElevenLabs.

ElevenLabs AI

ElevenLabs AI offers a natural text-to-speech and AI voice generator service, enabling users to generate high-quality spoken audio with realistic voices, styles, and languages. The AI model used by ElevenLabs renders human intonation and inflections, adjusting delivery based on context for unparalleled fidelity.

The tool finds applications in various areas, including content creation, storytelling, gaming, audiobooks, AI chatbots, and more. With the capability to generate lifelike speech in 29 languages and 120 voices, it stands out for its versatility and natural voice generation, making it a compelling choice for digital creators, game developers, authors, and those seeking engaging AI-generated interactions.

Now, let's explore a modification to the existing flow by replacing the OpenAI text-to-speech functionality with a more realistic voice AI technology, ElevenLabs AI.

Set Up ElevenLabs Connect Node

  1. Begin by signing up for ElevenLabs and navigating to your profile.

    ElevenLabs Profile

  2. Click the eye icon to reveal the API Key and copy it.

    ElevenLabs API Key

  3. In the Flow Designer, access the Vault by clicking the Vault Icon. Enter your vault and create a new Vault Item for your ElevenLabs API Key, following the instructions from previous sections.

    ElevenLabs Add Vault Key

  4. Install the ElevenLabs package in the Flow Designer. Click the package icon, select the Artificial Intelligence category, and right-click on the ElevenLabs package. Then, click install.

    ElevenLabs Install Package

  5. Locate and click on the ElevenLabs package, drag and drop the Connect node, and connect it with the previous and next nodes as shown below.

    ElevenLabs Add Connect

  6. Click the ElevenLabs Connect node. Navigate to the Variables tab and add a new Global String Variable named el_conn_id. Then, in the Connect node's Output property, select the Global Scope and choose the newly created el_conn_id global variable. Finally, go to the API Key section and select the previously added ElevenLabs API Key item. If the Vault is empty, click the refresh button to fetch the Vault and Items.

    ElevenLabs Add Connect

Replace OpenAI Text-to-Speech

Now, let's replace the OpenAI Text-to-Speech with the ElevenLabs Text-to-Speech node.

  1. Obtain a Voice ID from ElevenLabs by visiting the Voice Library and clicking the Add to VoiceLab button for the chosen voice.

    ElevenLabs Add to VoiceLab

  2. Visit the VoiceLab page and click the ID tag of the desired voice. Copy the Voice ID for use in the next steps.

    ElevenLabs Get Voice ID

  3. Return to the Video Dubber flow, navigate to the Video Dubber App -> Dub -> Text to Speech subflow, and click the Fork Branch node. Decrease the Number of Branches from 10 to 5, considering that the paid account of ElevenLabs allows no more than 5 concurrency. This adjustment prevents errors from the Text to Speech node when exceeding the concurrency limit.

    ElevenLabs Concurrency

  4. Replace the green Open AI Text to Speech node with the ElevenLabs Text to Speech node.

    ElevenLabs Concurrency

  5. Click the ElevenLabs Text to Speech node and set the node properties as shown below. Ensure to select the msg. scope.

    ElevenLabs Concurrency

    • Connection Id: Global.el_conn_id
    • Save Path: msg.segment.path
    • Voice ID: Use the Voice ID copied from ElevenLabs.
    • Text: msg.segment.text
    • Model: Eleven Multilingual v1
  6. Save the flow, create another version named v2, and then publish this version.

    ElevenLabs Version

  7. Go to the Admin Console -> Apps screen, Edit the My Video Dubber App, and select the v2 version of the flow. Save the changes.

    ElevenLabs Version

  8. Now, go to the Robomotion Apps instance, stop and start the flow again. This time, it will initiate the v2 version of the flow, utilizing the ElevenLabs Text to Speech instead of Open AI Text to Speech.

    ElevenLabs Version

Enjoy your enhanced experience with Video Dubber!

General Problems

If you have trouble setting up this flow, please Join our Discord Community. You can ask questions in our #video-dubber channel.

Scale Personalized Outreach Videos with Cloud Run

· 12 min read
Faik Uygur
Co-Founder of Robomotion

Last year, we presented a method of producing customized outreach videos through the utilization of Chrome, OBS, Google Sheets and Loom in our blog post. This was an illustration of the capabilities of an RPA (Robotic Process Automation) product.

But the configuration of this automation was difficult, and some delicate stages in the setup process created confusion and issues for our users. Moreover, we were frequently approached with questions on how to scale this automation.

The below screenshot shows an example of a generated outreach video recorded while visiting a potential customer's website:

Sample Personalzied Video

Finally, to address these issues and fulfill the requests we received, we have developed a new flow from the ground up. It can now run smoothly on Mac, Linux, and Windows operating systems, and the setup process has been simplified significantly. Additionally, we have made it possible to run this automation at scale on our cloud platform.

In this article, we will explore how to convert this automation flow into an App that can be operated from the Robomotion Apps, enabling us to generate multiple instances of this Bot and execute them using our Cloud Run capability.

Setup

Log in to your Robomotion workspace. If you haven't registered yet, you can create your workspace from here.

We will start by importing the second version of our Personalized Video Creation flow from here. Click the Import button shown below.

Import Flow

Config

Double-click the "Config" named node shown below.

Double-click Config

The node's editor will be shown as below:

Node Editor

This flow can run with the default inputs without changing anything, but to customize it, four inputs are required:

  1. A 30 to 60 seconds outreach video must be created and shared with a URL. (msg.video_url)
  2. A CSV file containing a list of your prospects' names, and website addresses must be created and shared with a URL. (msg.csv_url)
  3. An optional paid Loom account cookie value is required if you want to upload your generated videos into your Loom account. (msg.loom_cookie)
  4. An optional empty directory for your generated videos and CSV file. If not given, the default folder will be your Home directory. (msg.home)

In the following sections, we will discuss each of these inputs in detail.

Outreach Video

We aim to generate a customized video for your potential customers. The automation opens up your prospect's website, positions your outreach video in the bottom right corner of the screen, and records the entire session to create a video. To achieve this, you must first create your own outreach message. For instance, here is a fake outreach video as a starting point.

You can use the video URL provided with the flow by not updating the default value of msg.video_url in the opened editor window, or you can create your own video and upload it somewhere, share it publicly and use that video URL.

In this article, we will demonstrate how to accomplish this using Google Drive, but you can utilize any platform to share your video. However, please ensure that you provide a direct download link rather than a website link that opens up when accessed through a browser.

  1. Go to your Google Drive and upload your outreach video.

Google Drive

  1. Right-click the uploaded video file and click the Share link.

Google Drive

  1. Click the Restricted option and then change it to Anyone with the link.

Google Drive

  1. Click the Copy link button.

Google Drive

The link that you copied may look similar to the example below. However, the issue with this link is that it is not a direct download link. Therefore, we must generate a direct download link from this previously copied link.

Google Drive

This copied link contains your Google Drive File ID inside the URL as seen above. Copy the underlined Drive File ID and replace it with the Place Holder in the link below:

https://drive.google.com/uc?export=download&id=PLACEHOLDER_REPLACE_WITH_YOUR_ID

Now, this will be your direct download video URL link:

https://drive.google.com/uc?export=download&id=1Nirl6-EzCcT3PXzGLt25OKZVYDaFz9-r

You can download the sample Video file from here and update it with your prospects.

CSV File

To execute the automation flow, you will need to provide a CSV file containing the names of your potential customers' company names and their associated website URLs in a specific format. The following example illustrates what the CSV file should look like.

CSV File

You can download the sample CSV file from here and update it with your prospects.

Then follow the same upload process described in the previous section for the Outreach Video. Upload this CSV file to Google Drive and create your direct download link.

This section is optional. If you don't have a paid Loom account or don't want to upload your generated videos to Loom, just skip this section and leave the msg.loom_cookie value with an empty string in the opened editor window.

  1. Open Chrome Browser and go to the Loom Login page and log in from your browser.

Loom

  1. Press F12 in the Chrome Browser and the Chrome Dev Tools window will be opened. Click the Application tab first, click the https://www.loom.com domain under the Cookies section left and finally find the cookie named connect.sid in the opened cookies list. Double-click the Value section and copy your Loom Cookie.

Loom Cookie

You can now write your cookie value into the msg.loom_cookie in the opened editor windows as below:

Update Cookie

Home Folder

When the flow runs, all the generated videos and the output.csv files will be written into the given home folder (msg.home) in the Config node editor. The default value for all the operating systems is the actual user's Home Directory.

You don't need to change this default, but if you like to, here are some example folders for each operating system:

For Windows, it is "C:/Users/John/Outreach"
For Linux, it is "/home/john/outreach"
For Mac, it is "/Users/john/outreach"

You can create an empty folder/directory in your file system and replace the msg.home = global.get("$Home$"); line with the full path of your created folder. Make sure your path does NOT contain a trailing "/" as in the examples above.

After replacing the msg.home value in the opened editor, it would look something like below for the Windows operating system:

msg.home = "C:/Users/John/Outreach"
info

Make sure your path is inside double-quotes and does NOT end with a trailing slash (/).

Run in Flow Designer

We have finished the setup and you can run your flow with your Robot connected to your workspace. If you haven't run any flows before, you can learn from our Getting Started guide.

To execute the flow, click on the Run button in the Flow Designer. Once the flow is completed, you can locate the generated files within the specified home folder that you have configured.

Flow Run

info

While the flow is running, you will NOT see a picture-in-picture video like in the previous version of this flow. Chrome will be opened and the recording will be done in the background.

Run in Robomotion Apps

So far, we have completed the setup and run it successfully.

This following section is actually optional and you do NOT need to follow through unless you want to scale this automation.

You also need to have Application Robots and Cloud Run minutes in your workspace to run your Bots on our hosted cloud platform. You can subscribe to a plan from Admin Console -> Subscriptions screen and also can buy Cloud Run minutes from this subscriptions page.

The Problem

The problem with this flow is, it can only be performed on a single computer, as you cannot use the computer while the desktop recording is in progress; any activity performed during the recording will be captured in the video.

Alternative options to perform this automation include setting up virtual machines (VMs) or deploying multiple Virtual Private Servers (VPS) machines. However, we have a much better solution, which is our Robomotion Apps and Cloud Run feature.

By utilizing the Robomotion Apps, you can transform any of your flows into a reusable Bot. Additionally, you can supply different input parameters from the Robomotion Apps for each execution. This enables you to provide different outreach video URLs or CSV files for this specific use case.

Follow the below steps to create your first Bot:

Update the Flow

  1. Cut the Inject (renamed as "Start") node wire to the Config. Put and connect an App In node instead.

App In

  1. Double-click the "Config" node and replace all the hard-coded string values of msg.video_url, msg.csv_url and msg.loom_cookie with msg.in.payload equivalents.

Msg Payload

Do NOT change the msg.home value and leave it as msg.home = global.get("$Home$");

Here are the values for easy copy-paste:

// Pre-recorded outreach video
msg.video_url = msg.in.payload.config.outreachVideoURL;

// Prepared CSV company list
msg.csv_url = msg.in.payload.config.outreachCompaniesCSV;

// Loom Cookie (OPTIONAL)
msg.loom_cookie = msg.in.payload.config.loomCookie;

// Home Folder
msg.home = global.get("$Home$");

Publish the Flow

To create a Bot from our flow, we need first to version and publish our flow.

  1. Click the "master" button.

master

  1. Create a new version after clicking the "Create Version" button. Fill in the Name and the Description fields and press the "Ok" button.

Create Version

  1. Finally, publish the created flow version. This is required by the Admin Console.

Create Version

Create Bot

We will open the Admin Console application to turn our flow into an App.

  1. Click the hamburger menu at the top left corner and then click the Admin Console link.

Menu     Admin Console

  1. Now in the Admin Console, click the Bots link.

Admin Bots

  1. Click the Add Bot button and fill in the details as below.

Create Bot

3.1 Name: Outreach Video Creator

3.2 Description: Personalized video creator

3.3 Published Flow: Outreach Video Creator v2 ( this is the name of the flow you have published previously )

3.4 Flow Version: v1 ( this is the name of the version you have published previously )

3.5 Icon: https://i.imgur.com/D4cvaii.png

  1. Click the Advanced tab in the "Create Bot" dialog and select "2 vCPU 4 GB Memory", then click the Create button. This automation needs a minimum of two vCPUs to run.

Create Bot

You will see Bot created successfully message at the end.

  1. Click the "Setup" item from the action menu of the newly created Bot. We can use the Setup option to create a Setup screen for our Bot with a special JSON object. The format of this JSON object is like the Robomotion Forms.

Bot Setup

Just copy and paste the below JSON object into the Setup popup, save and close the window. To understand this JSON you can watch the Robomotion Forms video.

{
"schema": {
"type": "object",
"required": [
"outreachVideoURL",
"outreachCompaniesCSV"
],
"properties": {
"outreachVideoURL": {
"type": "string"
},
"outreachCompaniesCSV": {
"type": "string"
},
"loomCookie": {
"type": "string"
}
}
},
"ui_schema": {
"type": "VerticalLayout",
"elements": [
{
"type": "HorizontalLayout",
"elements": [
{
"type": "Control",
"scope": "#/properties/outreachVideoURL"
}
]
},
{
"type": "HorizontalLayout",
"elements": [
{
"type": "Control",
"scope": "#/properties/outreachCompaniesCSV"
}
]
},
{
"type": "HorizontalLayout",
"elements": [
{
"type": "Control",
"scope": "#/properties/loomCookie"
}
]
}
]
}
}

Saved Setup

Create & Run Bot Instance

  1. Click the hamburger menu at the top left corner and then click the Robomotion Apps link.

Menu     Robomotion Apps

  1. Make sure you have enough Cloud Run minutes and available Application Robots. You can go to the Admin Console -> Subscriptions page to subscribe to a plan or buy extra Cloud Run minutes.

Robomotion Apps

  1. Click the "Outreach Video Creator" Bot icon.

Robomotion Apps

  1. Click the Create Instance button.

Robomotion Apps

  1. Click the Setup link from the created bot's action menu.

Robomotion Apps

  1. Enter your Outreach Video URL, CSV URL and Loom Cookie (Optional) and click Save

Bot Setup

  1. Click the Bot Instance

Instance Click

  1. Click the Run button and select Cloud

Cloud Run

  1. Wait until the flow has stopped executing and then click the History tab

Instance Run Stopped

  1. Click the last instance run item to expand and then you can click to download the output.csv file

Instance Result

Additionally, you have the option to download the MP4 files individually.

Here is the output CSV file:

Output CSV

Scaling

At this point, you have the option to scale this process. You can create multiple Bot Instances as long as you have the corresponding Application Robot licenses for each Instance. And you can configure each instance separately from its Setup screen. You can provide different CSV file URL to each instance, or even different Outreach Video URL.

Bot Instances

You can also rename each instance if you like from the action menu on the right side of the instance item.

Trouble-shooting

Mac Capture Device Auto-Detect Problem

If you are using a Mac, your flow may fail at the Run node as below. This is because currently the flow can not determine the correct capture device automatically for Mac.

Troubleshot Mac

Follow these steps, to fix this problem.

  1. Find the Device Setup node and double-click to edit it.

Troubleshot Mac

  1. Find the capture device number, you are going to update.

Troubleshot Mac

  1. Open Terminal on Mac, copy-paste and run the below command
$HOME/.config/robomotion/packages/bin/Robomotion/FFmpeg/0.2.3/ffmpeg -f avfoundation -list_devices true -i ""

The output should be something like this. The numbers between brackets are the capture device numbers you can use:

Troubleshot Mac

  1. Replace the "0" in the msg.recording_input = "0"; line with the number you see in the previous output. For this example output, the capture device index number can be something like below:
msg.recording_input = "2";

or it can be

msg.recording_input = "3";
  1. Try running the flow again.

General Problems

If you have trouble setting up this flow, please Join our Discord Community. You can ask questions in our #support-en channel.

Generate Personalized Outreach Videos

· 8 min read
Faik Uygur
Co-Founder of Robomotion

Personalized videos are becoming increasingly popular as a way to stand out in the crowded email inbox. Loom, an online video messaging platform, enables users to create custom videos with a personalized touch. These videos can be included in outbound emails for a more engaging approach to customer outreach.

The below screenshot shows an example outreach video recorded while visiting a customer website:

Sample Personalzied Video

But creating a personalized video for each outreach is a difficult and time-consuming process. Robomotion can be used to auto-generate this content for you by utilizing different tools such as a video recorder, Chrome browser and Loom for uploading and sharing the content.

Setup

We will start by creating our flow in Robomotion. We will then set up a Chrome profile that keeps our session so that we won't need to automate a login page and directly use Loom. We will use OBS Studio, an open-source video recorder, and streamer. We will set up the default settings for our automation in OBS Studio. And lastly, we will set up Google Sheets for our robot to use in the automation process.

Flow setup

Log in to your workspace, and open the projects dialog by clicking the button right next to the Flow Designer logo.

Open Projects Dialog

Click the New Project button, set your project name as Chrome Setup and press Ok.

New Project

Once the project is created, press the save button.e

Save Button

Chrome User Data Directory setup

The Chrome user data directory contains profile data such as history, bookmarks, and cookies, as well as other per-installation local state. We will use the User Data Directory to save the login state to Loom so that we will not have to develop login automation for every flow run to execute.

Create the following flow by drag-and-dropping the nodes from the node palette, or by right-clicking on the empty board. You can also search the nodes by name:

Initial Flow

Below is the list of nodes used in this flow:

  • Trigger -> Inject
  • Browser -> Open Browser
  • Browser -> Open Link

Now create a folder somewhere on your file system, something like the below:

C:\Users\Jane\ChromePersonalized

After creating this folder on your system, click the Open Browser node and fill the User Data Dir property with the full path of your folder.

User Data Dir

Click the Open Link node and fill the URL property with https://www.loom.com/login.

Open Link

Run the flow and when the automated browser is opened, manually log in to loom. Because we are using User Data Dir, the next run of this flow will keep this login state in the given User Data Dir.

Loom Login

Go to Shiny Picture in picture Chrome Extension web page and click the Add to Chrome button.

Shiny Picture in picture

Go to I don't care about cookies Chrome Extension web page and click the Add to Chrome button.

I don't care about cookies

You can now stop the flow. This flow was only used for preparing the Chrome profile that we are going to use. The profile now can auto-login to loom. when we open the page and also have the Chrome extensions installed that we need.

Stop Flow

Outreach videos folder setup

Create a folder named Outreach on your system, and two more folders named Videos and Uploads under the Outreach folder.

Folders

note

Folder names are case-sensitive, so Outreach, Videos and Uploads all have capital first letter.

C:\Users\Jane\Outreach
C:\Users\Jane\Outreach\Videos
C:\Users\Jane\Outreach\Uploads

OBS Studio setup

We are going to be using an open-source video recorder, OBS Studio to record the video we are going to be uploading to the Loom website.

OBS Studio

Go to the OBS Studio website. Download and install OBS Studio. Start the OBS Studio application.

On start, if you see an optimization popup, select Optimize just for recording and press Next for the initial setup to finish and click Apply Settings at the end.

info

Some systems may not bring this popup.

OBS setup

Open File -> Settings dialog. From the General tab, check the Minimize to system tray when started.

Minimize

From the Output tab,

Output Format

  • Change the Recording Format to mp4
  • Change the Recording Path to your full Outreach/Videos folder path
  • Change the Recording Quality to "Same as stream"
  • Change the Streaming Encoder Preset to ultrafast (low CPU usage, lowest quality)
note

You have to set the Recording Path to what you have created on your system and not what is shown in the screenshot.

note

Encoder affects the machine performance, so we are selecting the lowest possible. You can later experiment with the quality.

From the Advanced tab, uncheck the Show active outputs warning on exit.

Output Format

Click Apply and Ok to close the Settings dialog.

We will only need the recorder to record Desktop Audio, so we will disable the Mic/Aux. Click the speaker button right next to the Mic source.

Mute Mic

Now we are going to add a video source for the OBS recorder. Click the plus button in the Sources panel below.

Add Video Source

Select Screen Capture or Display Capture, give any name to your capture source and press Ok. You should see something similar that looks like the below screenshot. Yours may differ but you should start seeing a mirror of your Desktop in the OBS Studio.

Screen Capture Source

Close the OBS Studio application with Alt + F4 or from the File menu by selecting Exit.

Google Sheets setup

Open this template Google Sheets document and create a copy for your self and update what is inside this list with your outbound reach list.

Template Document

For the robot to read and update this new document you have created, the robot has to be authorized and have a Google Sheets authorization token.

You have to follow two documents for this:

For the second document, you only need to create a Vault and add your OAuth2 credential from the first step.

Outreach video setup

You have to have an Outreach video for your customers. You can use Loom or even OBS Studio to create one for yourself. 30 seconds would be ideal. Here is a fake outreach video that you can use for your experiments.

Record a 30 seconds video and upload it to Youtube as an Unlisted video.

In your video try to have 5-6 seconds that you do nothing and then your message should start.

Recording

Here is the flow that we are going to run after all this setup.

Click the Import icon at the top-right to be able to edit and save this flow in your workspace.

Import Template

After importing the flow, click the Config node's Edit menu item.

Config Edit

Update the links and paths in this editor with your own links.

note

Only change what is between the double quotes and nothing else.

Update Config

  • Change outreach_doc line with your own Outreach Google Sheets link
  • Change outreach_video line with your own Outreach video you have uploaded to Youtube
  • Change videos_path line with your full path of the Outreach/Videos folder on your system
  • Change uploads_path line with your full path of the Outreach/Uploads folder on your system
  • Change chrome_path line with your full path of the created Chrome Profile folder on your system
  • Change start_delay and stop_delay with experimentation.
note

Start Delay is a delay before recording starts, stop_delay is how many seconds after recording started should the flow stop recording. Every system will perform differently so with delays you can finetune the recorded video.

Click the Open Spreadsheet node and select the Vault and Vault Item property of the OAuth token you have added to the Vault.

Open Spreadsheet Credentials

Trouble-shooting

We have created a Youtube video that follows this blog post.

If you have trouble setting up this flow, please Join our Discord Community. You can ask questions in our #support-en channel.