Skip to content
dsh.fish
Bundle

dsh-seedance2

Generate images and Seedance videos in DeepSeek Harness through the Seedance 2 AI API

Source
synmindai
stars
1 stars
License
MIT
Updated
Updated 5 days ago

Readme

# Seedance 2 for DeepSeek Harness

[![npm](https://img.shields.io/npm/v/dsh-seedance2.svg)](https://www.npmjs.com/package/dsh-seedance2)
[![DeepSeek Harness](https://img.shields.io/badge/DeepSeek-Harness-4D6BFE)](https://github.com/deepseek-ai/deepseek-harness)
[![License: MIT](https://img.shields.io/badge/License-MIT-green.svg)](./LICENSE)

`dsh-seedance2` adds image and video generation to DeepSeek Harness through the
Seedance 2 AI public API. The same plugin can create images with Nano Banana Pro,
Nano Banana 2 Lite, or GPT Image 2 and create videos with Seedance 2 or
Seedance 2.5.

Tools:

- `seedance2_generate_image`
- `seedance2_generate_video`
- `seedance2_get_task`
- `seedance2_account_help`

[中文说明](./README.zh-CN.md)

## Account, credits, and API key

1. Sign up or sign in at <https://seedance2ai.io/sign-up>.
2. Buy credits at <https://seedance2ai.io/pricing>.
3. Create and manage an API key at <https://seedance2ai.io/app/api>.
4. Set the key only in the environment that launches Harness:

   ```bash
   export SEEDANCE2_PUBLIC_API_KEY='sk-...'
   ```

5. Restart Harness.

Use the public key created on the API page. Internal provider credentials such
as `SEEDANCE_API_KEY` are not accepted by the public API.

Official API documentation and current model parameters:
<https://seedance2ai.io/developers>

## Install

```bash
npx -y @deepseek-ai/dsh plugin --profile web add dsh-seedance2
npx -y @deepseek-ai/dsh --profile web --dump-config
npx -y @deepseek-ai/dsh web --profile web
```

The config dump should contain a `seedance2` bundle layer.

To install a cloned checkout instead:

```bash
npx -y @deepseek-ai/dsh plugin --profile web add .
```

## Try it

```text
Use Seedance 2 AI Nano Banana Pro to generate a 1:1, 2K premium packaging
mockup on a clean studio floor. Wait for the final image.
```

```text
Use Seedance 2 Pro to turn this public HTTPS opening image into a five-second
720p 16:9 video. Use a slow dolly shot, generate audio, and wait for the result.
```

```text
Use Seedance 2.5 media-to-video with these public HTTPS reference images and
video. State the role of each reference inside the prompt and wait for output.
```

Reference assets must be public HTTPS URLs. For best Seedance results, describe
the subject, action, scene, camera movement, visual style, constraints, and the
role of every supplied asset in the prompt.

## Safety and billing behavior

- Paid image and video tools ask for approval by default.
- The API key is resolved through Harness credentials and never exposed as a
  model argument.
- Every paid request carries an `Idempotency-Key`; automatic retries reuse it.
- Retryable `429` and `5xx` responses use bounded backoff.
- Cancellation aborts requests and foreground polling.
- Failed tasks surface `credits_refunded` from the API.
- If foreground waiting times out, continue the original task with
  `seedance2_get_task`; do not pay for a duplicate submission.
- Authentication and insufficient-credit errors return the official key or
  recharge page.

## Configuration

Defaults are production-ready. Override only when necessary:

```yaml
- id: seedance2
  config:
    apiBaseUrl: https://www.seedance2ai.io
    apiKeyEnv: SEEDANCE2_PUBLIC_API_KEY
    requestTimeoutMs: 30000
    pollIntervalMs: 3000
    imageWaitTimeoutMs: 300000
    videoWaitTimeoutMs: 900000
    maxRetries: 2
    retryDelayMs: 500
    requireApproval: true
    allowLocalHttp: false
```

Put this row in `$DSH_HOME/profiles/web/cordis.patch.yml`. Harness replaces the
whole config row, so keep every setting. Disable approval only for a trusted,
deliberately budgeted automation.

## Validate

```bash
npm run check
npm test
npm run pack:check
```

The package ships plain JavaScript and needs no install-time build script.

Install

dsh plugin --profile web add github:synmindai/dsh-seedance2

Profile: web

  • This source has no pinned commit, so a later push upstream changes what installs. Prefer pinning a commit.
Source