- Home
- Resources
- Integrations
- bookoly
bookoly n8n integrationAutomate bookoly with n8n.
Need voice-overs, subtitles and transcripts without opening a video editor? The bookoly n8n integration covers 29 operations across 6 resources, from speech synthesis to subtitle files. No trigger node ships with it, so a schedule or another app starts the run.
Community node This node is not shipped with n8n: it is a community package (n8n-nodes-bookoly) you install from Settings › Community nodes on a self-hosted instance. npm
Verified Trustpilot reviews · AI, automation & growth agency
What does the bookoly n8n integration actually do?
It puts bookoly's media API inside a workflow. The node carries 29 operations across 6 resources: sounds, speeches, speech dialogues, files, transcripts and videos. You pick a resource, pick an operation, fill the fields, and the run comes back with an object you can pass to the next node, whether that is a combined sound, a speech synthesis or a subtitle file.
Start with what a media job looks like here. Almost every creation operation follows the same shape: you name the job, you hand over a public and downloadable URL or some text, and you decide whether the node waits. Wait for Completion is the switch that changes everything downstream. Left on, the node pauses the workflow, checks the server until generation is finished and hands back the full object. Left off, you get the ID and the creation timestamp, nothing else, and a later Get operation fetches the result.
First scenario, a narrated clip from a text row. A Schedule Trigger reads a batch of scripts from Airtable, Create a Speech Synthesis turns each script into audio with a named voice, and the returned URL goes back into the same record. Second scenario, subtitles for a library of clips: Generate a Subtitle File takes the video URL, the style, the language and the typography, and the finished file lands in Google Drive. Third scenario, searchable text from recordings: Transcribe Audio or Video returns clear text with timestamps, optionally translated, and the result is written to a row in Google Sheets for the team to search.
Two things are worth knowing before you build. There is no bookoly trigger node in n8n, so a workflow always starts somewhere else: a Schedule Trigger on a fixed interval, an n8n Webhook (a URL another service calls) or the trigger of another tool. And when an endpoint of the bookoly API has no matching operation in the node, the HTTP Request node calls it directly and reuses the same credential through predefined authentication, so you do not build a second connection.
Generation is asynchronous by nature, which is why each creation operation also offers a Webhook URL: bookoly posts the ID and the URL there when the job is done. That pattern pairs well with an n8n Webhook node in a second workflow, and it keeps long jobs from holding an execution open. If your team is still deciding how to run these jobs, the n8n training walks through the same building blocks on real workflows.
How do you connect bookoly to n8n?
- 01
Install the community package
The node is not shipped with n8n. On a self-hosted instance, open Settings, then Community nodes, and install the npm package
n8n-nodes-bookoly(version1.0.19). n8n runs from Docker or npm on your own server, and the workflow you build is the same one you would run on n8n Cloud. On Cloud, only verified community nodes are accepted, so check that first. - 02
Create the credential once
A credential is the stored connection n8n uses to authenticate calls. You create it once from the Credentials menu, give it a name you will recognize, and every workflow reuses it. The bookoly node then offers it in its own dropdown, so there is nothing to paste again node after node. One credential per bookoly account keeps the executions readable when something fails.
- 03
Add the node and map the fields
Drop the bookoly node into a workflow, select the resource, then the operation. Required fields block the execution while they are empty, which is the fastest way to spot a missing value. To feed a field from the previous node, use an expression in the form
{{ $json.field }}, for example the text of a row or the URL of a file. Run the node once and read the returned object before you wire the rest.
What can the bookoly node do?
The bookoly node exposes 29 operations across 6 resources. For each one: the node as you configure it in n8n, the required fields, and our field notes.
| Resource | Add Audio to a Video | Add Audio with Subtitles to a Video | Add Subtitles to a Video | Add Subtitles to a Video From a File | Add Watermark to a Video | Blur a Video | Clip a Video | Combine Sounds | Create a Slideshow | Create a Speech Synthesis | Create a Speech Dialogue | Transcribe Audio or Video | Crop a Video | Extract Audio From a Video | Frame a Video | Generate a Subtitle File | Generate a Video | Get a Specific Sound | Get a Specific Speech | Get a Specific Speech Dialogue | Get a Specific Subtitle File | Get a Specific Transcription | Get a Specific Video | Mute a Video | Overlay Videos | Rotate a Video | Scale a Video | Split a Video Into Scenes | Stack Videos |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Sound | ✓ | ✓ | |||||||||||||||||||||||||||
| Speech | ✓ | ✓ | |||||||||||||||||||||||||||
| Speech Dialogue | ✓ | ✓ | |||||||||||||||||||||||||||
| File | ✓ | ✓ | |||||||||||||||||||||||||||
| Transcription | ✓ | ✓ | |||||||||||||||||||||||||||
| Video | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
Operations index
- Add audio to a video
- Add audio with subtitles to a video
- Add subtitles to a video
- Add subtitles to a video from a file
- Add a watermark to a video
- Blur a video
- Clip a video
- Create a slideshow
- Crop a video
- Extract audio from a video
- Frame a video
- Generate a video
- Get a video
- Mute a video
- Overlay videos
- Rotate a video
- Scale a video
- Split a video into scenes
- Stack videos
Sound
2 operationsCombine sounds
sound.combineSoundsWhat you see in n8n
Notes & use cases
Several audio files go in, one continuous track comes out, ready to sit under a video.
Key parameters
- Sound - Name: the name of the sound, required, and the label you will look for later, often
{{ $json.name }}from the node before. - Sound - Sounds (JSON): the public and downloadable URLs of the audio files to merge.
- Wait for Completion: on, the node pauses the workflow until the sound is finished and returns the full object; off, only the ID and the creation timestamp come back.
Get a sound
sound.getSoundWhat you see in n8n
Notes & use cases
Reads back a sound that already exists in bookoly and returns its data, which is how a workflow picks up a file it created earlier.
Key parameters
- Sound ID: the ID of the sound, required; it comes from the combine step as
{{ $json.id }}.
Speech
2 operationsCreate a speech synthesis
speech.createSpeechWhat you see in n8n
Notes & use cases
Text in, a synthesized voice out. The operation reads a script aloud and returns the audio.
Key parameters
- Speech Synthesis - Name: the name of the speech synthesis, required.
- Speech Synthesis - Text: the text to create the speech synthesis from, required, usually
{{ $json.text }}from the row you just read. - Speech Synthesis - Voice: the name of the voice, required, picked from the list in the node (
Kore,Novaand the rest of thevendor_idvalues).
Get a speech
speech.getSpeechWhat you see in n8n
Notes & use cases
Fetches the data of one speech synthesis from the API, which is the step you add when the creation ran without waiting.
Key parameters
- Speech ID: the ID of the Speech, required, kept from the creation response as
{{ $json.id }}.
Speech Dialogue
2 operationsCreate a speech dialogue
speech_dialogue.createSpeechDialogueWhat you see in n8n
Notes & use cases
Where the speech operation reads one script, this one stages a conversation between several AI voices from text.
Key parameters
- Speech Dialogue - Name: the name of the speech dialogue, required.
- Speech Dialogue - Segments (JSON): the dialogue segments in JSON, each one with its text and a voice carrying a
vendor_id; the available values are listed under Voices at bookoly.com. - Webhook URL: a valid URL that receives the Speech Dialogue ID and URL once generation ends.
Get a speech dialogue
speech_dialogue.getSpeechDialogueWhat you see in n8n
Notes & use cases
Returns the data of a dialogue already generated, so the audio can be picked up long after the workflow that ordered it.
Key parameters
- Speech Dialogue ID: the ID of the Speech Dialogue, required.
File
2 operationsGenerate a subtitle file
file.generateSubtitleFileWhat you see in n8n
Notes & use cases
Turns a video or audio URL into a subtitle file, with the typography and the placement decided in the node.
Key parameters
- Subtitle File - URL: the public and downloadable URL of the video file, required.
- Subtitle - Style and Subtitle - Language: both required, and both change how the captions read; the default style is Highlight Current Word, which follows the speaker word by word.
- Subtitle - Font Size and Subtitle - Outline Width: required numbers, 20 and 5 by default.
- Subtitle - Line Words: how many words show at a time, from 1 to 10.
Get a subtitle file
file.getSubtitleFileWhat you see in n8n
Notes & use cases
Pulls one subtitle file back from the API using its identifier, and returns its data to the workflow.
Key parameters
- Subtitle File ID: the ID of the Subtitle File, required.
Transcription
2 operationsTranscribe audio or video
transcript.createTranscriptWhat you see in n8n
Notes & use cases
Written text with timestamps, out of a recording. This is the operation that makes a call or a webinar searchable.
Key parameters
- Transcript - Name: the name of the transcript, required.
- Transcript - URL: the public and downloadable URL of the audio or video file, required, mapped as
{{ $json.src }}when it comes from a storage node. - Transcript - Language: the primary language spoken in the file, required.
- Transcript - Translation Language: optional, translates the transcript into another language.
Get a transcription
transcript.getTranscriptWhat you see in n8n
Notes & use cases
Asks the API for one transcript by its identifier and returns the transcript data as it stands.
Key parameters
- Transcript ID: the ID of the Transcript, required.
Video
19 operationsAdd audio to a video
video.addAudioToVideoWhat you see in n8n
Notes & use cases
A soundtrack gets laid over an existing video file, and the operation returns a new video with that track in place.
Key parameters
- Video - URL: the public and downloadable URL of the video file, required.
- Audio - URL: the public and downloadable URL of the audio file that is added.
- Audio - Volume: audio volume from 0 to 100, where 100 keeps the original level and 0 is silent.
- Audio - Trim: trims the audio when the track runs longer than the picture.
- Video - Mute: mutes the original video audio.
Add audio with subtitles to a video
video.addAudioWithSubtitlesToVideoWhat you see in n8n
Notes & use cases
Two jobs travel in one call: the audio track is added, then subtitles are generated from that audio and written onto the video.
Key parameters
- Audio - URL: the public and downloadable URL of the audio file that carries the voice.
- Subtitle - Source: the input source for subtitle generation, from speech synthesis or from audio.
- Subtitle - Style: required, from Simple to Highlight Current Word.
- Subtitle - Language: required, the language the subtitles are written in.
- Audio - Trim: trims the audio to match the video length when it is longer.
Add subtitles to a video
video.addSubtitlesToVideoWhat you see in n8n
Notes & use cases
The sound already inside the video is read, and captions are generated and written onto the picture without any separate track.
Key parameters
- Subtitle - Font Family: required, Arial by default, with Roboto, Nunito, Lobster and the rest of the list waiting behind it.
- Subtitle - Font Size: required, 20 by default.
- Subtitle - Line Words: required, how many words show at a time, 1 minimum and 10 maximum.
- Subtitle - Position: required, from Top Left to Mid Bottom Center.
- Subtitle - Text Case: keeps the original casing, or forces lower case or upper case on every line.
Add subtitles to a video from a file
video.addSubtitlesToVideoFromFileWhat you see in n8n
Notes & use cases
Captions that already exist as a file are attached to the video, so nothing is generated and nothing is re-transcribed.
Key parameters
- Subtitle File - URL: required, the public and downloadable URL of the subtitle file.
- Subtitle File - Type: the format of the subtitle, Advanced SubStation Alpha (ASS) being selected by default.
- Wait for Completion: left off, only the ID and the creation timestamp come back.
Add a watermark to a video
video.addWatermarkToVideoWhat you see in n8n
Notes & use cases
An image is stamped onto the frame at coordinates you choose and stays there for the whole clip.
Key parameters
- Watermark - URL: required, the public and downloadable URL of the image file, PNG or JPG.
- Watermark - X Coordinate: required, distance in pixels from the left edge of the video.
- Watermark - Y Coordinate: required, distance in pixels from the top edge of the video.
- Video - Mute: drops the original video audio at the same time.
Blur a video
video.blurVideoWhat you see in n8n
Notes & use cases
A rectangle of the frame is blurred, which is the usual way to hide a face, a plate or a screen.
Key parameters
- X Coordinate and Y Coordinate: required, horizontal and vertical position of the top-left corner of the blur area.
- Box Width and Box Height: required, in pixels, and neither may exceed the video width or height.
- Power: required, intensity of the blur, with a recommended range of 10 to 25.
Clip a video
video.clipVideoWhat you see in n8n
Notes & use cases
A shorter extract is cut out of a longer file, defined by the second where it begins.
Key parameters
- Clip - Start Time: required, the clip start time in seconds from the start of the video.
- Clip - End Time: the clip end time in seconds from the start of the video, left empty to run to the end.
- Video - Mute: removes the original audio from the extract.
Create a slideshow
video.createSlideshowWhat you see in n8n
Notes & use cases
Images, videos or a mix of both are assembled into a single file, scene after scene, in the order you hand them over to the node.
Key parameters
- Video - Resolution: required, horizontal, vertical or square, from Full HD (1920x1080) up to 4K.
- Video - Scenes (JSON): the scenes, as JSON.
- Webhook URL: a valid URL that receives the notification once the render is finished, with the video ID and the video URL included in the payload.
Crop a video
video.cropVideoWhat you see in n8n
Notes & use cases
The frame shrinks to a rectangle. Everything outside that box disappears from the output file.
Key parameters
- Crop - X Coordinate and Crop - Y Coordinate: required, position of the top-left corner of the crop.
- Crop - Width and Crop - Height: required, in pixels, capped by the width and the height of the video.
- Video - Mute: mutes the original video audio.
Extract audio from a video
video.extractAudioFromVideoWhat you see in n8n
Notes & use cases
The audio track is separated from the video file and saved on its own, ready for a step that only cares about sound.
Key parameters
- Video - URL: required, the public and downloadable URL of the video file.
- Webhook URL: a valid URL that receives the notification, with the video ID and URL included.
Frame a video
video.frameVideoWhat you see in n8n
Notes & use cases
One frame is captured at a chosen moment and saved as an image, which gives a thumbnail without opening an editor.
Key parameters
- Video - Timestamp (Seconds): the point in time the frame is captured from, 5.2 meaning 5.2 seconds into the video.
- Video - Name: required, the name of the video, the label the image is filed under.
Generate a video
video.generateVideoWhat you see in n8n
Notes & use cases
The widest operation of the node builds a video from images and clips, adds a generated voice-over with automated subtitles, and mixes in background music.
Key parameters
- Video - Duration: required, whether the final length follows the audio, the speech synthesis or all scenes.
- Video - Scenes (JSON): the scenes that make up the picture, given as JSON.
- Speech Synthesis - Text and Speech Synthesis - Voice: the script read aloud and the voice reading it.
- Video - Resolution: required, up to 4K (3840x2160).
Get a video
video.getVideoWhat you see in n8n
Notes & use cases
Fetches video data from the API using the video ID, which is how a later branch learns where the finished file sits and under which name it was stored.
Key parameters
- Video ID: required, the ID of the video, usually
{{ $json.id }}kept from the step that created it.
Mute a video
video.muteVideoWhat you see in n8n
Notes & use cases
Volume is reduced to zero and the same video comes back, picture untouched, sound gone.
Key parameters
- Video - Name: required, the name of the video.
- Video - URL: required, the public and downloadable URL of the video file.
- Wait for Completion: on, the node pauses the workflow until the server is done and returns the full video object.
Overlay videos
video.overlayVideosWhat you see in n8n
Notes & use cases
A second video sits on top of the first at a chosen anchor, the picture in picture arrangement people expect from a tutorial.
Key parameters
- Overlay Video - URL: required, the public and downloadable URL of the overlay video file.
- Overlay Video - Mute: required, whether the overlay keeps its own audio.
- Position: required, from Top Left to Center Bottom.
- Scale: scale percentage of the overlay video, 1 to 100.
- X Offset and Y Offset: pixels away from the position anchor.
Rotate a video
video.rotateVideoWhat you see in n8n
Notes & use cases
The picture turns a quarter, a half or three quarters of a turn, and the file comes back in its new orientation.
Key parameters
- Video - Rotation (Degrees): 90, 180 or 270, positive values rotating clockwise and negative ones counter-clockwise.
- Video - Mute: whether the original video audio is dropped along the way.
Scale a video
video.scaleVideoWhat you see in n8n
Notes & use cases
Dimensions change according to the mode you pick, from a simple width target to an exact size that may distort the picture.
Key parameters
- Scale Mode: required, Scale to Width, Scale to Height, Scale to Fit, Scale to Fill, Scale Exact or Scale Keep Aspect Ratio.
- Width and Height: in pixels, even numbers, 2 at minimum.
- Video - Mute: mutes the original video audio.
Split a video into scenes
video.splitVideoIntoScenesWhat you see in n8n
Notes & use cases
One file goes in and several segments come out, cut where the picture changes or on a fixed rhythm.
Key parameters
- Split - Mode: required, automatic scene detection, a fixed interval or a number of segments.
- Split - Segment Length: required, the duration in seconds of each equal segment.
- Split - Min Scene Duration (Sec) and Split - Max Scene Duration (Sec): required, the bounds of a scene found automatically.
- Split - Scene Change Threshold: required, in a range of 0.1 to 1, lower values detecting more changes.
Stack videos
video.stackVideosWhat you see in n8n
Notes & use cases
Two files are placed next to each other or one above the other inside a single frame.
Key parameters
- Secondary Video - URL: required, the public and downloadable URL of the secondary video file to stack.
- Secondary Video - Mute: required, whether the audio of the secondary video is kept.
- Layout: required, Horizontal side by side, Vertical one above the other.
- Video - Mute: drops the audio of the first video.
Need help automating bookoly with n8n?
A person reads every message.


