@acedatacloud/n8n-nodes-seedance 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 Ace Data Cloud
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
package/README.md ADDED
@@ -0,0 +1,77 @@
1
+ # Seedance by AceDataCloud — n8n community node
2
+
3
+ Use [Seedance through AceDataCloud](https://platform.acedata.cloud/documents/seedance-videos) in your n8n workflows.
4
+
5
+ This package is maintained by **Ace Data Cloud** and connects to **AceDataCloud's API**. It is an AceDataCloud integration, not an official node from ByteDance. You need an AceDataCloud account and a token for the corresponding service; a direct Seedance subscription is not an AceDataCloud API credential.
6
+
7
+ Package: `@acedatacloud/n8n-nodes-seedance` · License: MIT.
8
+
9
+ ## Installation
10
+
11
+ On self-hosted n8n, open **Settings → Community Nodes → Install**, enter `@acedatacloud/n8n-nodes-seedance`, and install. See [n8n's installation guide](https://docs.n8n.io/integrations/community-nodes/installation-and-management/).
12
+
13
+ n8n Cloud requires verified community nodes. Publishing this package to npm does not grant verification. Check the n8n node panel for current availability; this repository does not claim verified status.
14
+
15
+ ## Credentials
16
+
17
+ 1. Sign in to [AceDataCloud](https://platform.acedata.cloud).
18
+ 2. Open the [Seedance service documentation](https://platform.acedata.cloud/documents/seedance-videos) and acquire service access.
19
+ 3. Create a **Seedance by AceDataCloud API** credential in n8n and enter that service's API token.
20
+
21
+ The token is stored in n8n's credential store and sent as a Bearer token only to `https://api.acedata.cloud`. The credential test queries an empty batch of tasks; it does not create media. Use a service API token, not a platform management token. Different services may require different credentials.
22
+
23
+ ## Operations
24
+
25
+ | Resource | Operation | Result |
26
+ | --- | --- | --- |
27
+ | Video | Create | Submits a generation task and returns its task ID |
28
+ | Task | Get | Returns a task's state and final result |
29
+ | Task | Get Many | Queries up to 50 comma-separated task IDs |
30
+
31
+ Video creation supports text-to-video and image-to-video with a first frame and optional last frame, model selection, aspect ratio, resolution, duration, and optional audio. Model capabilities differ; this initial node exposes a focused subset of the API.
32
+
33
+ ## Generate and wait for a result
34
+
35
+ Import [`examples/generate-and-wait.json`](examples/generate-and-wait.json), assign your credential to both Seedance nodes, and edit the prompt and model in **Create**.
36
+
37
+ The template submits once, then queries the returned task every 15 seconds. A separate 30-minute deadline bounds the loop. A failed task or deadline ends with an explicit failure; a completed task exposes the final media in `data`. The deadline does not cancel an already submitted service task; its ID remains available in the execution history.
38
+
39
+ With **Simplify** enabled:
40
+
41
+ - Create returns `taskId`, `status: "submitted"`, `finished: false`, `successful: null`, and `traceId`.
42
+ - Task Get returns `taskId`, `status` (`processing`, `succeeded`, or `failed`), `finished`, `successful`, `data`, `error`, and `traceId`.
43
+ - The video URL is typically in `data.content.video_url`.
44
+
45
+ Disable **Simplify** to receive the raw API response. A submission acknowledgment is not a completed generation.
46
+
47
+ ## Billing, retries, and limits
48
+
49
+ Generation uses your AceDataCloud balance. Check current pricing and supported model options on the service page before running a workflow. The node keeps the selected model; it never substitutes another model.
50
+
51
+ Creation requests are not automatically retried. Re-running **Create**, enabling n8n's retry-on-fail setting on it, or restarting the workflow can create another paid task. After a timeout, inspect your existing task and use **Task → Get** where possible. Query operations can be retried without resubmitting generation.
52
+
53
+ Each incoming n8n item creates or queries one request; a batch of input items can create multiple paid tasks. A failed task is returned as `finished: true` and `successful: false` so your workflow can handle it. Authentication, request validation, and HTTP errors fail the node unless you configure n8n to continue on error.
54
+
55
+ ## Data handling
56
+
57
+ The node sends only the configured generation/query parameters to AceDataCloud. Prompts and media URLs are processed by the service. Public input media URLs must be accessible to the API. This package has no runtime dependencies beyond n8n's own workflow API, no telemetry, and no filesystem or environment-variable access in its node implementation.
58
+
59
+ ## Development
60
+
61
+ The package follows the official [n8n node starter](https://github.com/n8n-io/n8n-nodes-starter) structure and uses `@n8n/node-cli` for building and linting. The programmatic style keeps conditional media payloads, asynchronous task-state interpretation, and per-item output mapping explicit; all HTTP calls still use n8n’s authenticated request helper.
62
+
63
+ ```sh
64
+ pnpm install --frozen-lockfile
65
+ pnpm run build
66
+ pnpm run lint
67
+ pnpm test
68
+ pnpm run dev
69
+ ```
70
+
71
+ Node.js 24 is used in CI. Tests exercise request payloads, task state handling, result mapping, credential configuration, item linking, and failures with a mocked HTTP boundary; they do not incur generation charges. CI also loads the compiled package in the official n8n 2.42.3 image and verifies that workflow execution reaches credential validation without sending a generation request.
72
+
73
+ Releases run from merged code through [GitHub Actions](.github/workflows/publish.yml) using `npm publish --provenance`. Open a pull request, pass CI, merge, and push a matching version tag, or run the Publish workflow on `main`. Keep the npm version immutable after publication.
74
+
75
+ ## Support
76
+
77
+ Report integration issues at [AceDataCloud/SeedanceN8N](https://github.com/AceDataCloud/SeedanceN8N/issues). Include the package version, n8n version, operation, and a redacted error. Never include API tokens or private generation content.
@@ -0,0 +1,10 @@
1
+ import type { IAuthenticateGeneric, ICredentialTestRequest, ICredentialType, INodeProperties } from 'n8n-workflow';
2
+ export declare class AceDataSeedanceApi implements ICredentialType {
3
+ name: string;
4
+ displayName: string;
5
+ documentationUrl: string;
6
+ icon: "file:../nodes/Seedance/acedatacloud.svg";
7
+ properties: INodeProperties[];
8
+ authenticate: IAuthenticateGeneric;
9
+ test: ICredentialTestRequest;
10
+ }
@@ -0,0 +1,36 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.AceDataSeedanceApi = void 0;
4
+ class AceDataSeedanceApi {
5
+ constructor() {
6
+ this.name = 'aceDataSeedanceApi';
7
+ this.displayName = 'Seedance by AceDataCloud API';
8
+ this.documentationUrl = 'https://github.com/AceDataCloud/SeedanceN8N#credentials';
9
+ this.icon = 'file:../nodes/Seedance/acedatacloud.svg';
10
+ this.properties = [
11
+ {
12
+ displayName: 'API Token',
13
+ name: 'apiToken',
14
+ type: 'string',
15
+ typeOptions: { password: true },
16
+ default: '',
17
+ required: true,
18
+ description: 'The API token for your Seedance service on AceDataCloud',
19
+ },
20
+ ];
21
+ this.authenticate = {
22
+ type: 'generic',
23
+ properties: { headers: { Authorization: '=Bearer {{$credentials.apiToken}}' } },
24
+ };
25
+ this.test = {
26
+ request: {
27
+ baseURL: 'https://api.acedata.cloud',
28
+ url: '/seedance/tasks',
29
+ method: 'POST',
30
+ body: { action: 'retrieve_batch', ids: [] },
31
+ },
32
+ };
33
+ }
34
+ }
35
+ exports.AceDataSeedanceApi = AceDataSeedanceApi;
36
+ //# sourceMappingURL=AceDataSeedanceApi.credentials.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AceDataSeedanceApi.credentials.js","sourceRoot":"","sources":["../../credentials/AceDataSeedanceApi.credentials.ts"],"names":[],"mappings":";;;AAOA,MAAa,kBAAkB;IAA/B;QACC,SAAI,GAAG,oBAAoB,CAAC;QAC5B,gBAAW,GAAG,8BAA8B,CAAC;QAC7C,qBAAgB,GAAG,yDAAyD,CAAC;QAC7E,SAAI,GAAG,yCAAkD,CAAC;QAC1D,eAAU,GAAsB;YAC/B;gBACC,WAAW,EAAE,WAAW;gBACxB,IAAI,EAAE,UAAU;gBAChB,IAAI,EAAE,QAAQ;gBACd,WAAW,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE;gBAC/B,OAAO,EAAE,EAAE;gBACX,QAAQ,EAAE,IAAI;gBACd,WAAW,EAAE,yDAAyD;aACtE;SACD,CAAC;QACF,iBAAY,GAAyB;YACpC,IAAI,EAAE,SAAS;YACf,UAAU,EAAE,EAAE,OAAO,EAAE,EAAE,aAAa,EAAE,mCAAmC,EAAE,EAAE;SAC/E,CAAC;QACF,SAAI,GAA2B;YAC9B,OAAO,EAAE;gBACR,OAAO,EAAE,2BAA2B;gBACpC,GAAG,EAAE,iBAAiB;gBACtB,MAAM,EAAE,MAAM;gBACd,IAAI,EAAE,EAAE,MAAM,EAAE,gBAAgB,EAAE,GAAG,EAAE,EAAE,EAAE;aAC3C;SACD,CAAC;IACH,CAAC;CAAA;AA5BD,gDA4BC"}
@@ -0,0 +1,5 @@
1
+ import type { IExecuteFunctions, INodeExecutionData, INodeType, INodeTypeDescription } from 'n8n-workflow';
2
+ export declare class Seedance implements INodeType {
3
+ description: INodeTypeDescription;
4
+ execute(this: IExecuteFunctions): Promise<INodeExecutionData[][]>;
5
+ }
@@ -0,0 +1,114 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Seedance = void 0;
4
+ const n8n_workflow_1 = require("n8n-workflow");
5
+ const helpers_1 = require("./helpers");
6
+ const properties_1 = require("./properties");
7
+ class Seedance {
8
+ constructor() {
9
+ this.description = {
10
+ displayName: 'Seedance by AceDataCloud',
11
+ name: 'seedance',
12
+ icon: { light: 'file:acedatacloud.svg', dark: 'file:acedatacloud.dark.svg' },
13
+ group: ['transform'],
14
+ version: 1,
15
+ subtitle: '={{$parameter["operation"] + ": " + $parameter["resource"]}}',
16
+ description: 'Create videos and retrieve generation tasks through AceDataCloud',
17
+ defaults: { name: 'Seedance by AceDataCloud' },
18
+ inputs: [n8n_workflow_1.NodeConnectionTypes.Main],
19
+ outputs: [n8n_workflow_1.NodeConnectionTypes.Main],
20
+ usableAsTool: true,
21
+ credentials: [{ name: 'aceDataSeedanceApi', required: true }],
22
+ properties: properties_1.properties,
23
+ };
24
+ }
25
+ async execute() {
26
+ const items = this.getInputData();
27
+ const result = [];
28
+ for (let index = 0; index < items.length; index++) {
29
+ try {
30
+ const resource = this.getNodeParameter('resource', index);
31
+ const operation = this.getNodeParameter('operation', index);
32
+ const simplify = this.getNodeParameter('simplify', index, true);
33
+ if (resource === 'task') {
34
+ let body;
35
+ if (operation === 'get') {
36
+ body = {
37
+ action: 'retrieve',
38
+ id: (0, helpers_1.requiredText)(this.getNodeParameter('taskId', index), 'Task ID'),
39
+ };
40
+ }
41
+ else if (operation === 'getMany') {
42
+ const ids = (0, helpers_1.requiredText)(this.getNodeParameter('taskIds', index), 'Task IDs')
43
+ .split(',')
44
+ .map((id) => id.trim())
45
+ .filter(Boolean);
46
+ if (!ids.length || ids.length > 50)
47
+ throw new n8n_workflow_1.NodeOperationError(this.getNode(), 'Provide between 1 and 50 task IDs');
48
+ body = { action: 'retrieve_batch', ids };
49
+ }
50
+ else {
51
+ throw new n8n_workflow_1.NodeOperationError(this.getNode(), 'Select a supported task operation');
52
+ }
53
+ const response = await (0, helpers_1.request)(this, 'aceDataSeedanceApi', '/seedance/tasks', body);
54
+ const records = operation === 'getMany' ? response.items : [response];
55
+ if (!Array.isArray(records))
56
+ throw new n8n_workflow_1.NodeOperationError(this.getNode(), 'The service returned an unexpected task list');
57
+ const valid = records.map((record) => (0, helpers_1.object)(record));
58
+ if (valid.some((record) => !record.id && !record.task_id))
59
+ throw new n8n_workflow_1.NodeOperationError(this.getNode(), 'The task was not found. Check the task ID and service credential');
60
+ result.push(...(0, helpers_1.output)(this, valid.map((record) => (simplify ? (0, helpers_1.taskResult)(record) : record)), index));
61
+ }
62
+ else {
63
+ if (resource !== 'video' || operation !== 'create')
64
+ throw new n8n_workflow_1.NodeOperationError(this.getNode(), 'Select a supported operation');
65
+ const prompt = (0, helpers_1.requiredText)(this.getNodeParameter('prompt', index), 'Prompt');
66
+ const options = (0, helpers_1.object)(this.getNodeParameter('options', index, {}));
67
+ const mode = this.getNodeParameter('inputMode', index, 'text');
68
+ const content = [{ type: 'text', text: prompt }];
69
+ if (mode === 'image') {
70
+ const imageUrl = (0, helpers_1.requiredText)(this.getNodeParameter('imageUrl', index), 'First Frame URL');
71
+ if (!/^https?:\/\//i.test(imageUrl))
72
+ throw new n8n_workflow_1.NodeOperationError(this.getNode(), 'First Frame URL must use HTTP or HTTPS');
73
+ content.push({ type: 'image_url', role: 'first_frame', image_url: { url: imageUrl } });
74
+ if (typeof options.lastFrameUrl === 'string' && options.lastFrameUrl.trim()) {
75
+ const url = options.lastFrameUrl.trim();
76
+ if (!/^https?:\/\//i.test(url))
77
+ throw new n8n_workflow_1.NodeOperationError(this.getNode(), 'Last Frame URL must use HTTP or HTTPS');
78
+ content.push({ type: 'image_url', role: 'last_frame', image_url: { url } });
79
+ }
80
+ }
81
+ else if (mode !== 'text') {
82
+ throw new n8n_workflow_1.NodeOperationError(this.getNode(), 'Select a supported input mode');
83
+ }
84
+ const body = {
85
+ model: this.getNodeParameter('model', index),
86
+ content,
87
+ async: true,
88
+ duration: this.getNodeParameter('duration', index, 5),
89
+ resolution: this.getNodeParameter('resolution', index, '720p'),
90
+ ratio: this.getNodeParameter('ratio', index, '16:9'),
91
+ };
92
+ if (typeof body.duration !== 'number' ||
93
+ !Number.isInteger(body.duration) ||
94
+ body.duration < 4 ||
95
+ body.duration > 15)
96
+ throw new n8n_workflow_1.NodeOperationError(this.getNode(), 'Duration must be a whole number between 4 and 15 seconds');
97
+ if (typeof options.generateAudio === 'boolean')
98
+ body.generate_audio = options.generateAudio;
99
+ if (typeof options.returnLastFrame === 'boolean')
100
+ body.return_last_frame = options.returnLastFrame;
101
+ const response = await (0, helpers_1.request)(this, 'aceDataSeedanceApi', '/seedance/videos', body);
102
+ const normalized = (0, helpers_1.submissionResult)(response);
103
+ result.push(...(0, helpers_1.output)(this, [simplify ? normalized : response], index));
104
+ }
105
+ }
106
+ catch (error) {
107
+ result.push((0, helpers_1.failure)(this, error, index));
108
+ }
109
+ }
110
+ return [result];
111
+ }
112
+ }
113
+ exports.Seedance = Seedance;
114
+ //# sourceMappingURL=Seedance.node.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Seedance.node.js","sourceRoot":"","sources":["../../../nodes/Seedance/Seedance.node.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,13 @@
1
+ {
2
+ "node": "@acedatacloud/n8n-nodes-seedance.seedance",
3
+ "nodeVersion": "1.0",
4
+ "codexVersion": "1.0",
5
+ "categories": ["Marketing & Content"],
6
+ "resources": {
7
+ "primaryDocumentation": [
8
+ {
9
+ "url": "https://github.com/AceDataCloud/SeedanceN8N#readme"
10
+ }
11
+ ]
12
+ }
13
+ }
@@ -0,0 +1 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" width="64" height="64" viewBox="0 0 64 64"><rect width="64" height="64" rx="14" fill="#76A5FF"/><path d="M14 47 28 17h8l14 30h-9l-3-7H26l-3 7zm15-15h6l-3-8z" fill="#0B1530"/></svg>
@@ -0,0 +1 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" width="64" height="64" viewBox="0 0 64 64"><rect width="64" height="64" rx="14" fill="#246BFD"/><path d="M14 47 28 17h8l14 30h-9l-3-7H26l-3 7zm15-15h6l-3-8z" fill="white"/></svg>
@@ -0,0 +1,8 @@
1
+ import type { IDataObject, IExecuteFunctions, INodeExecutionData } from 'n8n-workflow';
2
+ export declare function requiredText(value: unknown, name: string): string;
3
+ export declare function object(value: unknown): IDataObject;
4
+ export declare function taskResult(record: IDataObject): IDataObject;
5
+ export declare function submissionResult(response: IDataObject): IDataObject;
6
+ export declare function request(context: IExecuteFunctions, credential: string, endpoint: string, body: IDataObject): Promise<IDataObject>;
7
+ export declare function output(context: IExecuteFunctions, data: IDataObject[], index: number): INodeExecutionData[];
8
+ export declare function failure(context: IExecuteFunctions, error: unknown, index: number): INodeExecutionData;
@@ -0,0 +1,91 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.requiredText = requiredText;
4
+ exports.object = object;
5
+ exports.taskResult = taskResult;
6
+ exports.submissionResult = submissionResult;
7
+ exports.request = request;
8
+ exports.output = output;
9
+ exports.failure = failure;
10
+ const n8n_workflow_1 = require("n8n-workflow");
11
+ function requiredText(value, name) {
12
+ if (typeof value !== 'string' || !value.trim())
13
+ throw new Error(`${name} is required`);
14
+ return value.trim();
15
+ }
16
+ function object(value) {
17
+ return value !== null && typeof value === 'object' && !Array.isArray(value)
18
+ ? value
19
+ : {};
20
+ }
21
+ function taskResult(record) {
22
+ var _a, _b, _c, _d, _e, _f, _g, _h, _j;
23
+ const response = object(record.response);
24
+ const state = String((_b = (_a = record.state) !== null && _a !== void 0 ? _a : record.status) !== null && _b !== void 0 ? _b : '').toLowerCase();
25
+ const failed = response.success === false ||
26
+ record.success === false ||
27
+ ['failed', 'error', 'cancelled', 'canceled'].includes(state);
28
+ const complete = !failed &&
29
+ (response.success === true ||
30
+ ['succeeded', 'success', 'completed', 'complete'].includes(state));
31
+ return {
32
+ taskId: (_d = (_c = record.id) !== null && _c !== void 0 ? _c : record.task_id) !== null && _d !== void 0 ? _d : '',
33
+ status: failed ? 'failed' : complete ? 'succeeded' : 'processing',
34
+ finished: failed || complete,
35
+ successful: failed ? false : complete ? true : null,
36
+ data: (_e = response.data) !== null && _e !== void 0 ? _e : null,
37
+ error: (_g = (_f = response.error) !== null && _f !== void 0 ? _f : record.error) !== null && _g !== void 0 ? _g : null,
38
+ traceId: (_j = (_h = record.trace_id) !== null && _h !== void 0 ? _h : response.trace_id) !== null && _j !== void 0 ? _j : null,
39
+ };
40
+ }
41
+ function submissionResult(response) {
42
+ var _a;
43
+ if (typeof response.task_id !== 'string' || !response.task_id)
44
+ throw new Error('The service did not return a task ID');
45
+ return {
46
+ taskId: response.task_id,
47
+ status: 'submitted',
48
+ finished: false,
49
+ successful: null,
50
+ traceId: (_a = response.trace_id) !== null && _a !== void 0 ? _a : null,
51
+ };
52
+ }
53
+ async function request(context, credential, endpoint, body) {
54
+ var _a;
55
+ let result;
56
+ try {
57
+ result = await context.helpers.httpRequestWithAuthentication.call(context, credential, {
58
+ method: 'POST',
59
+ url: `https://api.acedata.cloud${endpoint}`,
60
+ body,
61
+ json: true,
62
+ timeout: 60000,
63
+ });
64
+ }
65
+ catch (error) {
66
+ throw new n8n_workflow_1.NodeApiError(context.getNode(), error);
67
+ }
68
+ const data = object(result);
69
+ if (data.success === false || data.error) {
70
+ const error = object(data.error);
71
+ throw new n8n_workflow_1.NodeApiError(context.getNode(), {
72
+ message: String((_a = error.message) !== null && _a !== void 0 ? _a : 'The service rejected this request'),
73
+ code: error.code,
74
+ });
75
+ }
76
+ return data;
77
+ }
78
+ function output(context, data, index) {
79
+ return context.helpers.constructExecutionMetaData(context.helpers.returnJsonArray(data), {
80
+ itemData: { item: index },
81
+ });
82
+ }
83
+ function failure(context, error, index) {
84
+ const message = error instanceof Error ? error.message : String(error);
85
+ if (context.continueOnFail())
86
+ return { json: { error: message }, pairedItem: { item: index } };
87
+ if (error instanceof n8n_workflow_1.NodeApiError || error instanceof n8n_workflow_1.NodeOperationError)
88
+ throw error;
89
+ throw new n8n_workflow_1.NodeOperationError(context.getNode(), message, { itemIndex: index });
90
+ }
91
+ //# sourceMappingURL=helpers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"helpers.js","sourceRoot":"","sources":["../../../nodes/Seedance/helpers.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ import type { INodeProperties } from 'n8n-workflow';
2
+ export declare const properties: INodeProperties[];
@@ -0,0 +1,302 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.properties = void 0;
4
+ exports.properties = [
5
+ {
6
+ displayName: 'Resource',
7
+ name: 'resource',
8
+ type: 'options',
9
+ default: 'video',
10
+ noDataExpression: true,
11
+ options: [
12
+ {
13
+ name: 'Task',
14
+ value: 'task',
15
+ },
16
+ {
17
+ name: 'Video',
18
+ value: 'video',
19
+ },
20
+ ],
21
+ },
22
+ {
23
+ displayName: 'Operation',
24
+ name: 'operation',
25
+ type: 'options',
26
+ default: 'get',
27
+ noDataExpression: true,
28
+ displayOptions: {
29
+ show: {
30
+ resource: ['task'],
31
+ },
32
+ },
33
+ options: [
34
+ {
35
+ name: 'Get',
36
+ value: 'get',
37
+ description: 'Retrieve the status and result of a task',
38
+ action: 'Get a task',
39
+ },
40
+ {
41
+ name: 'Get Many',
42
+ value: 'getMany',
43
+ description: 'Retrieve up to 50 tasks by ID',
44
+ action: 'Get many tasks',
45
+ },
46
+ ],
47
+ },
48
+ {
49
+ displayName: 'Operation',
50
+ name: 'operation',
51
+ type: 'options',
52
+ default: 'create',
53
+ noDataExpression: true,
54
+ displayOptions: {
55
+ show: {
56
+ resource: ['video'],
57
+ },
58
+ },
59
+ options: [
60
+ {
61
+ name: 'Create',
62
+ value: 'create',
63
+ description: 'Create video through AceDataCloud',
64
+ action: 'Create video',
65
+ },
66
+ ],
67
+ },
68
+ {
69
+ displayName: 'Task ID',
70
+ name: 'taskId',
71
+ type: 'string',
72
+ default: '',
73
+ required: true,
74
+ displayOptions: {
75
+ show: {
76
+ resource: ['task'],
77
+ operation: ['get'],
78
+ },
79
+ },
80
+ description: 'The task ID returned by the Create operation',
81
+ },
82
+ {
83
+ displayName: 'Task IDs',
84
+ name: 'taskIds',
85
+ type: 'string',
86
+ default: '',
87
+ required: true,
88
+ displayOptions: {
89
+ show: {
90
+ resource: ['task'],
91
+ operation: ['getMany'],
92
+ },
93
+ },
94
+ description: 'Comma-separated task IDs, up to 50',
95
+ },
96
+ {
97
+ displayName: 'Prompt',
98
+ name: 'prompt',
99
+ type: 'string',
100
+ default: '',
101
+ required: true,
102
+ typeOptions: {
103
+ rows: 4,
104
+ },
105
+ displayOptions: {
106
+ show: {
107
+ resource: ['video'],
108
+ },
109
+ },
110
+ description: 'Describe the video to generate',
111
+ },
112
+ {
113
+ displayName: 'Model',
114
+ name: 'model',
115
+ type: 'options',
116
+ default: 'doubao-seedance-2-0-260128',
117
+ options: [
118
+ {
119
+ name: 'doubao-seedance-1-0-lite-i2v-250428',
120
+ value: 'doubao-seedance-1-0-lite-i2v-250428',
121
+ },
122
+ {
123
+ name: 'doubao-seedance-1-0-lite-t2v-250428',
124
+ value: 'doubao-seedance-1-0-lite-t2v-250428',
125
+ },
126
+ {
127
+ name: 'doubao-seedance-1-0-pro-250528',
128
+ value: 'doubao-seedance-1-0-pro-250528',
129
+ },
130
+ {
131
+ name: 'doubao-seedance-1-0-pro-fast-251015',
132
+ value: 'doubao-seedance-1-0-pro-fast-251015',
133
+ },
134
+ {
135
+ name: 'doubao-seedance-1-5-pro-251215',
136
+ value: 'doubao-seedance-1-5-pro-251215',
137
+ },
138
+ {
139
+ name: 'doubao-seedance-2-0-260128',
140
+ value: 'doubao-seedance-2-0-260128',
141
+ },
142
+ {
143
+ name: 'doubao-seedance-2-0-fast-260128',
144
+ value: 'doubao-seedance-2-0-fast-260128',
145
+ },
146
+ {
147
+ name: 'doubao-seedance-2-0-mini-260615',
148
+ value: 'doubao-seedance-2-0-mini-260615',
149
+ },
150
+ {
151
+ name: 'doubao-seedance-2-5-260628',
152
+ value: 'doubao-seedance-2-5-260628',
153
+ },
154
+ ],
155
+ displayOptions: {
156
+ show: {
157
+ resource: ['video'],
158
+ },
159
+ },
160
+ description: 'The model to use. Availability and pricing depend on the selected model.',
161
+ },
162
+ {
163
+ displayName: 'Input Mode',
164
+ name: 'inputMode',
165
+ type: 'options',
166
+ default: 'text',
167
+ options: [
168
+ {
169
+ name: 'Image to Video',
170
+ value: 'image',
171
+ },
172
+ {
173
+ name: 'Text to Video',
174
+ value: 'text',
175
+ },
176
+ ],
177
+ displayOptions: {
178
+ show: {
179
+ resource: ['video'],
180
+ },
181
+ },
182
+ },
183
+ {
184
+ displayName: 'First Frame URL',
185
+ name: 'imageUrl',
186
+ type: 'string',
187
+ default: '',
188
+ required: true,
189
+ displayOptions: {
190
+ show: {
191
+ resource: ['video'],
192
+ inputMode: ['image'],
193
+ },
194
+ },
195
+ description: 'Public HTTP or HTTPS URL of the first frame',
196
+ },
197
+ {
198
+ displayName: 'Duration',
199
+ name: 'duration',
200
+ type: 'number',
201
+ default: 5,
202
+ typeOptions: {
203
+ minValue: 4,
204
+ maxValue: 15,
205
+ numberPrecision: 0,
206
+ },
207
+ displayOptions: {
208
+ show: {
209
+ resource: ['video'],
210
+ },
211
+ },
212
+ description: 'Video length in seconds. Supported lengths depend on the model.',
213
+ },
214
+ {
215
+ displayName: 'Resolution',
216
+ name: 'resolution',
217
+ type: 'options',
218
+ default: '720p',
219
+ options: [
220
+ {
221
+ name: '480p',
222
+ value: '480p',
223
+ },
224
+ {
225
+ name: '720p',
226
+ value: '720p',
227
+ },
228
+ {
229
+ name: '1080p',
230
+ value: '1080p',
231
+ },
232
+ ],
233
+ displayOptions: {
234
+ show: {
235
+ resource: ['video'],
236
+ },
237
+ },
238
+ },
239
+ {
240
+ displayName: 'Aspect Ratio',
241
+ name: 'ratio',
242
+ type: 'options',
243
+ default: '16:9',
244
+ options: [
245
+ { name: '1:1', value: '1:1' },
246
+ { name: '16:9', value: '16:9' },
247
+ { name: '21:9', value: '21:9' },
248
+ { name: '3:4', value: '3:4' },
249
+ { name: '4:3', value: '4:3' },
250
+ { name: '9:16', value: '9:16' },
251
+ { name: 'Adaptive', value: 'adaptive' },
252
+ ],
253
+ displayOptions: {
254
+ show: {
255
+ resource: ['video'],
256
+ },
257
+ },
258
+ },
259
+ {
260
+ displayName: 'Options',
261
+ name: 'options',
262
+ type: 'collection',
263
+ default: {},
264
+ placeholder: 'Add Option',
265
+ displayOptions: {
266
+ show: {
267
+ resource: ['video'],
268
+ },
269
+ },
270
+ options: [
271
+ {
272
+ displayName: 'Generate Audio',
273
+ name: 'generateAudio',
274
+ type: 'boolean',
275
+ default: false,
276
+ description: 'Whether to generate audio when supported by the selected model',
277
+ },
278
+ {
279
+ displayName: 'Last Frame URL',
280
+ name: 'lastFrameUrl',
281
+ type: 'string',
282
+ default: '',
283
+ description: 'Optional public HTTP or HTTPS last frame for image-to-video mode',
284
+ },
285
+ {
286
+ displayName: 'Return Last Frame',
287
+ name: 'returnLastFrame',
288
+ type: 'boolean',
289
+ default: false,
290
+ description: 'Whether to return the generated last frame',
291
+ },
292
+ ],
293
+ },
294
+ {
295
+ displayName: 'Simplify',
296
+ name: 'simplify',
297
+ type: 'boolean',
298
+ default: true,
299
+ description: 'Whether to return a simplified version of the response instead of the raw data',
300
+ },
301
+ ];
302
+ //# sourceMappingURL=properties.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"properties.js","sourceRoot":"","sources":["../../../nodes/Seedance/properties.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,337 @@
1
+ {
2
+ "name": "Generate Seedance video with AceDataCloud and wait for completion",
3
+ "nodes": [
4
+ {
5
+ "id": "start",
6
+ "name": "Start",
7
+ "type": "n8n-nodes-base.manualTrigger",
8
+ "typeVersion": 1,
9
+ "position": [0, 0],
10
+ "parameters": {}
11
+ },
12
+ {
13
+ "id": "setup-notes",
14
+ "name": "Setup Notes",
15
+ "type": "n8n-nodes-base.stickyNote",
16
+ "typeVersion": 1,
17
+ "position": [0, -300],
18
+ "parameters": {
19
+ "content": "## Seedance through AceDataCloud\nInstall @acedatacloud/n8n-nodes-seedance, then select your service credential on Create and Get Task. Edit the prompt and model before running. One execution creates one paid generation task. Querying does not resubmit it. The 30-minute deadline stops waiting; it does not cancel a service task.",
20
+ "height": 230,
21
+ "width": 540
22
+ }
23
+ },
24
+ {
25
+ "id": "create",
26
+ "name": "Create",
27
+ "type": "@acedatacloud/n8n-nodes-seedance.seedance",
28
+ "typeVersion": 1,
29
+ "position": [220, 0],
30
+ "parameters": {
31
+ "resource": "video",
32
+ "operation": "create",
33
+ "prompt": "A peaceful ocean at sunrise, slow cinematic camera movement",
34
+ "model": "doubao-seedance-2-0-260128",
35
+ "simplify": true,
36
+ "duration": 5,
37
+ "resolution": "720p",
38
+ "ratio": "16:9",
39
+ "inputMode": "text"
40
+ },
41
+ "retryOnFail": false
42
+ },
43
+ {
44
+ "id": "initialize",
45
+ "name": "Initialize",
46
+ "type": "n8n-nodes-base.set",
47
+ "typeVersion": 3.4,
48
+ "position": [440, 0],
49
+ "parameters": {
50
+ "assignments": {
51
+ "assignments": [
52
+ {
53
+ "id": "taskId",
54
+ "name": "taskId",
55
+ "value": "={{ $json.taskId }}",
56
+ "type": "string"
57
+ },
58
+ {
59
+ "id": "deadline",
60
+ "name": "deadline",
61
+ "value": "={{ $now.plus({ minutes: 30 }).toISO() }}",
62
+ "type": "string"
63
+ }
64
+ ]
65
+ },
66
+ "options": {}
67
+ }
68
+ },
69
+ {
70
+ "id": "wait-15-seconds",
71
+ "name": "Wait 15 Seconds",
72
+ "type": "n8n-nodes-base.wait",
73
+ "typeVersion": 1.1,
74
+ "position": [660, 0],
75
+ "parameters": {
76
+ "resume": "timeInterval",
77
+ "amount": 15,
78
+ "unit": "seconds"
79
+ },
80
+ "webhookId": "seedance-generation-wait"
81
+ },
82
+ {
83
+ "id": "get-task",
84
+ "name": "Get Task",
85
+ "type": "@acedatacloud/n8n-nodes-seedance.seedance",
86
+ "typeVersion": 1,
87
+ "position": [880, 0],
88
+ "parameters": {
89
+ "resource": "task",
90
+ "operation": "get",
91
+ "taskId": "={{ $('Initialize').first().json.taskId }}",
92
+ "simplify": true
93
+ }
94
+ },
95
+ {
96
+ "id": "finished",
97
+ "name": "Finished",
98
+ "type": "n8n-nodes-base.if",
99
+ "typeVersion": 2.2,
100
+ "position": [1100, 0],
101
+ "parameters": {
102
+ "conditions": {
103
+ "options": {
104
+ "caseSensitive": true,
105
+ "leftValue": "",
106
+ "typeValidation": "strict",
107
+ "version": 2
108
+ },
109
+ "conditions": [
110
+ {
111
+ "id": "check",
112
+ "leftValue": "={{ $json.finished }}",
113
+ "rightValue": true,
114
+ "operator": {
115
+ "type": "boolean",
116
+ "operation": "true",
117
+ "singleValue": true
118
+ }
119
+ }
120
+ ],
121
+ "combinator": "and"
122
+ },
123
+ "options": {}
124
+ }
125
+ },
126
+ {
127
+ "id": "succeeded",
128
+ "name": "Succeeded",
129
+ "type": "n8n-nodes-base.if",
130
+ "typeVersion": 2.2,
131
+ "position": [1320, -100],
132
+ "parameters": {
133
+ "conditions": {
134
+ "options": {
135
+ "caseSensitive": true,
136
+ "leftValue": "",
137
+ "typeValidation": "strict",
138
+ "version": 2
139
+ },
140
+ "conditions": [
141
+ {
142
+ "id": "check",
143
+ "leftValue": "={{ $json.successful === true }}",
144
+ "rightValue": true,
145
+ "operator": {
146
+ "type": "boolean",
147
+ "operation": "true",
148
+ "singleValue": true
149
+ }
150
+ }
151
+ ],
152
+ "combinator": "and"
153
+ },
154
+ "options": {}
155
+ }
156
+ },
157
+ {
158
+ "id": "deadline-reached",
159
+ "name": "Deadline Reached",
160
+ "type": "n8n-nodes-base.if",
161
+ "typeVersion": 2.2,
162
+ "position": [1320, 180],
163
+ "parameters": {
164
+ "conditions": {
165
+ "options": {
166
+ "caseSensitive": true,
167
+ "leftValue": "",
168
+ "typeValidation": "strict",
169
+ "version": 2
170
+ },
171
+ "conditions": [
172
+ {
173
+ "id": "check",
174
+ "leftValue": "={{ $now.toMillis() >= Date.parse($('Initialize').first().json.deadline) }}",
175
+ "rightValue": true,
176
+ "operator": {
177
+ "type": "boolean",
178
+ "operation": "true",
179
+ "singleValue": true
180
+ }
181
+ }
182
+ ],
183
+ "combinator": "and"
184
+ },
185
+ "options": {}
186
+ }
187
+ },
188
+ {
189
+ "id": "result",
190
+ "name": "Result",
191
+ "type": "n8n-nodes-base.noOp",
192
+ "typeVersion": 1,
193
+ "position": [1540, -180],
194
+ "parameters": {}
195
+ },
196
+ {
197
+ "id": "generation-failed",
198
+ "name": "Generation Failed",
199
+ "type": "n8n-nodes-base.stopAndError",
200
+ "typeVersion": 1,
201
+ "position": [1540, -20],
202
+ "parameters": {
203
+ "errorType": "errorMessage",
204
+ "errorMessage": "={{ \"Generation failed for task \" + $json.taskId + \": \" + JSON.stringify($json.error) }}"
205
+ }
206
+ },
207
+ {
208
+ "id": "stop-waiting",
209
+ "name": "Stop Waiting",
210
+ "type": "n8n-nodes-base.stopAndError",
211
+ "typeVersion": 1,
212
+ "position": [1540, 180],
213
+ "parameters": {
214
+ "errorType": "errorMessage",
215
+ "errorMessage": "={{ 'Stopped waiting after 30 minutes. Query task ' + $('Initialize').first().json.taskId + ' again later; do not resubmit Create.' }}"
216
+ }
217
+ }
218
+ ],
219
+ "connections": {
220
+ "Start": {
221
+ "main": [
222
+ [
223
+ {
224
+ "node": "Create",
225
+ "type": "main",
226
+ "index": 0
227
+ }
228
+ ]
229
+ ]
230
+ },
231
+ "Create": {
232
+ "main": [
233
+ [
234
+ {
235
+ "node": "Initialize",
236
+ "type": "main",
237
+ "index": 0
238
+ }
239
+ ]
240
+ ]
241
+ },
242
+ "Initialize": {
243
+ "main": [
244
+ [
245
+ {
246
+ "node": "Wait 15 Seconds",
247
+ "type": "main",
248
+ "index": 0
249
+ }
250
+ ]
251
+ ]
252
+ },
253
+ "Wait 15 Seconds": {
254
+ "main": [
255
+ [
256
+ {
257
+ "node": "Get Task",
258
+ "type": "main",
259
+ "index": 0
260
+ }
261
+ ]
262
+ ]
263
+ },
264
+ "Get Task": {
265
+ "main": [
266
+ [
267
+ {
268
+ "node": "Finished",
269
+ "type": "main",
270
+ "index": 0
271
+ }
272
+ ]
273
+ ]
274
+ },
275
+ "Finished": {
276
+ "main": [
277
+ [
278
+ {
279
+ "node": "Succeeded",
280
+ "type": "main",
281
+ "index": 0
282
+ }
283
+ ],
284
+ [
285
+ {
286
+ "node": "Deadline Reached",
287
+ "type": "main",
288
+ "index": 0
289
+ }
290
+ ]
291
+ ]
292
+ },
293
+ "Succeeded": {
294
+ "main": [
295
+ [
296
+ {
297
+ "node": "Result",
298
+ "type": "main",
299
+ "index": 0
300
+ }
301
+ ],
302
+ [
303
+ {
304
+ "node": "Generation Failed",
305
+ "type": "main",
306
+ "index": 0
307
+ }
308
+ ]
309
+ ]
310
+ },
311
+ "Deadline Reached": {
312
+ "main": [
313
+ [
314
+ {
315
+ "node": "Stop Waiting",
316
+ "type": "main",
317
+ "index": 0
318
+ }
319
+ ],
320
+ [
321
+ {
322
+ "node": "Wait 15 Seconds",
323
+ "type": "main",
324
+ "index": 0
325
+ }
326
+ ]
327
+ ]
328
+ }
329
+ },
330
+ "pinData": {},
331
+ "settings": {
332
+ "executionOrder": "v1",
333
+ "executionTimeout": 1900
334
+ },
335
+ "active": false,
336
+ "tags": []
337
+ }
package/package.json ADDED
@@ -0,0 +1,60 @@
1
+ {
2
+ "name": "@acedatacloud/n8n-nodes-seedance",
3
+ "version": "0.1.0",
4
+ "description": "n8n community node for Seedance video generation through AceDataCloud.",
5
+ "license": "MIT",
6
+ "homepage": "https://github.com/AceDataCloud/SeedanceN8N",
7
+ "keywords": [
8
+ "n8n-community-node-package",
9
+ "acedatacloud",
10
+ "seedance"
11
+ ],
12
+ "author": {
13
+ "name": "Ace Data Cloud",
14
+ "email": "dev@acedata.cloud",
15
+ "url": "https://platform.acedata.cloud"
16
+ },
17
+ "repository": {
18
+ "type": "git",
19
+ "url": "git+https://github.com/AceDataCloud/SeedanceN8N.git"
20
+ },
21
+ "bugs": {
22
+ "url": "https://github.com/AceDataCloud/SeedanceN8N/issues"
23
+ },
24
+ "scripts": {
25
+ "build": "n8n-node build",
26
+ "dev": "n8n-node dev",
27
+ "lint": "n8n-node lint",
28
+ "lint:fix": "n8n-node lint --fix",
29
+ "test": "node --test tests/*.test.cjs",
30
+ "prepublishOnly": "npm run build && npm run lint && npm test"
31
+ },
32
+ "files": [
33
+ "dist/credentials",
34
+ "dist/nodes",
35
+ "examples"
36
+ ],
37
+ "n8n": {
38
+ "n8nNodesApiVersion": 1,
39
+ "strict": true,
40
+ "credentials": [
41
+ "dist/credentials/AceDataSeedanceApi.credentials.js"
42
+ ],
43
+ "nodes": [
44
+ "dist/nodes/Seedance/Seedance.node.js"
45
+ ]
46
+ },
47
+ "devDependencies": {
48
+ "@n8n/node-cli": "0.51.3",
49
+ "typescript": "5.9.3",
50
+ "prettier": "3.6.2",
51
+ "eslint": "9.29.0"
52
+ },
53
+ "peerDependencies": {
54
+ "n8n-workflow": "*"
55
+ },
56
+ "publishConfig": {
57
+ "access": "public",
58
+ "provenance": true
59
+ }
60
+ }