Summaries, chapters, and highlights
Use the /summarize
endpoint if you want to utilize pre-defined formats for general summarization tasks and, optionally, provide a prompt to customize the output. This endpoint generates the following:
- Summaries: The platform returns a brief that encapsulates the key points of a video, presenting the most important information clearly and concisely. Depending on your prompt, a summary can take various forms, such as a single paragraph, a series of paragraphs, an email, or a structured list of bullet points. For example, a summary highlighting Black Friday events might include a description of a crowded mall, key commentary by a news reporter on consumer behavior, and individual perspectives on societal values associated with consumption.
- Chapters: The platform returns a chronological list of all the chapters in a video, providing a granular breakdown of its content. For each chapter, the platform returns its starting and end times, measured in seconds from the beginning of the video, a descriptive headline that offers a brief of the events or activities within that chapter, and an accompanying summary that elaborates on the headline. For example, the first chapter of a stand-up comedy might describe the comedian's entrance and the first joke. The accompanying summary could delve into the content, detailing the comedian's humorous take on a specific subject, such as the cultural nuances of Tai Chi exercises.
- Highlights: The platform returns a chronologically ordered list of the most important events within a video. Unlike chapters, highlights only capture the key moments, providing a snapshot of the video's main topics. For each highlight, the platform returns its starting and end times, measured in seconds from the beginning of the video, and a brief that captures its essence. For example, a highlight might capture a significant event like a bank heist in a video with multiple scenes.
Below are some ways in which you can guide the platform to generate content tailored to your specific needs:
Content type | Prompt example |
---|---|
Specify the target audience | Generate a summary suitable for a high school audience studying environmental science. |
Adjust the tone | Generate a light-hearted and humorous chapter breakdown of this documentary. |
Indicate length constraints | Provide a summary fit for a Twitter post under 280 characters. |
Customize text format | Generate a summary in no more than 5 bullet points. |
Specify the purpose | Summarize this video from a marketer's perspective, focusing on brand mentions and product placements. |
For a description of each field in the request and response, see the API Reference > Generate ummaries, chapters, or highlights section.
Prerequisites
The examples in this guide assume the following:
- You’re familiar with the concepts that are described on the Platform overview page.
- You’ve already created an index and the Pegasus video understanding engine is enabled for this index.
- You've uploaded a video, and the platform has finished indexing it.
Generate a summary
To generate a summary based on the content of a video, invoke the summarize
method of the generate
object with the following parameters:
video_id
: A string representing the unique identifier of the video for which you want to generate a title.type
: A string representing the type of text you want to generate. This example usessummary
.
from twelvelabs import TwelveLabs
client = TwelveLabs(api_key="<YOUR_API_KEY>")
res = client.generate.summarize(
video_id="<YOUR_VIDEO_ID>",
type="summary"
)
print(f"Summary= {res.summary}")
import { TwelveLabs } from 'twelvelabs-js';
const client = new TwelveLabs({ apiKey: '<YOUR_API_KEY>'});
const summary = await client.generate.summarize('<YOUR_VIDEO_ID>', 'summary');
console.log(`Summary: ${summary.summary}`);
The output should look similar to the following one:
Summary: The video begins with a woman discussing her recent lifestyle changes,
including her graduation from college and moving back home. She decides to vlog
a summer day in her house in Minnesota, showing viewers where she grew up. She talks
about her love for sunbathing, applying her tanning oil, and enjoying the outdoor
environment. Afterward, she shares her outfit including her favorite tank from Hollister
and fold-over pants.\n She journeys to the Mall of America, making a pit stop at Starbucks.
At the mall, she shops at her favorite stores, including Hollister, Aritzia, and Victoria's Secret.
She purchases various items including a dainty blue floral top, gray yoga pants, and new
bras and shares her shopping haul with the viewers. The woman enjoys a sandwich, revealing
her love for the food.\n There's a quick transition to her preparing dinner at home.
She decides to whip up a tomato pasta dish called panzanella, using her mother's recipe.
After letting it marinate for a bit, she samples the mix, recalling its deliciousness from
her memories. \n In the evening, she meets her best friend Rachel for an outdoor adventure.
They go pennyboarding, a favored activity of theirs, which they usually do in certain mall
parking lots. She continues her activities with her friend, expressing her frustrations
over her troublesome skateboard. The video concludes with the woman sharing her day.
Optionally, you can use the prompt
parameter to provide context for the summarization task. The following example specifies the purpose and the desired length:
from twelvelabs import TwelveLabs
client = TwelveLabs(api_key="<YOUR_API_KEY>")
res = client.generate.summarize(
video_id="<YOUR_VIDEO_ID>",
type="summary",
prompt="Generate a summary of this video for a social media post, up to two sentences.")
print(f"Summary= {res.summary}")
import { TwelveLabs } from 'twelvelabs-js';
const client = new TwelveLabs({ apiKey: '<YOUR_API_KEY>'});
const summary = await client.generate.summarize(
'<YOUR_VIDEO_ID>',
'summary',
'Generate a summary of this video for a social media post, up to two sentences.',
);
console.log(`Summary: ${summary.summary}`);
The output should look similar to the following one:
Summary: Two women share a day in their lives, discussing topics such as graduation, moving home,
shopping hauls, cooking, and outdoor adventures. They showcase their favorite clothing items,
prepare food, and go pennyboarding together.
Generate chapters
To generate a list of chapters based on the content of a video, invoke the summarize
method of the generate
object with the following parameters:
video_id
: A string representing the unique identifier of the video for which you want to generate a title.type
: A string representing the type of text you want to generate. This example useschapter
.
from twelvelabs import TwelveLabs
client = TwelveLabs(api_key="<YOUR_API_KEY>")
res = client.generate.summarize(
video_id="<YOUR_VIDEO_ID>",
type="chapter",
)
for chapter in res.chapters:
print(
f"""Chapter {chapter.chapter_number},
start={chapter.start},
end={chapter.end}
Title: {chapter.chapter_title}
Summary: {chapter.chapter_summary}
"""
)
import { TwelveLabs } from 'twelvelabs-js';
const client = new TwelveLabs({ apiKey: '<YOUR_API_KEY>'});
const chapters = await client.generate.summarize('<YOUR_VIDEO_ID>', 'chapter');
for (const chapter of chapters.chapters) {
console.log(
`Chapter ${chapter.chapterNumber}\nstart=${chapter.start}\nend=${chapter.end}\nTitle=${chapter.chapterTitle}\nSummary=${chapter.chapterSummary}`,
);
}
The output should look similar to the following one:
Chapter 0,
start=0,
end=90
Title: College graduation and temporary move back home
Summary: A woman discusses her recent college graduation and temporary move back home.
Chapter 1,
start=90,
end=210
Title: Enjoying a summer day in Minnesota
Summary: The woman vlogs about her summer day, sharing her experience while standing in her
childhood home in Minnesota. She talks about her love for getting some sun and shows the camera
around her house.
Chapter 2,
start=210,
end=300
Title: Shopping at the Mall of America
Summary: The woman explores the Mall of America, mentioning her favorite stores and sharing her
shopping haul.
Chapter 3,
start=300,
end=360
Title: Sharing favorite clothing items
Summary: The woman showcases her favorite clothing items, discussing her new yoga pants and tops
from Aritzia and Victoria's Secret.
Chapter 4,
start=360,
end=480
Title: Food preparation and outdoor activities
Summary: The woman demonstrates how to make a bread salad and later meets up with her friend Rachel
to go pennyboarding at a parking garage.
The following example uses the prompt
parameter to indicate that the tone of voice should be casual and conversational, matching the vlogging style of the video:
from twelvelabs import TwelveLabs
client = TwelveLabs(api_key="<YOUR_API_KEY>")
res = client.generate.summarize(
video_id="<YOUR_VIDEO_ID>",
type="chapter",
prompt="Generate chapters using casual and conversational language to match the vlogging style of the video."
)
for chapter in res.chapters:
print(
f"""Chapter {chapter.chapter_number},
start={chapter.start},
end={chapter.end}
Title: {chapter.chapter_title}
Summary: {chapter.chapter_summary}
"""
)
import { TwelveLabs } from 'twelvelabs-js';
const client = new TwelveLabs({ apiKey: '<YOUR_API_KEY>'});
const chapters = await client.generate.summarize(
'<YOUR_VIDEO_ID>',
'chapter',
'Generate chapters using casual and conversational language to match the vlogging style of the video.',
);
for (const chapter of chapters.chapters) {
console.log(
`Chapter ${chapter.chapterNumber}\nstart=${chapter.start}\nend=${chapter.end}\nTitle=${chapter.chapterTitle}\nSummary=${chapter.chapterSummary}`,
);
}
Generate highlights
To generate a list of the important events or activities within a video, invoke the summarize
method of the generate
object with the following parameters:
video_id
: A string representing the unique identifier of the video for which you want to generate a title.type
: A string representing the type of text you want to generate. This example useshighlight
.
from twelvelabs import TwelveLabs
client = TwelveLabs(api_key="<YOUR_API_KEY>")
res = client.generate.summarize(
video_id="<YOUR_VIDEO_ID>",
type="highlight"
)
for highlight in res.highlights:
print(f"Highlight: {highlight.highlight}, start: {highlight.start}, end: {highlight.end}")
import { TwelveLabs } from 'twelvelabs-js';
const client = new TwelveLabs({ apiKey: '<YOUR_API_KEY>'});
const highlights = await client.generate.summarize('<YOUR_VIDEO_ID>', 'highlight');
for (const highlight of highlights.highlights) {
console.log(`Highlight: ${highlight.highlight}, start: ${highlight.start}, end: ${highlight.end}`);
}
The output should be similar to the following one:
Highlight: A woman vlogs about her summer day, sharing her experience while standing in her
childhood home in Minnesota., start: 30, end: 60
Highlight: The woman talks about the heat and her confusion regarding sweat and tanning oil.
She also mentions her outfit, consisting of a tank top and fold-over pants., start: 150, end: 180
Highlight: A woman is making a video of her food preparation and tasting., start: 420, end: 450
The following example uses the prompt
parameter to generate highlights for the same video, showcasing the most entertaining parts:
from twelvelabs import TwelveLabs
client = TwelveLabs(api_key="<YOUR_API_KEY>")
res = client.generate.summarize(
video_id="<YOUR_VIDEO_ID>",
type="highlight",
prompt="Generate highlights that showcase the most entertaining parts of the video."
)
for highlight in res.highlights:
print(f"Highlight: {highlight.highlight}, start: {highlight.start}, end: {highlight.end}")
import { TwelveLabs } from 'twelvelabs-js';
const client = new TwelveLabs({ apiKey: '<YOUR_API_KEY>'});
const highlights = await client.generate.summarize(
'<YOUR_VIDEO_ID>',
'highlight',
'Generate chapters using casual and conversational language to match the vlogging style of the video.',
);
for (const highlight of highlights.highlights) {
console.log(`Highlight: ${highlight.highlight}, start: ${highlight.start}, end: ${highlight.end}`);
}
The output should look similar to the following one:
Highlight: The woman discovers a foul smell in her car while vlogging about her day.,
start: 120, end: 150
Highlight: The woman shares her experience of shopping in a mall and discusses a surprising
incident that happened to her., start: 210, end: 240
Updated 2 months ago