diff --git a/.cursor-plugin/marketplace.json b/.cursor-plugin/marketplace.json index f0c3bd371..26bb70f59 100644 --- a/.cursor-plugin/marketplace.json +++ b/.cursor-plugin/marketplace.json @@ -543,6 +543,11 @@ "source": "third_party/square", "description": "Work with payments, orders, catalog, customers, and invoices." }, + { + "name": "seedance", + "source": "third_party/seedance", + "description": "Generate Seedance text-to-video or image-to-video with Ace Data Cloud and retrieve completed videos by task ID." + }, { "name": "tailscale", "source": "third_party/tailscale", diff --git a/README.md b/README.md index 886849908..c83023f2a 100644 --- a/README.md +++ b/README.md @@ -100,6 +100,7 @@ Official Cursor plugins for popular developer tools, frameworks, and SaaS produc | `zoho-desk` | [Zoho Desk](third_party/zoho-desk/) | Cursor | Integrations | Work with tickets, contacts, tasks, and knowledge base articles in Zoho Desk. | | `zoho-books` | [Zoho Books](third_party/zoho-books/) | Cursor | Integrations | Work with contacts, invoices, estimates, and items in Zoho Books. | | `square` | [Square](third_party/square/) | Cursor | Integrations | Work with payments, orders, catalog, customers, and invoices. | +| `seedance` | [Seedance by Ace Data Cloud](third_party/seedance/) | Ace Data Cloud Dev | Integrations | Generate Seedance text-to-video or image-to-video with Ace Data Cloud and retrieve completed videos by task ID. | | `tailscale` | [Tailscale](third_party/tailscale/) | Cursor | Integrations | Let Grok Bot reach MCP servers on your private Tailscale network. On your own tailnet it joins as one tag:grokbot device; on your team's company tailnet, turned on by a team admin, it uses each member's own device. | | `highlevel` | [HighLevel](third_party/highlevel/) | Cursor | Integrations | Work with contacts, conversations, opportunities, calendars, and payments. | | `finary` | [Finary](third_party/finary/) | Cursor | Integrations | Read your net worth, accounts, holdings, spending, and budgets. | diff --git a/third_party/seedance/.cursor-plugin/plugin.json b/third_party/seedance/.cursor-plugin/plugin.json new file mode 100644 index 000000000..1b4216b9c --- /dev/null +++ b/third_party/seedance/.cursor-plugin/plugin.json @@ -0,0 +1,46 @@ +{ + "name": "seedance", + "displayName": "Seedance by Ace Data Cloud", + "version": "1.0.1", + "minClientVersions": { + "cursor": "3.13.0" + }, + "description": "Generate Seedance text-to-video or image-to-video with Ace Data Cloud and retrieve completed videos by task ID.", + "author": { + "name": "Ace Data Cloud Dev", + "email": "dev@acedata.cloud" + }, + "homepage": "https://platform.acedata.cloud/models?utm_source=opensource&utm_medium=referral&utm_campaign=evergreen&utm_content=seedance_cursor_shared_manifest_pricing", + "repository": "https://github.com/AceDataCloud/SeedanceCursor", + "license": "MIT", + "logo": "assets/logo.png", + "keywords": [ + "seedance", + "video generation", + "text to video", + "image to video", + "ace data cloud", + "acedatacloud", + "mcp" + ], + "category": "integrations", + "tags": [ + "seedance", + "video", + "acedatacloud" + ], + "variables": { + "type": "object", + "properties": { + "ACEDATACLOUD_API_TOKEN": { + "type": "string", + "title": "Ace Data Cloud API token", + "description": "Service API key from https://platform.acedata.cloud/console/applications with Seedance access." + } + }, + "required": [ + "ACEDATACLOUD_API_TOKEN" + ] + }, + "mcpServers": "./mcp.json" +} diff --git a/third_party/seedance/CHANGELOG.md b/third_party/seedance/CHANGELOG.md new file mode 100644 index 000000000..69abd2f12 --- /dev/null +++ b/third_party/seedance/CHANGELOG.md @@ -0,0 +1,10 @@ +# Changelog + +## 1.0.1 + +- Clarify the independent service name and Ace Data Cloud publisher relationship in discovery metadata. +- Add bilingual install/token/setup guidance and sourced credential/official UI reference images; preserve the hosted MCP and same-task workflow. + +## 1.0.0 + +- Initial Seedance Cursor plugin using the existing Ace Data Cloud hosted MCP. diff --git a/third_party/seedance/LICENSE b/third_party/seedance/LICENSE new file mode 100644 index 000000000..64bb5cfce --- /dev/null +++ b/third_party/seedance/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2026 Ace Data Cloud + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/third_party/seedance/README.md b/third_party/seedance/README.md new file mode 100644 index 000000000..e44899cf6 --- /dev/null +++ b/third_party/seedance/README.md @@ -0,0 +1,88 @@ +# Seedance by Ace Data Cloud for Cursor + +This independent **Seedance by Ace Data Cloud** integration brings text-to-video, image-to-video and task retrieval into Cursor Agent. It is maintained by Ace Data Cloud, not an official plugin from the model brand or Cursor. The hosted MCP connection avoids running a local server; your service API token is entered once in Configure. + +Generate Seedance videos and retrieve the finished clip. This standalone plugin reuses the [Ace Data Cloud seedance MCP](https://github.com/AceDataCloud/MCPs/tree/main/seedance) and includes a focused Agent skill. Available tools and limits come from the live MCP schema. + +[简体中文教程](readme/README_zh_Hans.md) · [Copyable first-run prompt](examples/first-run.md) · [Current pricing](https://platform.acedata.cloud/models?utm_source=opensource&utm_medium=referral&utm_campaign=evergreen&utm_content=seedance_cursor_shared_readme_pricing_en) + +## 1. Find the independent Seedance plugin + +Open the [Cursor Marketplace](https://cursor.com/marketplace) or **Customize** in Cursor. Search **Seedance** (seedance, video generation, text to video), then look for **Seedance by Ace Data Cloud** and publisher/author **Ace Data Cloud Dev**. Select **Install** and choose the project or user scope. Cursor 3.24 used **Customize → Browse Marketplace → Add**; use the controls in your installed version. Installing this plugin does not require an Ace collection plugin. + +**Publication status:** [the official submission](https://github.com/cursor/plugins/pull/549) is pending review; an available source repository or a passing check does not prove a live Marketplace listing. If the exact listing is absent, do not install a similarly named unrelated plugin. An optional source/local review under `~/.cursor/plugins/local/seedance/` is a manual route, not official distribution. This is a tool integration, not an Ace preset in Cursor's chat-model provider list. + +For an unpublished candidate, use the [pinned local-review procedure](docs/local-review.md) rather than guessing a Marketplace URL. It copies the tracked candidate files, checks for an existing installation, and records the exact commit. Local loading needs a reload and allowed local imports; an external-repository symlink is skipped, and a same-name Marketplace install takes precedence. This procedure does not claim official installation. + +## 2. Register or sign in and get a service API token + +1. [Open Ace Data Cloud](https://platform.acedata.cloud/?utm_source=opensource&utm_medium=referral&utm_campaign=evergreen&utm_content=seedance_cursor_shared_readme_register_signin_en) and register or sign in. Then open [Applications](https://platform.acedata.cloud/console/applications?utm_source=opensource&utm_medium=referral&utm_campaign=evergreen&utm_content=seedance_cursor_shared_readme_api_key_en). If no General application exists, select **Initialize General Application**. +2. Open **General application** or an application enabled for **Seedance**. Confirm service access, balance and [current pricing](https://platform.acedata.cloud/models?utm_source=opensource&utm_medium=referral&utm_campaign=evergreen&utm_content=seedance_cursor_shared_readme_pricing_en) before any generation. +3. Copy an existing API Key with the copy button marked **1** below, or open **Manage Keys** marked **2**, then **Create** for a dedicated Cursor token. + +![Copy an existing service API token or open Manage Keys](assets/tutorial/get-api-key-en.png) + +4. Name the optional key, for example **Cursor Seedance**. Set expiry and usage/API limits as needed; create it and copy the token. The screenshot's **Dify tutorial** name is a historical example only; use your Cursor-specific name. If Allowed APIs is enabled, allow the actions needed here: `/seedance/videos`, `/seedance/tasks`. + +![Optional dedicated API token creation](assets/tutorial/create-api-key-en.png) + +These are real Ace Applications screenshots reused from the [Suno Dify tutorial](https://github.com/AceDataCloud/SunoDify/blob/8d3d03570e73324220f111f7fe343da0792a8071/README.md), checked on **2026-10-18**; original capture date is not recorded. Key, application ID and balance are obscured. They show Ace credential management, not a Dify step required for Cursor. + +Copy only the service token string: no `Bearer ` prefix, quotation marks or redacted screenshot characters. This is not a platform management token. Never put a token in prompts, source, screenshots or exported examples. + +## 3. Paste the token in Cursor Configure + +Open **Customize → Plugins → Seedance by Ace Data Cloud → Configure** (older versions may show **Seedance**). Paste the token in **Ace Data Cloud API token**, choose **Save**, wait for completion, then reopen Configure to confirm a masked value. Cursor substitutes `ACEDATACLOUD_API_TOKEN`; the plugin adds `Bearer ` and connects to its hosted HTTP MCP. No Python or Node server needs to be started. Reconnect if tools have not loaded. + +The Configure path and variable behavior follow the [official Cursor plugin reference](https://cursor.com/docs/reference/plugins#variables), checked **2026-10-18**. A current Ace-specific Configure screenshot is still pending; the official screenshots below illustrate the subsequent tool approval/result UI, not this token field. + +```json +{ + "mcpServers": { + "seedance": { + "type": "http", + "url": "https://seedance.mcp.acedata.cloud/mcp", + "headers": { + "Authorization": "Bearer ${ACEDATACLOUD_API_TOKEN}" + } + } + } +} +``` + +## 4. Run the first example + +Open Cursor Agent and paste the [first-run prompt](examples/first-run.md). It asks for `seedance_generate_video`, model `doubao-seedance-2-0-mini-260615` and duration 4 seconds, resolution 480p, ratio 16:9, generate_audio false. The sample prompt is `A teal paper cube slowly rotates on a cream studio background. Static camera, no text.`. Verify live model access and price before running. + +Submit with `seedance_generate_video` once. Save the returned `task_id` and use `seedance_get_task` with that same ID until terminal. Pending is not a completed video; open the returned result URL on success. Never regenerate merely to poll. + +Open the returned video and inspect it. In **Ace Data Cloud → Usage/Billing**, match this call to its deducted Credits record. The plugin is free; API calls follow current service pricing. + +## 5. Confirm one tool call and inspect the result + +For a free first connection check, open Agent and ask **“List this plugin's tools without generating anything.”** Then use `seedance_list_models` to inspect available models. Confirm model access and current price before explicitly approving a new generation. Keep generation retries off; if a request times out, inspect the existing task and usage before deciding whether to pay again. + +The following are **unaltered official Cursor screenshots**, downloaded/checked **2026-10-17**. The original example queries PostgreSQL, not Ace; the official page does not state its client version or capture date. They illustrate where to inspect the tool name/arguments and click **Run tool**, then inspect a returned result. They do not prove this plugin has been installed or run. + +![Official Cursor tool approval screenshot; PostgreSQL reference, not an Ace run](assets/tutorial/tool-confirm.png) + +![Official Cursor tool result screenshot; PostgreSQL reference, not an Ace run](assets/tutorial/tool-call.png) + +After an approved generation, query `seedance_get_task` with **`task_id` set to the original task ID**. For example: “Only call `seedance_get_task` with `task_id=`; do not generate again.” Check completion and open your actual returned media URL. An accepted/pending task, a green tool indicator or an example link is not a finished, playable result. Check the corresponding single generation record in Ace Usage/Billing; Cursor/model auxiliary charges are separate. + +Screenshot sources, checksums and reuse boundaries: [image provenance](assets/tutorial/SOURCES.json). + +## Troubleshooting + +| Symptom | Action | +| --- | --- | +| Plugin or tools are missing | Check the Seedance listing, configure the key, and reconnect MCP. | +| 401 or 403 | Check key validity, service access, balance, and Allowed APIs; do not include `Bearer ` in the configured value. | +| Invalid model or argument | Use the live tool schema and a model this account can access. | +| Pending task | Query the original task ID; do not regenerate to poll. | +| 429, timeout, or 5xx | Inspect the original task and usage history before another paid submission. | +| Result URL will not open | Confirm a terminal success and use the URL returned by that call. | + +[Source](https://github.com/AceDataCloud/SeedanceCursor) · [Report a problem](https://github.com/AceDataCloud/SeedanceCursor/issues) · dev@acedata.cloud. The logo reuses an existing Ace Data Cloud integration asset. This tool plugin does not register a Cursor chat-model provider. + +[Register / sign in](https://platform.acedata.cloud/?utm_source=opensource&utm_medium=referral&utm_campaign=evergreen&utm_content=seedance_cursor_shared_readme_register_signin_en) · [Applications / API token](https://platform.acedata.cloud/console/applications?utm_source=opensource&utm_medium=referral&utm_campaign=evergreen&utm_content=seedance_cursor_shared_readme_api_key_en) · [Current Seedance pricing](https://platform.acedata.cloud/models?utm_source=opensource&utm_medium=referral&utm_campaign=evergreen&utm_content=seedance_cursor_shared_readme_pricing_en) diff --git a/third_party/seedance/assets/logo.png b/third_party/seedance/assets/logo.png new file mode 100644 index 000000000..ed3df6a54 Binary files /dev/null and b/third_party/seedance/assets/logo.png differ diff --git a/third_party/seedance/assets/tutorial/SOURCES.json b/third_party/seedance/assets/tutorial/SOURCES.json new file mode 100644 index 000000000..128607eba --- /dev/null +++ b/third_party/seedance/assets/tutorial/SOURCES.json @@ -0,0 +1,51 @@ +{ + "service": "Seedance", + "sources": [ + { + "file": "get-api-key-en.png", + "type": "real_ace_console_screenshot", + "source_url": "https://raw.githubusercontent.com/AceDataCloud/SunoDify/8d3d03570e73324220f111f7fe343da0792a8071/_assets/tutorial/get-api-key-en.png", + "official_page_url": "https://github.com/AceDataCloud/SunoDify/blob/8d3d03570e73324220f111f7fe343da0792a8071/README.md", + "checked_at": "2026-10-18", + "original_capture_date": "not recorded", + "edit_date": null, + "limits": "Original token/ID/balance obscured; Dify tutorial key name is an example, use Cursor-specific name.", + "sha256": "b63787f2bd15af82fef9ab61c99e11c454355ac86e91f7f94559386b795069b7" + }, + { + "file": "create-api-key-en.png", + "type": "real_ace_console_screenshot", + "source_url": "https://raw.githubusercontent.com/AceDataCloud/SunoDify/8d3d03570e73324220f111f7fe343da0792a8071/_assets/tutorial/create-api-key-en.png", + "official_page_url": "https://github.com/AceDataCloud/SunoDify/blob/8d3d03570e73324220f111f7fe343da0792a8071/README.md", + "checked_at": "2026-10-18", + "original_capture_date": "not recorded", + "edit_date": null, + "limits": "Original token/ID/balance obscured; Dify tutorial key name is an example, use Cursor-specific name.", + "sha256": "5411ffe75d8a8efa6806a78fc68fce6a20735225d8e9818c94bbc238da4f4590" + }, + { + "file": "tool-confirm.png", + "type": "official_screenshot", + "source_url": "https://cursor.com/docs-static/images/context/mcp/tool-confirm.png", + "official_page_url": "https://cursor.com/docs/mcp", + "checked_at": "2026-10-18", + "original_capture_date": "not recorded", + "edit_date": null, + "limits": "PostgreSQL official reference, not Ace execution.", + "sha256": "0404c2a6e15a83817cf7dd08b177097c835316345e4af629e411ecc369ec7f09" + }, + { + "file": "tool-call.png", + "type": "official_screenshot", + "source_url": "https://cursor.com/docs-static/images/context/mcp/tool-call.png", + "official_page_url": "https://cursor.com/docs/mcp", + "checked_at": "2026-10-18", + "original_capture_date": "not recorded", + "edit_date": null, + "limits": "PostgreSQL official reference, not Ace execution.", + "sha256": "af88bda0de0929b73a955883b0b79ee394ee2f94d96e18329b0fa6db636529e7" + } + ], + "credential_values_present": false, + "current_configure_screenshot": "pending native UI capture, not substituted with a fake screenshot" +} diff --git a/third_party/seedance/assets/tutorial/create-api-key-en.png b/third_party/seedance/assets/tutorial/create-api-key-en.png new file mode 100644 index 000000000..dce66e2ef Binary files /dev/null and b/third_party/seedance/assets/tutorial/create-api-key-en.png differ diff --git a/third_party/seedance/assets/tutorial/get-api-key-en.png b/third_party/seedance/assets/tutorial/get-api-key-en.png new file mode 100644 index 000000000..0cbf4175a Binary files /dev/null and b/third_party/seedance/assets/tutorial/get-api-key-en.png differ diff --git a/third_party/seedance/assets/tutorial/tool-call.png b/third_party/seedance/assets/tutorial/tool-call.png new file mode 100644 index 000000000..1a9a1b9d5 Binary files /dev/null and b/third_party/seedance/assets/tutorial/tool-call.png differ diff --git a/third_party/seedance/assets/tutorial/tool-confirm.png b/third_party/seedance/assets/tutorial/tool-confirm.png new file mode 100644 index 000000000..c5426eee8 Binary files /dev/null and b/third_party/seedance/assets/tutorial/tool-confirm.png differ diff --git a/third_party/seedance/docs/local-review.md b/third_party/seedance/docs/local-review.md new file mode 100644 index 000000000..cd8dad36c --- /dev/null +++ b/third_party/seedance/docs/local-review.md @@ -0,0 +1,55 @@ +# Seedance: pinned local candidate review / 固定候选本地审查 + +2026-10-19. This procedure prepares and loads an **unpublished source candidate**. It is not a Marketplace install, publisher approval, or proof of a completed service call. The public route remains [the existing official submission](https://github.com/cursor/plugins/pull/549). + +## Preconditions and exact source + +- Read the current **OPEN** source PR (https://github.com/AceDataCloud/SeedanceCursor/pull/2) and record its current commit SHA. Use that exact commit in your dedicated source checkout; do not assume `main` contains candidate README/manifest changes. Record `git rev-parse HEAD`, client version and source origin in the review receipt. +- In Cursor **Customize**, first check whether a Marketplace plugin with the same name `seedance` is already installed. Cursor gives it precedence over the local copy. Do not remove or change the user's installed plugin silently; use an already authorized isolated profile/project or report the collision. +- On Teams/Enterprise, **Allow Local Plugin Imports** is an administrator policy under Dashboard → Settings → Security & Identity → Marketplace and Plugins (off by default on Enterprise). If disabled, stop and report it; do not bypass policy or expand access. +- Do not point `~/.cursor/plugins/local/seedance` at this external Git checkout with a symlink: Cursor skips such symlinks. Use the physical tracked-file copy below. Never put a token in the candidate files. + +## Copy the tracked candidate without overwriting existing state + +Run inside the isolated source checkout at the verified commit. The shell stops on an existing destination, including a broken symlink. The command deliberately copies only Git-tracked files; local `.env`, user settings, caches and untracked credentials are excluded. + +```sh +set -eu +candidate_commit=$(git rev-parse HEAD) +candidate_stage=$(mktemp -d "${TMPDIR:-/tmp}/seedance-cursor-review.XXXXXX") +git archive --format=tar "$candidate_commit" | tar -xf - -C "$candidate_stage" +test -f "$candidate_stage/.cursor-plugin/plugin.json" +test -f "$candidate_stage/mcp.json" +printf 'Candidate commit: %s\nStaged files: %s\n' "$candidate_commit" "$candidate_stage" +local_plugin_dir="$HOME/.cursor/plugins/local/seedance" +if [ -e "$local_plugin_dir" ] || [ -L "$local_plugin_dir" ]; then + printf 'Stop: destination already exists: %s\n' "$local_plugin_dir" >&2 + exit 1 +fi +mkdir -p "$HOME/.cursor/plugins/local" +cp -R "$candidate_stage" "$local_plugin_dir" +``` + +If staging completed but copying stopped, retain the temporary path and receipt; do not force-delete or overwrite an existing installation. Reviewers may inspect the staged directory without launching Cursor. This plugin is Git-distributed and has no build step or local Python/Node worker to run. + +## Load, Configure, and verify a free boundary + +1. Restart Cursor or run **Developer: Reload Window**. Open **Customize** and confirm `Seedance by Ace Data Cloud`, manifest version **1.0.1**, one HTTP MCP and the expected Skill. Verify the installed files match your pinned commit, not the old `main` or a same-name Marketplace item. +2. Open the plugin **Configure**. With no key, only record the credential field/required-value behavior; do not claim authenticated access. Do not submit a billable tool just to test a missing token. +3. If an existing authorized service token is already available, paste only its value into **Ace Data Cloud API token**, click **Save**, wait, reopen, and confirm masking. Never place the token in chat, a JSON file, an exported profile or a screenshot. If policy disallows storage/import, stop. +4. For authorized free validation, enable only the existing-task retrieval or free metadata tool from the read-only prompt in the coordinator receipt. Use a task belonging to the existing credential, query the original successful ID, and do not generate, search, transform, or retry a paid action. Current service access, API restrictions and balance still apply. +5. Capture the actual source/client version, installation origin, masked Configure field, tool name/arguments, cancellation/error behavior and returned terminal fields. A tool-cancel before approval proves only cancellation, not a service result. Token rejection/403/429/timeout must remain distinguishable; after an ambiguous generation timeout, query the original ID/history rather than resubmit. + +The copied files contain **configuration variable names only**, not secret values. `mcp.json` keeps the Authorization header template; Configure supplies the value. The UI rendering and persistence of that value require actual Cursor verification; a valid manifest or reference screenshot does not establish them. + +## 中文操作摘要 + +1. 从原源码PR读取当前commit,在隔离源码目录固定该SHA;不要用尚未合并增强的main充当候选。 +2. 先查同名市场插件和本地目录,企业本地导入策略关闭时停止;不卸载用户插件、不擅改管理员策略。外部仓库软链接会被跳过。 +3. 上方命令把Git已跟踪文件放入临时目录,再在目标不存在时物理复制到`~/.cursor/plugins/local/seedance`。不复制`.env`、缓存或未跟踪凭据;有目标或软链接就停止,不能覆盖。 +4. Reload Window/重启后,在Customize核插件名称/1.0.1、HTTP MCP、Skill以及文件commit。真实Configure只填已有合法服务Token并核遮蔽保存;无Key只能核空值行为。 +5. 仅在既有授权范围查询原成功任务或免费元数据;生成、搜索、图像/人像变换和自动重试都保持关闭。记录真实确认、取消、错误及返回值。准备包/静态通过不能替代Cursor原生安装/调用,当前Configure实拍仍待补。 + +## Official basis / 官方依据 + +[Cursor Plugins — Test plugins locally](https://cursor.com/docs/plugins#test-plugins-locally), read **2026-10-19**: physical plugin folder, manifest, reload, allowed local imports, installed-plugin precedence and in-folder-only symlink rule. [Variables](https://cursor.com/docs/reference/plugins#variables): manifest declares variable names, not secret values; users supply them in Configure. Follow the labels in the actual recorded client version. diff --git a/third_party/seedance/examples/first-run.md b/third_party/seedance/examples/first-run.md new file mode 100644 index 000000000..566524c58 --- /dev/null +++ b/third_party/seedance/examples/first-run.md @@ -0,0 +1,5 @@ +# First Seedance run + +Copy this into Cursor Agent after installing and configuring the plugin. No key is included. + +> Use the seedance MCP tool seedance_generate_video for one video request. I checked the current Ace Data Cloud price and balance. Use model doubao-seedance-2-0-mini-260615 if this account offers it. Set duration 4 seconds, resolution 480p, ratio 16:9, generate_audio false. Set prompt to A teal paper cube slowly rotates on a cream studio background. Static camera, no text.. Submit at most once, keep the task ID, query it using seedance_get_task until terminal, and open the completed result. If pending, report the ID so I can resume without a second generation. diff --git a/third_party/seedance/mcp.json b/third_party/seedance/mcp.json new file mode 100644 index 000000000..81bb56816 --- /dev/null +++ b/third_party/seedance/mcp.json @@ -0,0 +1,11 @@ +{ + "mcpServers": { + "seedance": { + "type": "http", + "url": "https://seedance.mcp.acedata.cloud/mcp", + "headers": { + "Authorization": "Bearer ${ACEDATACLOUD_API_TOKEN}" + } + } + } +} diff --git a/third_party/seedance/readme/README_zh_Hans.md b/third_party/seedance/readme/README_zh_Hans.md new file mode 100644 index 000000000..96488435c --- /dev/null +++ b/third_party/seedance/readme/README_zh_Hans.md @@ -0,0 +1,74 @@ +# Seedance by Ace Data Cloud:Cursor 接入教程 + +这是由 **Ace Data Cloud** 维护的独立 **Seedance** 工具插件,提供文生视频、图生视频与任务查询;不冒充服务品牌或 Cursor 官方插件。通过托管 MCP 连接,在 Configure 中保存自己的服务 API Token 后,可在 Cursor Agent 里使用,无需启动本地服务。 + +Generate Seedance videos and retrieve the finished clip. 插件复用 [Ace Data Cloud seedance MCP](https://github.com/AceDataCloud/MCPs/tree/main/seedance),并提供专用 Agent skill。实际工具参数和限制以在线 MCP schema 为准。 + +[English guide](../README.md) · [可复制的首跑提示词](../examples/first-run.md) · [当前价格](https://platform.acedata.cloud/models?utm_source=opensource&utm_medium=referral&utm_campaign=evergreen&utm_content=seedance_cursor_shared_readme_pricing_zh_hans) + +## 1. 搜索并安装独立 Seedance 插件 + +打开 [Cursor 官方插件市场](https://cursor.com/marketplace)或 Cursor 的 **Customize**,搜索 **Seedance**(亦可搜 seedance, video generation, text to video),核对显示名 **Seedance by Ace Data Cloud**、作者 **Ace Data Cloud Dev**,选择 **Install** 以及项目/用户范围。Cursor 3.24 曾使用 **Customize → Browse Marketplace → Add**,以所装版本为准。安装本插件不依赖 Ace 合集。 + +**发布状态:**[官方收录申请](https://github.com/cursor/plugins/pull/549)仍待审核;源码公开或检查成功不等于市场已上架。准确条目不存在时,不要安装同名无关插件。可选的`~/.cursor/plugins/local/seedance/`源码本地审查属于手动路径,不能计作官方分发。本插件提供工具,不会在 Cursor 聊天模型服务商列表新增 Ace 预设。 + +准确官方条目尚未发布时,按[固定候选本地审查步骤](../docs/local-review.md)复制已跟踪文件并记录commit,不猜市场地址。加载前核已有安装、允许本地导入,再Reload;指向外部源码目录的软链接会被跳过,同名市场安装优先。本地加载不计官方安装成功。 + +## 2. 注册/登录并取得服务 API Token + +1. 打开 [Ace Data Cloud](https://platform.acedata.cloud/?utm_source=opensource&utm_medium=referral&utm_campaign=evergreen&utm_content=seedance_cursor_shared_readme_register_signin_zh_hans)注册或登录,再进入 [Applications 应用管理](https://platform.acedata.cloud/console/applications?utm_source=opensource&utm_medium=referral&utm_campaign=evergreen&utm_content=seedance_cursor_shared_readme_api_key_zh_hans);若尚无通用应用,先点 **Initialize General Application**。 +2. 打开 **General application**,或已开通 **Seedance** 的专用应用;生成前确认权限、余额及[当前价格](https://platform.acedata.cloud/models?utm_source=opensource&utm_medium=referral&utm_campaign=evergreen&utm_content=seedance_cursor_shared_readme_pricing_zh_hans)。 +3. 使用下图标记 **1** 的复制按钮取已有 API Key;需要独立 Cursor 凭据时,点标记 **2** 的 **Manage Keys → Create**。 + +![复制已有服务Token或进入Manage Keys](../assets/tutorial/get-api-key-en.png) + +4. 可选新Key命名为 **Cursor Seedance**,按需设置有效期、用量/API限制,创建后复制。截图里的 **Dify tutorial** 是历史示例名称,实际请填自己的Cursor名称。启用 Allowed APIs 时允许所需接口:`/seedance/videos`, `/seedance/tasks`。 + +![可选的独立API Token创建窗口](../assets/tutorial/create-api-key-en.png) + +以上是复用[原Suno Dify教程](https://github.com/AceDataCloud/SunoDify/blob/8d3d03570e73324220f111f7fe343da0792a8071/README.md)的真实Ace应用管理截图,**2026-10-18核验**,原拍摄日期未记录;Key、应用ID和余额均已遮蔽。它展示Ace凭据管理,不要求为Cursor使用Dify。 + +只复制Token原文,不加`Bearer `、引号或图中遮蔽字符;不要使用平台管理token。不要把Key写进提示词、源码、截图或导出样例。 + +## 3. 粘贴到 Cursor Configure + +打开 **Customize → Plugins → Seedance by Ace Data Cloud → Configure**(旧版本可能只显示 **Seedance**),将Token填到 **Ace Data Cloud API token**,点 **Save**,等保存完成后重开确认遮蔽值。Cursor替换`ACEDATACLOUD_API_TOKEN`,插件自行添加`Bearer `并连接托管HTTP MCP,无需启动本地Python/Node服务。工具未加载时重新连接。 + +路径和变量行为依据 **2026-10-18**读取的[Cursor官方插件说明](https://cursor.com/docs/reference/plugins#variables)。本插件当前版本的Configure真实截图仍待补;下方官方图只演示后续工具确认和结果区域,不是此Token输入框。 + +## 4. 首次调用 + +在 Cursor Agent 中复制[首跑提示词](../examples/first-run.md)。它使用 `seedance_generate_video`,模型 `doubao-seedance-2-0-mini-260615`,参数为 duration 4 seconds, resolution 480p, ratio 16:9, generate_audio false,prompt 为 `A teal paper cube slowly rotates on a cream studio background. Static camera, no text.`。执行前核对当前模型权限和价格;字段变化时以在线工具 schema 为准。 + +只用 `seedance_generate_video` 提交一次,保存返回的 `task_id`,随后用同一 ID 调用 `seedance_get_task` 直到终态。pending 不代表已完成;成功后打开结果地址。不要为轮询重新生成。 + +打开返回的video结果并检查。在 **Ace Data Cloud → Usage/Billing** 核对本次调用对应的 Credits 扣费;插件免费,API 按当前服务价格计费。 + +## 5. 确认一次工具调用并检查结果 + +首次免费连接检查可在Agent说:“仅列出本插件工具,不要生成任何内容。”随后用`seedance_list_models`查看可用模型。新生成前核权限、现价并明确同意一次提交;关闭生成自动重试,超时先查原任务和用量,不自动另付一笔。 + +以下为**未经改动的Cursor官方真实截图**,于**2026-10-17**下载核验;原示例查询PostgreSQL,并非Ace,官方未注明截图版本/拍摄日期。它说明检查工具名/参数、点 **Run tool** 及查看返回值的位置,不证明本插件已安装或实测。 + +![Cursor官方工具确认图:PostgreSQL参考,非Ace运行](../assets/tutorial/tool-confirm.png) + +![Cursor官方工具结果图:PostgreSQL参考,非Ace运行](../assets/tutorial/tool-call.png) + +一次已批准生成后,仅用`seedance_get_task`的 **`task_id`参数传原任务ID**。例如:“只调用`seedance_get_task`,`task_id=<我的任务ID>`,不要再次生成。”确认成功终态,再打开自己实际返回的媒体URL。任务受理/pending、绿色工具标记或示例链接均不等于最终可播放结果。到Ace Usage/Billing核同一次生成的账单;Cursor和辅助模型费用另计。 + +[截图来源、校验值及复用边界](../assets/tutorial/SOURCES.json)。 + +## 排障 + +| 现象 | 处理 | +| --- | --- | +| 找不到插件或工具 | 核对 Seedance 条目、配置 Key 并重连 MCP。 | +| 401 或 403 | 检查 Key、服务权限、余额和 Allowed APIs;配置值不要带 `Bearer `。 | +| 模型或参数错误 | 以在线 MCP schema 和账户可用模型为准。 | +| 任务 pending | 沿原 task ID 查询,不要为轮询重新生成。 | +| 429、超时或 5xx | 先检查原任务和用量记录,再决定是否再次付费提交。 | +| 结果无法打开 | 确认终态成功,打开该次调用返回的地址。 | + +[源码](https://github.com/AceDataCloud/SeedanceCursor) · [问题反馈](https://github.com/AceDataCloud/SeedanceCursor/issues) · dev@acedata.cloud。图标复用 Ace Data Cloud 现有集成资源。本插件提供工具,不注册 Cursor 聊天模型 Provider。 + +[注册/登录](https://platform.acedata.cloud/?utm_source=opensource&utm_medium=referral&utm_campaign=evergreen&utm_content=seedance_cursor_shared_readme_register_signin_zh_hans) · [Applications / API Token](https://platform.acedata.cloud/console/applications?utm_source=opensource&utm_medium=referral&utm_campaign=evergreen&utm_content=seedance_cursor_shared_readme_api_key_zh_hans) · [当前Seedance价格](https://platform.acedata.cloud/models?utm_source=opensource&utm_medium=referral&utm_campaign=evergreen&utm_content=seedance_cursor_shared_readme_pricing_zh_hans) diff --git a/third_party/seedance/skills/seedance/SKILL.md b/third_party/seedance/skills/seedance/SKILL.md new file mode 100644 index 000000000..cdc3b4fd7 --- /dev/null +++ b/third_party/seedance/skills/seedance/SKILL.md @@ -0,0 +1,14 @@ +--- +name: seedance +description: Use Seedance through the Ace Data Cloud MCP server in Cursor. Use for Seedance video work or an existing task query. +--- + +# Seedance in Cursor + +This skill adapts the [existing Ace Data Cloud skill](https://github.com/AceDataCloud/Skills/tree/main/skills/seedance-video). The live MCP schema is the source of truth for arguments and models. + +1. Check [current price, balance, and service access](https://platform.acedata.cloud/models) before a paid call. +2. Submit with `seedance_generate_video` once. Save the returned `task_id` and use `seedance_get_task` with that same ID until terminal. Pending is not a completed video; open the returned result URL on success. Never regenerate merely to poll. +3. Return the result, task ID if present, and any service error. Keep the API token out of chat and files. + +Configure `ACEDATACLOUD_API_TOKEN` in **Customize → Plugins → Seedance → Configure**. See the [first-run guide](../../README.md).