← 返回 2026-09-26 简报

Seedance 是否开源?

Is Seedance Open Source?

语音播报
摘要
事件:OpenRouter 调查字节跳动 Seedance 系列模型开源情况,确认未发布任何权重或许可证。 要点:所有版本均无公开检查点,GitHub 和 Hugging Face 上的相关仓库仅为 API 客户端。 影响:无法离线部署、微调或私有化部署,仅能通过 API 调用,不适合需要数据控制的用户。

我们在任何 Seedance 模型的发布页面中均未找到已发布的权重,也未找到模型许可证。字节跳动的 Seedance 2.5 发布博文和模型页面描述了通过 Jimeng AI、Doubao 以及 BytePlus ModelArk API 进行访问的方式,且这些页面均未链接到检查点(checkpoint)。Hugging Face 上的 ByteDance-Seed 组织和 GitHub 上的 ByteDance-Seed 组织发布了其他模型,但其中均不包含 Seedance 模型。我们目录中的五个 Seedance 条目均未关联 Hugging Face ID。

这就回答了标题所提出的问题,但有一个边界条件。我们检查了字节跳动的一级页面、两个官方的 ByteDance-Seed 组织以及我们自己的目录。我们无法排除存在未被发现的发布版本的可能性。如果字节跳动发布了权重,该检查点将出现在上述任一组织下,届时我们将更新本文。

本文涵盖了开放权重(open-weight)和开源(open-source)对视频模型意味着什么、GitHub 和 Hugging Face 上名为 Seedance 的仓库包含什么内容、何时需要检查点作为硬性要求,以及如何通过 OpenRouter 上的异步视频端点运行 Seedance 任务。如需了解输出质量、每条片段的成本以及 Seedance 2.5 与 Seedance 2.0、Wan 3.0 和 Veo 3.1 的对比,请阅读我们的 Seedance 2.5 评测 。

摘要

我们在字节跳动的一级页面、GitHub 和 Hugging Face 上的 ByteDance-Seed 组织,以及 OpenRouter 目录中,均未找到 Seedance 2.5、Seedance 2.0、Seedance 2.0 Fast、Seedance 2.0 Mini 或 Seedance 1.5 Pro 的已发布检查点或模型许可证。

我们审查的名为 Seedance 的 GitHub 和 Hugging Face 项目均为 API 客户端和托管服务。它们不包含权重,也不会占用您的硬件资源运行任何内容。

离线使用、物理隔离部署以及在您自己的素材上进行微调均需要检查点。如果您需要检查点,Seedance 并非候选方案。Kimi K3 以及 Qwen 3.8 系列模型中的四个模型发布了可下载的权重。

在 OpenRouter 上,所有五个 Seedance 模型均通过 POST /api/v1/videos 运行。您提交任务后,通过轮询或 Webhook 等待终端状态,然后使用您的 API 密钥下载文件。

开放权重与开源

通过订阅,您同意接收 OpenRouter 通讯:包括模型使用数据、产品更新和研究报告,每周约一封电子邮件。您可以通过每封电子邮件中的链接随时退订。请参阅我们的隐私政策 。

开放权重意味着发布者发布了模型的参数,以便您可以下载并运行它们。开源意味着许可证在开放源代码促进会(Open Source Initiative)批准的列表中,并授予使用、修改和重新分发的权利。一个模型可以在自定义许可下成为开放权重,而不属于开源。Kimi K3 是本系列前文提到的例子。Moonshot AI 在其自己的 Kimi K3 License 下于 Hugging Face 发布了检查点,该许可证未获 OSI 批准。

在我们查阅的资料中,Seedance 既非开放权重,也非开源。由于没有公开的检查点,因此不存在由模型许可证规范的工件。适用的唯一许可证是您调用的任何托管平台的服务条款,包括 ours 。

我们查找的位置

我们检查了四个地方。如果存在公开的 Seedance 发布版本,这些位置将是其出现的地方。

字节跳动的一级页面。Seedance 2.5 发布博文称该模型正在 Jimeng AI 和 Doubao 上推出,并通过 BytePlus ModelArk 提供 API 访问。Seedance 2.5 和 Seedance 2.0 的模型页面描述了托管访问方式。这三个页面均未链接检查点、仓库或模型许可证。

GitHub 上的 ByteDance-Seed 组织。截至撰写本文时,该组织拥有 63 个公开仓库,包括已发布的模型如 Seed-Coder、Seed-OSS、BAGEL 和 SeedVR2。其中没有一个是 Seedance 仓库。

Hugging Face 上的 ByteDance-Seed 组织。该组织拥有 59 个公开仓库,同样包括 Seed-Coder、Seed-OSS、BAGEL 和 SeedVR2。其中没有一个是 Seedance 模型。在 Hugging Face 上以作者为 ByteDance-Seed 搜索 Seedance 返回无结果。

OpenRouter 目录。当发布者发布了检查点(checkpoint)时,我们的模型记录会包含一个 hugging_face_id 字段。所有五条 Seedance 记录的该字段均返回 null。仅凭这一点,只能说明我们的目录链接指向何处,因此我们将其列在最后,并不将其视为除我们自身数据之外的任何证据。

名为 Seedance 的仓库包含什么内容

在 Hugging Face 上搜索 Seedance(不带作者过滤器)确实会返回结果。我们检查过的这些结果是第三方仓库,名称如 Seedance-2-AI-Video-Generator 和 Seedance-API。其中第一个包含两个文件:.gitattributes 和 README.md,其 README 声明该模型仅在维护者的平台上托管,用户无需下载权重。这是对托管服务的描述,而非模型发布。

GitHub 上名为 Seedance generator 或开源 Seedance 的项目,以及暴露 Seedance 的 ComfyUI 节点也遵循同样的模式。它们调用的是托管端点。设置说明会告诉你具体是哪个端点。如果第一步是粘贴 API 密钥,那么该项目就是他人服务器的客户端,你的机器上不会运行任何内容。访问 API 的 ComfyUI 节点就是一个带有图形用户界面的客户端。

这并不意味着这些项目毫无用处。它们只是没有回答开源问题。它们继承了托管端点所适用的条款、定价和数据政策。

何时需要检查点

有三种部署模式需要可下载的权重,而在我们检查的来源中,Seedance 不符合其中任何一种。

离线或空气隔离推理。如果生成视频的设备无法访问互联网,模型必须位于该设备上。没有可供放置的 Seedance 工件。

在自有素材上进行微调。使用自有数据训练模型需要访问其参数。不存在可供你训练的公开 Seedance 参数。

出于数据驻留原因的自托管。在你自己的区域、受你自己控制地运行模型需要权重。通过我们等途径提供的托管访问意味着提供商处理请求。

如果上述某一点是你的需求,请评估发布检查点的模型。在本系列中,Kimi K3 在 Hugging Face 上以自定义许可证发布其检查点,而四个 Qwen 3.8 模型中有三个可下载。它们都不是视频模型。对于发布权重的视频模型,请查看视频模型列表中的 hugging_face_id 字段,并确认链接模型卡片上的许可证。

如果你的担忧是供应商锁定而非本地执行,托管访问仍然提供一样东西。你发送到 /api/v1/videos 的请求体在我们目录中的所有视频模型之间都是相同的,因此从 Seedance 切换到另一个模型只需更改模型字符串。

OpenRouter 上的五个 Seedance 模型

我们通过 Seed 提供商提供五个 Seedance 模型。下表列出了我们的目录为每个模型公开的参数。数据来源于 2026-09-11 的 /api/v1/videos/models。

模型 输入模态 时长 分辨率 帧图像 音频输出
bytedance/seedance-2.5 文本、图像、音频、视频 4 到 30 秒 480p, 720p 首帧和末帧 是
bytedance/seedance-2.0 文本、图像、音频、视频 4 到 15 秒 480p, 720p, 1080p, 4K 首帧和末帧 是
bytedance/seedance-2.0-fast 文本、图像、音频、视频 4 到 15 秒 480p, 720p 首帧和末帧 是
bytedance/seedance-2.0-mini 文本、图像、音频、视频 4 到 15 秒 480p, 720p 首帧和末帧 是
bytedance/seedance-1-5-pro 文本、图像 4 到 12 秒 480p, 720p, 1080p 首帧和末帧 是

Seedance 2.5 是唯一能运行超过 15 秒的模型。Seedance 2.0 是唯一能达到 4K 分辨率的模型,而 Seedance 2.0 和 Seedance 1.5 Pro 是唯一能达到 1080p 分辨率的模型。定价按视频令牌计算。视频模型列表中的 pricing_skus 字段提供了每个模型的费率,Seedance 2.5 列出了带音频、不带音频以及带视频输入的作业的不同费率。Seedance 2.5 的评测详细说明了每个分辨率下片段的价格。

如何在 OpenRouter 上调用 Seedance

在 OpenRouter 上进行视频生成是异步的。你提交作业后会立即获得一个作业 ID。片段在提供商端渲染,你可以轮询结果,或者当作业达到终止状态时接收 webhook。目录中所有视频模型的请求格式均相同。

提交

POST https://openrouter.ai/api/v1/videos 需要 model 和 prompt 作为必填字段。可选字段包括 duration(时长)、resolution(分辨率)、aspect_ratio(宽高比)、用于首尾帧控制的 frame_images、用于参考图像的 input_references、generate_audio(生成音频)、seed(随机种子)以及用于 webhook 的 callback_url。响应为 202 Accepted,包含作业的 id、polling_url(轮询 URL),且 status 设置为 pending(待定)。

{
"id" : "abc123" ,
"polling_url" : "https://openrouter.ai/api/v1/videos/abc123" ,
"status" : "pending"
}
提交即开始计费工作。如果你的 HTTP 客户端默认重试失败的请求,超时或 5xx 错误后的重试可能会启动第二个付费作业。请关闭提交调用的重试功能,并保留轮询的重试功能,因为轮询是只读的。

等待

以一定间隔轮询 GET https://openrouter.ai/api/v1/videos/{id},即提交响应中的 polling_url。状态会从 pending 变为 in_progress(进行中),然后变为四个终止值之一。completed 表示文件已就绪。failed 包含 error 字段。cancelled(已取消)和 expired(已过期)是另外两个终止状态,webhook 文档涵盖了所有四种情况。如果你在请求或工作区级别设置了 callback_url,当作业达到终止状态时,我们会向该 URL 发送 HTTPS POST,你可以跳过轮询。我们可能会多次投递同一事件,因此请根据 X-OpenRouter-Idempotency-Key 标头去重投递,其格式为 - 。

完成的作业如下所示。unsigned_urls 数组和 usage 块仅在完成时出现。

{
"id" : "abc123" ,
"generation_id" : "gen-1234567890-abcdef" ,
"polling_url" : "https://openrouter.ai/api/v1/videos/abc123" ,
"status" : "completed" ,
"unsigned_urls" : [
"https://openrouter.ai/api/v1/videos/abc123/content?index=0"
],
"usage" : {
"cost" : 0.25 ,
"is_byok" : false
}
}
下载

unsigned_urls 中的条目指向 GET https://openrouter.ai/api/v1/videos/{id}/content?index=0 。它们不是预签名的 URL。发送你用于提交时的相同 Authorization: Bearer 标头。文件可能在状态显示为 completed 后几秒才可下载,因此在此路由出现错误时,请在将其视为失败之前在一个有限的时间窗口内重试。下载是只读的,因此重试不会启动第二个作业。

curl "https://openrouter.ai/api/v1/videos/abc123/content?index=0" \
-H "Authorization: Bearer $OPENROUTER_API_KEY " \
--output seedance.mp4
使用 TypeScript SDK 的完整运行示例

此示例提交一个 20 秒的 Seedance 2.5 片段,每 30 秒轮询一次,并下载结果。如果失败是 HTTP 错误或连接断开,则每 5 秒重试下载,最多持续 2 分钟。SDK 将 REST 字段名称映射为 camelCase(驼峰命名法),因此 generate_audio 变为 generateAudio,aspect_ratio 变为 aspectRatio。提交调用上的 retries 选项禁用了该请求的 SDK 默认重试策略,因此瞬态错误无法启动第二个计费作业。轮询保留默认策略。

import { writeFile } from "node:fs/promises" ;
import { OpenRouter } from "@openrouter/sdk" ;

const apiKey = process.env. OPENROUTER_API_KEY ;

if ( ! apiKey) {
throw new Error ( "Set OPENROUTER_API_KEY first." );
}

const openRouter = new OpenRouter ({ apiKey });

const job = await openRouter.videoGeneration. generate (
{
videoGenerationRequest: {
model: "bytedance/seedance-2.5" ,
prompt:
"A slow dolly shot along a rain-soaked market street at dusk, lanterns reflecting in puddles, realistic motion" ,
duration: 20 ,
resolution: "720p" ,
aspectRatio: "16:9" ,
generateAudio: true ,
},
},
{ retries: { strategy: "none" } },
);

console. log (job.id, job.status);

let current = job;

while ( ! [ "completed" , "failed" , "cancelled" , "expired" ]. includes (current.status)) {
await new Promise (( resolve ) => setTimeout (resolve, 30_000 ));
current = await openRouter.videoGeneration. getGeneration ({ jobId: job.id });
}

if (current.status !== "completed" || ! current.unsignedUrls?.[ 0 ]) {
throw new Error (current.error ?? Video generation ${ current . status }. );
}

async function downloadWithRetry ( url : string ) : Promise < Buffer > {
const deadline = Date. now () + 120_000 ;
let lastError = "no attempt made" ;

while (Date. now () < deadline) {
try {
const response = await fetch (url, {
headers: { Authorization: Bearer ${ apiKey } },
signal: AbortSignal. timeout (deadline - Date. now ()),
});

if (response.ok) {
return Buffer. from ( await response. arrayBuffer ());
}

lastError = HTTP ${ response . status } ;
await response.body?. cancel ();
} catch (error) {
lastError = error instanceof Error ? error.message : String (error);
}

await new Promise (( resolve ) => setTimeout (resolve, 5_000 ));
}

throw new Error ( Download failed after retrying for 2 minutes. Last error: ${ lastError } );
}

await writeFile ( "seedance.mp4" , await downloadWithRetry (current.unsignedUrls[ 0 ]));
console. log ( "Saved seedance.mp4" , current.usage?.cost);

我们使用严格的 TypeScript 设置针对 @openrouter/sdk 编译了此示例。由于本文未针对付费端点运行该代码,因此请将其视为起点,并查阅视频生成的文档以获取当前的请求架构。

零数据保留

视频生成不符合零数据保留(Zero Data Retention)的条件。提供商必须保存完成的文件直到您下载它,这与无保留保证不兼容。如果您的工作区或您的请求强制执行 ZDR,我们将不会路由视频请求。这也是开源问题对某些团队重要的第二个原因。纯托管模式无法满足“没有任何第三方保留输出”的要求,而且也没有 Seedance 检查点可供在内部运行。

常见问题解答

Seedance 2.5 是开源的吗?

在我们能找到的任何地方都不是。字节跳动的 Seedance 2.5 发布文章和模型页面描述了通过 Jimeng AI、Doubao 和 BytePlus ModelArk API 的访问方式。它们没有链接检查点或模型许可证。GitHub 和 Hugging Face 上的 ByteDance-Seed 组织发布了其他模型,但没有 Seedance 模型,我们目录中的五个 Seedance 条目也没有携带 Hugging Face ID。

Seedance 2.0 是开源的吗?

我们也未发现 Seedance 2.0、Seedance 2.0 Fast 或 Seedance 2.0 Mini 的已发布权重或模型许可证。字节跳动的 Seedance 2.0 页面将该模型呈现为托管产品,GitHub 和 Hugging Face 上的官方 ByteDance-Seed 仓库中也不包含它。

您可以在本地运行 Seedance 吗?

从我们找到的任何工件来看都不行。在您的硬件上运行模型需要检查点,而我们未发现任何 Seedance 版本的检查点。我们检查过的名为 Seedance 的 GitHub 和 Hugging Face 项目,例如 Hugging Face 仓库 Seedance-2-AI-Video-Generator,是第三方包装器,并非由字节跳动发布。它们调用托管 API 并提示您粘贴 API 密钥,因此它们在本地不运行任何内容。

开放权重(open-weight)与开源(open-source)有什么区别?

开放权重(Open-weight)意味着发布者已上传模型检查点,您可以下载并运行它。开源(Open-source)则意味着该模型的许可证列于开源促进会(Open Source Initiative)批准的列表中,并授予用户使用、修改和再分发的权利。一个模型可以在自定义许可证下属于开放权重,但并不一定符合开源标准。根据我们查阅的资料,Seedance 既不属于开放权重,也不属于开源,因为目前并没有可供授权使用的公开检查点。

如何在 OpenRouter 上调用 Seedance?

向 https://openrouter.ai/api/v1/videos 发送 POST 请求,并在 model 字段中指定 Seedance 的模型标识符,例如 bytedance/seedance-2.5。响应将返回一个任务对象,包含 id、polling_url 以及状态(status),此时状态为 pending(待处理)。您需要轮询 polling_url 或等待 webhook 通知,直到状态变为

本条评分 9.9 score-v1
  • 来源权威 8
    注册表 priority=8(OpenRouter)
  • 时效 1.945
    发布 22.5 小时前,衰减到 1.94/3.0
  • 多源印证 0
    只有 1 家在报(无旁证)
  • 社区信号 0
    无社区数据(本管线走 RSS,HN 的 hn_fetcher 未接入)

首次收录 · 2026-09-26 · 9.95 分

原文链接:https://openrouter.ai/blog/insights/seedance-2-5-open-source/
来源:OpenRouter
以上内容由 AI 自动翻译,仅供参考。
← 返回简报