You need to enable JavaScript to run this app.
Lake AI Service

Lake AI Service

Copy page
Download PDF
Video Generation
Intelligent Short Drama & Film Narration
Copy page
Download PDF
Intelligent Short Drama & Film Narration

The "Short Drama · Film Narration Intelligence" operator can automatically build a plot event index based on multiple episodes of short dramas or a single movie, and plan jump-cut narration videos according to story clues within three approximate duration ranges: short, mid, and long. The operator automatically completes video editing, narration script generation, TTS voiceover, subtitle generation, audio mixing and rendering, and result uploading. It supports narration in both Chinese and English, optional reference audio voice cloning, as well as subtitle background and position control. Each task produces highlight narration material suitable for distribution on video platforms.

Operator introduction

Operator ID: las_short_drama_highlight_narration

Applicable scenarios

  • Short drama distribution material production: Generates highlight narration videos based on short drama materials, which can be used for promotion on video platforms.
  • Film secondary creation: Identifies narratable plot clues from movies or long videos and generates narration shorts suitable for short video dissemination.

Core capabilities

  • Cross-episode plot understanding: Automatically analyzes multiple episodes of short dramas or movie materials to extract key events, character relationships, conflict progression, and visual highlights.
  • Clue discovery and selection: Discovers and selects candidate clues suitable for generating highlight narration, including the main storyline, character lines, conflict lines, and relationship lines.
  • Multilingual narration: Supports generating Chinese or English narration via narration_language.
  • TTS voice control: Supports providing reference audio via tts_clone_prompt_audio_url; if not provided, the default voice of the execution service is used.
  • Subtitle style and position control: Supports selecting semi-transparent blur, white rounded, or black rounded subtitle backgrounds, and controlling subtitle position via subtitle_position.
  • Distribution-oriented dense narration: By default, generates narration scripts with a tight rhythm, hooks at the beginning, and suspense at the end, and automatically completes TTS voiceover and subtitle rendering.

Effect demonstration


[Example of producing traffic material for short dramas]
  • Input video
    • ep01
    • ep02
  • Output video
    • Example 1
— Using the system's preset narration voice as an example, you may provide a reference voice as needed

[Film secondary creation]
  • Input video
  • Output video
— Extract plot clues from the input long video to generate a narrated short clip

Supported regions

  • Beijing: cn-beijing

Operator performance

Sub-item
Performance impact description

Maximum Submit RPM

5

Maximum Poll RPM

300

Input and output requirements

Input requirements

Sub-item

Detailed requirements

Supported input data modalities

  • Video
  • Audio (optional, reference audio for timbre)
  • Text

Input format: video

  • Format: mp4, mov, and mkv are supported.
  • Quantity and size:
    • Input material type (source_content_type) is movie (movie): Only one video can be input, with a duration between 1 and 300 minutes, and a size not exceeding 10GB.
    • Input material type (source_content_type) is not movie (movie): Multiple videos can be input.
      • A maximum of 100 videos can be input per task.
      • Each video must be between 30 seconds and 30 minutes in duration, and the size of a single video must not exceed 2GB.
      • The total duration of all input videos must not exceed 600 minutes, and the total size must not exceed 20GB.

Input format: audio

  • Format: Supported wav, mp3 formats

Input path requirements

Provide input data to the operator via request parameters input_videos and tts_clone_prompt_audio_url. Currently, two methods are supported: public URL and TOS path.

  • Public URL: A video URL accessible via the public internet, in the format http/https.
    • Public URLs that require login status or additional header authentication are not supported; temporary URLs must be valid during task execution.
  • TOS path: After uploading the data to be processed to a TOS Bucket under the same primary account and region as the current LAS service, you can provide a TOS path in the format tos://bucket_name/demo.
    • The TOS object must exist and have read permissions.

Output requirements

Sub-item

Detailed requirements

Output data modality

  • Video

Output format: video

  • Format: Unified output in mp4 format.
  • Duration: You can use the request parameter target_narration_duration to control the approximate time range of the output narration video. It supports short (about 1 minute), mid (1 to 3 minutes), and long (3 minutes or longer).
  • Language: You can set the output narration video's language via the request parameter narration_language, with support for Chinese (default) and English.

Output path: TOS

Specify the storage path for the operator's output results via the request parameter output_tos_path. Currently, setting to a TOS path is supported.

  • TOS path: In the same primary account and region as the LAS service, a TOS Bucket directory with write permissions, format: tos://bucket/output/. If output_tos_path is not provided, the result is written to an internal LAS bucket and a pre-signed link valid for 7 days is returned.

Billing description
  • Billing standards

    Sub-items
    Billing standards description

    Billing items

    There are two billing items: Input original video understanding fee and Output narration video fee. The actual task cost generated by the operator is the sum of the two billing items.

    • Input original video understanding fee: Billed based on the total duration of all input original videos.
    • Output narration video fee: Billed based on the total duration of all output narration videos. You can quickly view the duration (in seconds) of each output video using the duration_s parameter returned by the poll interface.

    Billing type

    Usage-based billing, unit: CNY/minute, billed hourly based on actual usage. Billing precision: millisecond-level precision, rounded down

    Unit price

    The unit price varies for different sub-billing items. Details are as follows.

  • Billing details
    Billing formula: Total cost = Input original video understanding fee + Output narration video fee

    Sub-billing items

    Subdivision

    Unit price

    Input original video understanding fee

    Input original video [0min, 60min] segment

    0.2 CNY/minute

    Input original video segment exceeding 60min

    0.3 CNY/minute

    Output narration video fee

    Not applicable

    1.2 CNY/minute

  • Billing example

    • Example scenario: 30 short drama videos of 3 minutes each are input, and after operator processing, 20 narration videos of 1 minute each are output.
    • Cost details:
      • Total duration of all input original videos = 30 * 3 minutes = 90 minutes;
      • Total duration of all output narration videos = 20 * 1 minute = 20 minutes;
      • Total cost = Input original video understanding fee + Output narration video fee
        = (60 minutes * 0.2 CNY/minute + 30 minutes * 0.3 CNY/minute) + 20 minutes * 1.2 CNY/minute
        = 45 CNY
  • Billing unit
    The billing unit displayed in the billing details for charges incurred by invoking this operator is "Script Generation". Please pay attention to this difference when reviewing your bill.

Caution and prerequisites

Details

Caution and prerequisites

Costs

Before calling an operator, you need to understand the model invocation costs associated with using the operator. For details, see Large model invocation billing.

Authentication (API Key)

Before calling an operator, you need to generate an API Key for operator invocation. It is recommended to configure the API Key as an environment variable to ensure safer operator calls. For details, see Obtain and configure API Key.

BaseURL

Before calling an operator, you need to determine the BaseURL for operator invocation based on the region where your current LAS service is deployed. This is used to configure the path parameter values for operator calls.
For details, see Obtain the Base URL. The Examples below are for reference only; when making actual calls, replace the path values with those corresponding to your region.

Rest API invocation

API invocation instructions

  • The API for this operator is an asynchronous task interface. You need to submit a task via the Submit interface to obtain the task's task_id, then use the Poll interface to check the status of the corresponding task (task_id) and retrieve the operator's processing result.
  • Caution: After submitting a task, the task_id is valid for 3 days. After 3 days, you will not be able to use this task_id to obtain the operator's processing result.

Submit

Interface instructions

Submit a "Short Drama · Film Commentary Intelligent Creation" task. After a successful submission, a task ID is returned. You can query the task status and retrieve the generated video via the Poll interface.

Request parameters

Parameter
Type
Required
Example value
Description
operator_id
string
Yes
las_short_drama_highlight_narration
Operator ID
operator_version
string
Yes
v1
Operator version
data
ShortDramaHighlightNarrationReq
Yes
'Short Drama · Intelligent Video Narration' request parameters
pending_timeout_minutes
integer
No
120
Maximum waiting time for the task in PENDING status, in minutes; range: 30 to 4320. If not specified, PENDING timeout is not enabled. After timeout, the task status will be EXPIRED.

Response parameters

Name
Type
Example value
Description
metadata
metadata
Request metadata.

Example

Request example

# Optional: Set OUTPUT_TOS_PATH to a TOS directory writable by this account
export OUTPUT_TOS_PATH="tos://bucket/output/highlight_narration/"
# Optional: Set TTS voice cloning reference audio; if not set, please remove the corresponding field from the request
export TTS_CLONE_PROMPT_AUDIO_URL="tos://bucket/audio/voice.wav"

curl --location "https://operator.las.cn-beijing.volces.com/api/v1/submit" \
--header "Content-Type: application/json" \
--header "Authorization: Bearer $LAS_API_KEY" \
--data '{
    "operator_id": "las_short_drama_highlight_narration",
    "operator_version": "v1",
    "pending_timeout_minutes": 120,
    "data": {
        "input_videos": [
            "https://${LAS_TOS_BUCKET}.${TOS_ENDPOINT}/operator_cards_serving/public/${LAS_ENVIRONMENT}/las_short_drama_highlight_narration/v1/episode_01.mp4",
            "https://${LAS_TOS_BUCKET}.${TOS_ENDPOINT}/operator_cards_serving/public/${LAS_ENVIRONMENT}/las_short_drama_highlight_narration/v1/episode_02.mp4"
        ],
        "target_narration_duration": "short",
        "narration_language": "zh",
        "subtitle_blur_mode": "gaussian",
        "subtitle_position": "bottom",
        "tts_clone_prompt_audio_url": "$TTS_CLONE_PROMPT_AUDIO_URL",
        "output_tos_path": "$OUTPUT_TOS_PATH"
    }
}'

Response example

{
  "metadata": {
    "task_id": "task-20260715120000-abc123",
    "task_status": "PENDING",
    "business_code": "0",
    "error_msg": "",
    "request_id": "20260819120000ABCDEF"
  }
}

Error code

HttpStatusCode

Error code

Error message

Description

400

Parameter.Invalid

The parameter is invalid.

The parameter is invalid. For example, missing data/input_videos, exceeding the maximum number of videos, unsupported address protocol prefix, unsupported video format, out-of-range numeric or enumerated values, unknown or removed fields provided, source_content_type=movie but the number of input videos is not 1, pending_timeout_minutes is outside the range of 30 to 4320, or passing a callback not supported by this operator.

400

Body.Invalid

The body is invalid.

The request body format is invalid or cannot be deserialized.

400

Operator.InvalidId

The operator is invalid.

The operator ID does not exist or is unavailable.

400

Operator.InvalidVersion

The operator version is invalid.

The operator version does not exist or is unavailable.

401

Authorization.Missing

The authorization header is missing.

Authorization information is missing.

401

ApiKey.Invalid

The api key is invalid.

The API key is not valid.

429

OperatorConcurrencyExceeded

Concurrency limit of the operator is exceeded.

The operator concurrency limit for the current account has been reached.

429

OperatorPendingQueueLimitExceeded

Pending queue limit of the operator is exceeded.

The number of pending tasks for the current account has reached the limit.

429

APIAccountRpmRateLimitExceeded

The RPM limit for the API on your account has been exceeded.

The API request rate for the current account has exceeded the limit.

500

Server.InternalError

General Internal Error

Internal server error.

Failures in media download, format/duration/size validation, model processing, voice reference audio, and TOS read/write are considered asynchronous task failures and will not be returned as synchronous HTTP 400 responses in the Submit response after successful acceptance. Please use Poll to obtain the business code and error information returned by the execution side.

Poll

Interface instructions

Query the execution status and result of the "Short Drama · Film Commentary Intelligent Creation" task. Once the task is completed, you can obtain the generated video.

Request parameters

Name

Type

Required

Example value

Description

operator_id

string

Yes

las_short_drama_highlight_narration

Operator ID

operator_version

string

Yes

v1

Operator version

task_id

string

Yes

task-20260715120000-abc123

The asynchronous task ID returned by the Submit API

Response parameters

Name
Type
Example value
Description
metadata
metadata
Request metadata.
data
ShortDramaHighlightNarrationResp
Task result data. For non-completed or failed states, it usually returns an empty object {}. Only when task_status=COMPLETED is true is videos considered a complete successful result.

Example

Request example

curl --location "https://operator.las.cn-beijing.volces.com/api/v1/poll" \
--header "Content-Type: application/json" \
--header "Authorization: Bearer $LAS_API_KEY" \
--data '{
    "operator_id": "las_short_drama_highlight_narration",
    "operator_version": "v1",
    "task_id": "task-20260715120000-abc123"
}'

Response example

{
  "metadata": {
    "task_id": "task-20260715120000-abc123",
    "task_status": "COMPLETED",
    "business_code": "0",
    "error_msg": "",
    "request_id": "20260819120500ABCDEF",
    "submit_time": "2026-08-19T12:00:00+08:00",
    "end_time": "2026-08-19T12:05:00+08:00"
  },
  "data": {
    "videos": [
      {
        "video_id": "v_main_storyline_01",
        "duration_s": 95.1,
        "final_video_path": "tos://bucket/output/highlight_narration/main_storyline/v_main_storyline_01/final.mp4",
        "final_video_url": "https://example.com/final_01.mp4"
      }
    ]
  }
}

Error code

HttpStatusCode

Error code

Error message

Description

400

Body.Invalid

The body is invalid.

The format of the Poll request body is invalid or cannot be deserialized.

400

TaskId.Missing

The task id is missing.

task_id is missing or is an empty string. An ID containing only whitespace characters will enter the query logic and return TaskId.Invalid in the response metadata.

400

Operator.InvalidId

The operator is invalid.

The operator ID does not exist or is unavailable.

400

Operator.InvalidVersion

The operator version is invalid.

The operator version does not exist or is unavailable.

401

Authorization.Missing

The authorization header is missing.

Authorization information is missing.

401

ApiKey.Invalid

The api key is invalid.

The API key is not valid.

429

APIAccountRpmRateLimitExceeded

The RPM limit for the API on your account has been exceeded.

The Poll request frequency for the current account has exceeded the limit.

200

TaskId.Invalid

The task id is invalid.

If the non-empty task ID does not exist, or the result does not exist or is temporarily unavailable, the HTTP response is still 200, metadata.task_status=FAILED, and the business code is this value.

200

Server.InternalError

General Internal Error

If query or task result parsing fails, the HTTP response is still 200, metadata.task_status=FAILED, and the business code is this value.

Asynchronous execution failures are also returned via HTTP 200 in the Poll response: metadata.task_status is FAILED, EXPIRED, CANCELLED, or TIMEOUT. The business code and error information provided by the execution side are retained in metadata.business_code and metadata.error_msg. Do not determine task success solely based on the HTTP status of Poll.

Last updated: 2026.09.04 16:02:00