

# How to Prepare a TikTok Clip Brief With Checked Times

Prepare a source-linked clip brief with checked in and out times, expected duration, and context notes. Source-linked means the brief keeps the video ID and the video URL. Caption times only suggest the cut. An editor must watch the sound and the picture before anyone cuts.

A clip brief is the handoff record for one planned clip. In is the planned start time. Out is the planned end time. Duration is the length of that planned clip. Use duration = out - in. A handle is extra source time before or after that cut. A handle gives the editor seconds to trim. A handle is not part of the final clip unless the brief says so.

The [TikTok Transcript Actor](https://apify.com/chronometrica/tiktok-transcript-scraper) returns caption text and times. An Actor is a hosted data collection program. This Actor does not cut, download, edit, or publish video. It does not give permission to reuse media. You do the checks below. Then you save the clip brief. Use your own authorized source for a real clip.

## Use a known length rule

State the edit goal, the audience, and the length before you choose words. One public [job post for TikTok clip editing](https://www.reddit.com/r/JobPH/comments/1uqctq7/hiring_admin_assistant_for_a_tiktok_clipediting/) asks for short edits of 10–20 seconds and for footage kept in order. That post is a real work request. It is not a count of all buyers. It does not prove that many people will watch the clip. Do not copy pay, email, or contact details from it. Do not assume the post lets you reuse someone else's video.

## What one caption run returns

A Task is a saved input preset. A run is one use of the Actor with that input. The current public TikTok Transcript build is 0.1.36. It accepts `startUrls` with 1–100 items. Each item must be a known public video URL, a short link, or a video ID made of digits. The Actor does not search profiles, keyword pages, or sound pages.

`preferredLanguages` picks public tracks in the order you list. A track is one caption language already on the video. An empty list uses the first public track. The Actor does not translate. It does not write text for audio with no public caption. It does not collect comments. It does not assign topic codes.

A public Task is only a starting input. It does not do these checks for you. The saved input below is the current sample. Replace that sample URL with your own known public URLs.

```json
{
  "startUrls": ["https://www.tiktok.com/@hankgreen1/video/7047596209028074758"],
  "preferredLanguages": []
}
```

What one caption run returns

For your own one-video test, set `preferredLanguages` to `["en"]` only if English is the language you chose to study. If you study another language, write that language rule. Do not keep English without that choice.

Each submitted input returns one result row. A result row is one record. A failed row still comes back. The exact fields are `inputIndex`, `inputUrl`, `videoId`, `videoUrl`, `authorHandle`, `durationSeconds`, `languageCode`, `text`, `segments`, `status`, `statusReason`, `isBillable`, and `scrapedAt`. Each segment has `startSeconds`, `endSeconds`, and `text`. Use those two times as given. Keep `videoId` as text, not as a number, so no digit is lost. `languageCode` can include a region, such as `eng-US`.

`status` can be one of these:

- `succeeded`
- `no_public_captions`
- `language_unavailable`
- `duplicate_input`
- `not_tiktok`
- `invalid_input`
- `unsupported_url`
- `video_unavailable`
- `not_public`
- `blocked_or_challenged`
- a caption or extraction failure

Success needs `text` that is not empty. Empty text with a failure status does not mean people were silent. Do not write fake speech for that gap. Name another source method if you need words. This article does not teach that other method.

`isBillable` true means that one row is a successful caption result event. Other rows are still useful records. Use of the platform is separate from one result event. Do not call the whole run free.

The run OUTPUT fields are only run counts. They do not show that the rows stand for all videos.

- `inputsReceived`
- `resultRows`
- `billableTranscriptRows`
- `nonBillableResultRows`
- `duplicateVideosSkipped`
- `statusCounts`

One public check used the sample video above. That check succeeded. It kept the exact requested video ID. It had text that was not empty. It had 12 segments with `startSeconds` and `endSeconds`. No caption words from that video are copied here. The check shows a public caption path on that one source. It does not show that every video works. It does not prove that every word matches speech. It does not prove that a topic code is valid.

## Do these 8 actions

1. State the goal, the audience, and the length first.

Write who the clip is for. Write the one idea it must carry. Write the length rule before you read the caption. For the work request above, keep the final clip inside 10–20 seconds. A passage can be useful and still fail the length rule. The length rule is a work rule. It is not a count of demand. It does not prove that people will watch the clip.

1. Start from one known video and its caption row.

Pick one authorized public video you can already name. Keep `videoId`, `videoUrl`, `languageCode`, and `status` on the brief. Continue only when `status` is `succeeded` and `text` is not empty. If the status is `no_public_captions` or another failure, stop. Do not write fake speech. A `duplicate_input` row is an extra copy of a video already sent. Keep one row for that video. Steps that only confirm the public video can stay short here. The clip work starts after a succeeded caption row.

1. Choose a complete passage.

A candidate is a possible clip. It is not approved yet. Choose a passage that still makes sense by itself under your goal. Keep the line before it when that line holds a condition or a negation. Keep the line after it for the same reason. A condition is a limit, such as "use that same unit." A negation is a "not" that changes the meaning. If you drop either one, the clip can say the wrong thing. A useful caption line is only a candidate. This brief does not label how the full video opens. It records one passage, its times, and its context.

1. Set in and out from the segment times.

Read `startSeconds` and `endSeconds` directly. Set in to the start of the first word you need. Set out to the end of the last word you need. Then compute duration = out - in. Segments may touch or overlap. Overlap does not add video time. Do not add an overlap a second time. The length is still out minus in. If `durationSeconds` is missing, that unknown is not zero. Watch the video. Confirm that out sits inside the real video before handoff.

1. Watch and listen, then add handles only if needed.

Play the candidate. Check that in and out do not cut off speech. Check that they keep a needed diagram, action, condition, and speaker change. A cut is where the planned clip starts or stops. If the editor needs extra seconds to fade or trim, add handles. Put them before in, after out, or both. Write the handle length. Write the source interval those handles cover. Keep the final in and out separate. The handle interval is available source time. It is not the final duration unless the editor changes the brief.

1. Save one complete brief row.

Record these items:

- Source ID and source URL
- Time unit: decimal seconds or timecode
- Whether out is an exclusive boundary
- In, out, and duration
- Intended message
- Caption-language evidence
- Manual sound and picture checks
- Context risk
- Handles
- Owner, editor, and approval state

An exclusive boundary stops before that instant. It does not include it. Here, caption `endSeconds` is the end of the last needed word. Do not make frame timecode from these seconds unless you know the source frame rate. No frame rate means no frame timecode.

1. Mark ready only after meaning and edges pass.

`succeeded` means the Actor returned a public caption with text. It does not mean an editor approved the clip. [If an important phrase is unclear](/en/articles/tiktok-caption-word-audit/), set the approval state to `needs_review`. Do not guess the words. Give the editor the approved source file in the way that editor already receives files. This article does not download that file.

1. Compare the finished cut with the brief.

After the editor makes the cut, compare the final file with the brief. Check the message, the length, the boundaries, the visible text, and the context. You or the editor does this check. Caption timing is a plan. It does not prove that the finished file matches the plan.

## Work a fictional garden lesson

The next lesson is original fiction. It is not a product result. It is not a real caption. It is not a measured edit.

The fictional source is an authorized garden lesson. The source length is 30 seconds. The caption lines used here are four segments. Times are decimal seconds.

| Segment | startSeconds | endSeconds | Text |
| --- | --- | --- | --- |
| 1 | 5.0 | 8.0 | Set the tray on a flat table |
| 2 | 8.0 | 12.5 | Measure the width inside the edges |
| 3 | 12.5 | 16.0 | Write the number in centimeters |
| 4 | 16.0 | 19.0 | Use that same unit for the length. |

The length rule is 10–20 seconds. The message has two parts. Measure the inside width in centimeters. Then use that same unit for the length.

```text
duration = out - in
3.0 = 8.0 - 5.0
4.5 = 12.5 - 8.0
3.5 = 16.0 - 12.5
3.0 = 19.0 - 16.0
3.0 + 4.5 + 3.5 + 3.0 = 14.0
14.0 = 19.0 - 5.0
4.5 = 12.5 - 8.0
22.0 = 27.0 - 5.0
15.0 = 19.5 - 4.5
```

Work a fictional garden lesson

The four segments touch at 8.0, 12.5, and 16.0. Those shared instants are not extra video time. Adding the four lengths gives 14.0. The span from 5.0 to 19.0 is also 14.0.

Candidate 1 uses in 5.0 and out 19.0. Duration = 19.0 - 5.0 = 14.0 seconds. That is inside 10–20 seconds. The passage keeps the tray, the width, the centimeters, and the same-unit rule. A watch confirms the ruler edges stay visible. The spoken unit condition stays complete. No speaker change is cut off. The final-cut approval is `ready`.

The editor also asks for 0.5 seconds of handle before in and 0.5 seconds after out. Handle start = 5.0 - 0.5 = 4.5. Handle end = 19.0 + 0.5 = 19.5. Handle span = 19.5 - 4.5 = 15.0 seconds. The source is 30 seconds, so 4.5 and 19.5 are inside it. The available source interval is 15.0 seconds. The intended final cut stays 5.0–19.0, which is 14.0 seconds. Do not call 15.0 seconds the final duration. The 15.0 seconds is handle room. The approved clip length stays 14.0 seconds.

Candidate 2 uses in 8.0 and out 12.5. Duration = 12.5 - 8.0 = 4.5 seconds. The minimum is 10 seconds, so 4.5 fails. This cut also drops "Use that same unit for the length." The unit condition is lost. The status is `needs_revision`. It is not ready.

Candidate 3 uses in 5.0 and out 27.0. Duration = 27.0 - 5.0 = 22.0 seconds. The maximum is 20 seconds, so 22.0 fails. The point 27.0 is still inside the 30-second source. These four lines do not include caption text from 19.0 to 27.0. Do not invent words for that gap. The status is `needs_revision`. It is not ready.

None of the three is `needs_review`. The supplied words are clear. Candidate 2 fails the minimum and drops the unit rule. Candidate 3 fails the maximum. Only candidate 1 is ready.

The ready row uses fictional labels. It does not claim a live billable event.

| Brief field | Ready value |
| --- | --- |
| Source ID | fictional-garden-lesson-01, kept as text |
| Source URL | https://example.com/authorized-garden-lesson |
| Time unit | Decimal seconds. Not timecode. |
| Out boundary | 19.0 ends the last needed caption word. It is not an exclusive frame boundary. No frame rate is known. No frame timecode is made. |
| In | 5.0 |
| Out | 19.0 |
| Final duration | 14.0 seconds. Formula: 19.0 - 5.0 = 14.0. |
| Handles | 0.5 seconds before in and 0.5 seconds after out. |
| Handle interval | 4.5–19.5. Span: 19.5 - 4.5 = 15.0 seconds. This is not the final duration. |
| Intended message | Measure the inside width in centimeters. Use that same unit for the length. |
| Caption-language evidence | Fictional `languageCode` eng-US. Teaching row assumes `succeeded` and text that is not empty. The words are fiction. |
| Manual checks | Sound and picture were watched. Speech is complete. Ruler edges stay visible. The same-unit line is spoken. No speaker change is cut. |
| Context risk | A start at 8.0 drops the tray line. An end at 12.5 drops the same-unit line. The ready cut keeps both. |
| Source duration | 30 seconds, known. Points 4.5 and 19.5 are inside the source. If this value were unknown, it would not be zero. Confirm out on the video first. |
| Owner | Fictional lesson owner |
| Editor | Fictional clip editor |
| Approval state | ready |

| Candidate | In | Out | Duration | Status |
| --- | --- | --- | --- | --- |
| 1 | 5.0 | 19.0 | 19.0 - 5.0 = 14.0 | ready |
| 2 | 8.0 | 12.5 | 12.5 - 8.0 = 4.5 | needs_revision |
| 3 | 5.0 | 27.0 | 27.0 - 5.0 = 22.0 | needs_revision |

## Next action

Check one authorized source passage. Save the full in, out, and context brief before any editor creates the clip. Use the [TikTok Transcript Actor](https://apify.com/chronometrica/tiktok-transcript-scraper) and the [TikTok Timestamped Transcript Segments Task](https://apify.com/chronometrica/tiktok-transcript-scraper/examples/tiktok-timestamped-transcript-segments). Replace the sample URL with your own known public video. Keep the returned `startSeconds` and `endSeconds`. Watch the picture and the sound before you mark the row ready.

## Sources

- [TikTok Transcript Actor](https://apify.com/chronometrica/tiktok-transcript-scraper)
- [TikTok Timestamped Transcript Segments Task](https://apify.com/chronometrica/tiktok-transcript-scraper/examples/tiktok-timestamped-transcript-segments)
- [Job post for TikTok clip editing](https://www.reddit.com/r/JobPH/comments/1uqctq7/hiring_admin_assistant_for_a_tiktok_clipediting/)