mcpField
S
seedance-submitter

seedance-submitter

github.com/postplusaiCreative & media27806 installsUpdated 1d ago
Repository

About seedance-submitter

seedance-submitter is a skill for validating, submitting, polling, and troubleshooting Seedance 2.0/2.5 jobs through PostPlus Cloud. It handles normalized requests and endpoint constraints, while creative strategy and reference-policy decisions must be resolved beforehand.

Key features

  1. 01Validates Seedance request contracts
  2. 02Submits and polls generation jobs
  3. 03Supports Seedance 2.0 and 2.5 endpoints
  4. 04Handles references and hosted media
  5. 05Splits requests that exceed duration limits

Use cases

  1. 01Submitting a prepared Seedance request
  2. 02Checking status of a pending render
  3. 03Preparing reference media for submission
  4. 04Dividing an oversized video request

Install

Copy the command and run it in a terminal.

$npx skills add https://github.com/postplusai/postplus-skills --skill seedance-submitter

After installing, type/seedance-submitterin Claude Code to confirm it loaded.

Details

From the project README

Seedance Submitter

Use When

  • Preparing, validating, submitting, polling, or debugging Seedance 2.0/2.5 jobs through PostPlus Cloud.

Do Not Use When

  • Required inputs are missing and guessing would change the result.
  • Task class, hook logic, storyboard, or reference policy is still unresolved. Use video-generation and video-request-architect first.

Execution Boundary

  • This runner validates, submits, and polls normalized Seedance requests. It must not make creative strategy, task-classification, or reference-policy decisions.
  • Interpret sd2 as Seedance 2.0 Mini (video-seedance-2-mini-*), the current default tier, unless the user names another model. Standard/fast remain available explicitly; use them when reference video/audio is required.
  • Seedance 2.5 has four deliberately separate scene endpoints. Never convert one scene into another merely because an image is present:
    • video-seedance-2-5-text: prompt only; no media inputs.
    • video-seedance-2-5-first-frame: exactly one --first-frame; the output starts from that frame, so this is not a feature-only reference.
    • video-seedance-2-5-first-last-frame: exactly one --first-frame and one --last-frame; the provider contract fixes ratio to adaptive and duration to -1.
    • video-seedance-2-5-reference: one or more repeatable --reference-image, --reference-video, or --reference-audio; these guide features/style/content and are not opening or ending frames.
  • For 2.0, standard/fast -text endpoints accept image/video/audio references; mini -text accepts images only. Every -image endpoint takes one --image first frame and no reference slots.
  • Released endpoint keys and their option enums (resolution, aspect ratio, duration bounds) are discovered from postplus media schema --json; they are not hard-coded here.
  • Set duration within the endpoint's published bounds (see schema). For edit targets that fall between viable values, pick the nearest valid duration and set targetEditDurationSeconds.
  • When targetEditDurationSeconds < duration, include timeline.activePerformanceEndSeconds and timeline.tailStrategy.
  • If the target script or beat plan exceeds the endpoint's maximum duration, split into independent submit-ready segments. Do not submit one oversized request.
  • For 2.5 reference edit or extend, supply a reference video and use the exact schema constraints (aspect_ratio=adaptive, duration=-1). The CLI and Web boundary reject unsupported combinations before provider submission and billing.

Source And Request

  • Lock media, script, duration, output root, source basis, and whether the user wants submission or commands only.
  • promptPlan.*, timeline.*, and targetEditDurationSeconds are authoring vocabulary, not Seedance request fields. Submit with the endpoint's CLI flags from the flat provider contract discovered from postplus media schema --json (--prompt, legacy 2.0 --image, 2.5 --first-frame / --last-frame, --duration, --resolution, --aspect-ratio, --generate-audio, --output-format, --omni-reference-task-type, and the repeatable --reference-image / --reference-video / --reference-audio — reference flags only on the endpoints that publish those slots); the CLI rejects any flag outside the selected endpoint's contract. Compose the storyline/audio plan and any timeline.activePerformanceEndSeconds / timeline.tailStrategy instruction into the single --prompt narrative, then map the supported render bucket to --duration; timeline authoring fields have no separate flags or request fields, and there is no request-JSON envelope to author.
  • Bind references explicitly: say what [image 1], [image 2], [audio 1], or [video 1] controls. Do not rely on same as previous, content above, or unbound local handles in final requests.
  • Upload local reference media to hosted storage with postplus media-file upload --skill seedance-submitter --input-file <file> --mime <mime> --output <upload.json>, then pass output.mediaReference — a persistent postplus-media:// reference that never expires — into the Seedance media flags (for example --reference-image <output.mediaReference>). The hosted boundary exchanges it for a fresh signed URL at provider send time, so upload once and reuse the same reference across later submissions. output.data.download_url is a signed URL that expires; prefer output.mediaReference.
  • Do not claim that uploading through PostPlus hosted storage automatically grants Moyu real-person exemption. Automatic Moyu asset-library escalation is enabled only for the enterprise Seedance 2.0 first_frame path with real end-to-end evidence. reference_image remained privacy-blocked in a recorded run after asset:// rewrite, and no paid Seedance 2.5 exemption smoke has been approved; both paths fail with the provider's typed policy boundary.

Review And Handoff

  • Before submission, verify validation passed, every segment is self-contained, references are bound, required media exists, source basis is explicit, and the output path is durable.
  • Seedance 2.5 support is contract-verified by official/live provider material and local submit/poll/result/billing mocks. Until an approved paid smoke checks the MP4, actual duration, resolution, audio track, and settlement, do not label those output properties artifact-proven.
  • If a render is pending, return the segment id, manifest path, the output.data.id generation handle, the poll command postplus media poll --handle <output.data.id>, and expected local renders/ output path. The poll command waits in-command (re-checks every 8s for up to 45s per invocation; --wait-seconds 0 = single check): rerun the same command while the render stays pending instead of re-submitting or writing a tighter retry loop.
  • Save a finished render to disk with postplus media-file download --url <fresh-output-url> --output-file <renders/...> (or --reference <postplus-media://...> for media that lives in hosted storage); provider output URLs are temporary, so download while fresh.

Stop Conditions

  • Stop when required user intent, source evidence, or owned input artifacts are missing and guessing would change the result.
  • If an owned CLI or script command fails, report the exact error and stop. Do not bypass the failure with metadata-only answers, readiness probing, local payload rewrites, fallback providers, or unpublished tools.

Public Command Boundary

  • Choose the smallest matching command or workflow from the user input and run it directly.
  • Readiness diagnostics: postplus doctor --skill seedance-submitter.
  • Poll a pending render: postplus media poll --handle <output.data.id> (waits in-command up to 45s per invocation; rerun while pending).
  • Use postplus media schema --json only when constructing or repairing an unknown request shape.
  • Run the hosted submit with the generated command below; do not call provider APIs directly.
postplus media create video-seedance-2-fast-image \
  --prompt <prompt> \
  --image <image> \
  --output <result.json>
  • If the CLI returns a quote-confirmation challenge, run postplus quote confirm --json --challenge-file <challenge.json> and retry with the returned token.

Comments

Markdown supported