@inductiv/node-red-openai-api
Version:
Enhance your Node-RED projects with advanced AI capabilities.
377 lines (376 loc) • 9.81 kB
JSON
[
{
"id": "10ff5e12f01476a4",
"type": "tab",
"label": "Videos Example",
"disabled": false,
"info": "Videos example.\n\nThis flow shows the current OpenAI video surface in the same direct Node-RED style as the rest of the project:\n- create a video job from a prompt\n- create a reusable character from an uploaded clip\n- fetch a saved character\n- edit, extend, or remix a completed video\n- download a rendered asset such as the thumbnail or main video\n\nSome inject nodes include placeholder ids or file paths. Replace those with real values before running them against the API.",
"env": []
},
{
"id": "9f6f8594b3dcbf9f",
"type": "comment",
"z": "10ff5e12f01476a4",
"name": "Configure the red-marked nodes, then replace the placeholder ids and file paths where needed.",
"info": "Before running:\n- import the flow, then configure each red-marked `OpenAI API` node with your own `Service Host`\n- this example stores request data in `msg.ai` because each `OpenAI API` node is configured to `ai`\n- if your node uses the default property, move the same fields under `msg.payload`\n\nWhat this flow covers:\n- Sora video creation from a prompt\n- character creation from an uploaded video clip\n- character retrieval by id\n- edit, extend, and remix flows for completed videos\n- downloadable assets through `downloadVideoContent`",
"x": 470,
"y": 120,
"wires": []
},
{
"id": "0d4567126bfb0be9",
"type": "inject",
"z": "10ff5e12f01476a4",
"name": "Create Video",
"props": [
{
"p": "ai.prompt",
"v": "A calm sunrise over a coastal city, filmed like a quiet documentary opening shot.",
"vt": "str"
},
{
"p": "ai.model",
"v": "sora-2",
"vt": "str"
},
{
"p": "ai.seconds",
"v": "8",
"vt": "str"
},
{
"p": "ai.size",
"v": "1280x720",
"vt": "str"
}
],
"repeat": "",
"crontab": "",
"once": false,
"onceDelay": 0.1,
"topic": "",
"x": 180,
"y": 220,
"wires": [
[
"7f343de47d4a5e77"
]
]
},
{
"id": "7f343de47d4a5e77",
"type": "OpenAI API",
"z": "10ff5e12f01476a4",
"name": "Create Video",
"property": "ai",
"propertyType": "msg",
"service": "",
"method": "createVideo",
"x": 430,
"y": 220,
"wires": [
[
"d0dd9462465a1fb9"
]
]
},
{
"id": "8a31b2fbda8ad50f",
"type": "inject",
"z": "10ff5e12f01476a4",
"name": "Create Video Character",
"props": [
{
"p": "ai.name",
"v": "Lead Runner",
"vt": "str"
},
{
"p": "ai.video",
"v": "/path/to/character-source.mp4",
"vt": "str"
}
],
"repeat": "",
"crontab": "",
"once": false,
"onceDelay": 0.1,
"topic": "",
"x": 190,
"y": 300,
"wires": [
[
"4f690ee43af6b79f"
]
]
},
{
"id": "4f690ee43af6b79f",
"type": "OpenAI API",
"z": "10ff5e12f01476a4",
"name": "Create Video Character",
"property": "ai",
"propertyType": "msg",
"service": "",
"method": "createVideoCharacter",
"x": 450,
"y": 300,
"wires": [
[
"d0dd9462465a1fb9"
]
]
},
{
"id": "f37548d372420f56",
"type": "inject",
"z": "10ff5e12f01476a4",
"name": "Get Video Character",
"props": [
{
"p": "ai.character_id",
"v": "char_replace_me",
"vt": "str"
}
],
"repeat": "",
"crontab": "",
"once": false,
"onceDelay": 0.1,
"topic": "",
"x": 180,
"y": 380,
"wires": [
[
"d8e480cae6cf1f3b"
]
]
},
{
"id": "d8e480cae6cf1f3b",
"type": "OpenAI API",
"z": "10ff5e12f01476a4",
"name": "Get Video Character",
"property": "ai",
"propertyType": "msg",
"service": "",
"method": "getVideoCharacter",
"x": 440,
"y": 380,
"wires": [
[
"d0dd9462465a1fb9"
]
]
},
{
"id": "005ecdd640c0aa56",
"type": "inject",
"z": "10ff5e12f01476a4",
"name": "Edit Video",
"props": [
{
"p": "ai.prompt",
"v": "Keep the shot steady and give it a neon dusk color treatment.",
"vt": "str"
},
{
"p": "ai.video.id",
"v": "video_replace_me",
"vt": "str"
}
],
"repeat": "",
"crontab": "",
"once": false,
"onceDelay": 0.1,
"topic": "",
"x": 150,
"y": 460,
"wires": [
[
"2331b602ef6f5277"
]
]
},
{
"id": "2331b602ef6f5277",
"type": "OpenAI API",
"z": "10ff5e12f01476a4",
"name": "Edit Video",
"property": "ai",
"propertyType": "msg",
"service": "",
"method": "editVideo",
"x": 410,
"y": 460,
"wires": [
[
"d0dd9462465a1fb9"
]
]
},
{
"id": "2cafe14afce4e744",
"type": "inject",
"z": "10ff5e12f01476a4",
"name": "Extend Video",
"props": [
{
"p": "ai.prompt",
"v": "Continue the shot and let the city lights gradually come alive.",
"vt": "str"
},
{
"p": "ai.seconds",
"v": "16",
"vt": "str"
},
{
"p": "ai.video.id",
"v": "video_replace_me",
"vt": "str"
}
],
"repeat": "",
"crontab": "",
"once": false,
"onceDelay": 0.1,
"topic": "",
"x": 160,
"y": 540,
"wires": [
[
"5737bba9d132fa7d"
]
]
},
{
"id": "5737bba9d132fa7d",
"type": "OpenAI API",
"z": "10ff5e12f01476a4",
"name": "Extend Video",
"property": "ai",
"propertyType": "msg",
"service": "",
"method": "extendVideo",
"x": 420,
"y": 540,
"wires": [
[
"d0dd9462465a1fb9"
]
]
},
{
"id": "e4766ca3fb430312",
"type": "inject",
"z": "10ff5e12f01476a4",
"name": "Remix Video",
"props": [
{
"p": "ai.video_id",
"v": "video_replace_me",
"vt": "str"
},
{
"p": "ai.prompt",
"v": "Keep the structure, but make it feel warmer and more cinematic.",
"vt": "str"
}
],
"repeat": "",
"crontab": "",
"once": false,
"onceDelay": 0.1,
"topic": "",
"x": 160,
"y": 620,
"wires": [
[
"af2929abf2cf0fd8"
]
]
},
{
"id": "af2929abf2cf0fd8",
"type": "OpenAI API",
"z": "10ff5e12f01476a4",
"name": "Remix Video",
"property": "ai",
"propertyType": "msg",
"service": "",
"method": "remixVideo",
"x": 420,
"y": 620,
"wires": [
[
"d0dd9462465a1fb9"
]
]
},
{
"id": "da3d4e3ceef46c52",
"type": "inject",
"z": "10ff5e12f01476a4",
"name": "Download Thumbnail",
"props": [
{
"p": "ai.video_id",
"v": "video_replace_me",
"vt": "str"
},
{
"p": "ai.variant",
"v": "thumbnail",
"vt": "str"
}
],
"repeat": "",
"crontab": "",
"once": false,
"onceDelay": 0.1,
"topic": "",
"x": 180,
"y": 700,
"wires": [
[
"0f6f375ec4fc2f20"
]
]
},
{
"id": "0f6f375ec4fc2f20",
"type": "OpenAI API",
"z": "10ff5e12f01476a4",
"name": "Download Video Content",
"property": "ai",
"propertyType": "msg",
"service": "",
"method": "downloadVideoContent",
"x": 450,
"y": 700,
"wires": [
[
"d0dd9462465a1fb9"
]
]
},
{
"id": "d0dd9462465a1fb9",
"type": "debug",
"z": "10ff5e12f01476a4",
"name": "Videos Output",
"active": true,
"tosidebar": true,
"console": false,
"tostatus": false,
"complete": "true",
"targetType": "full",
"statusVal": "",
"statusType": "auto",
"x": 730,
"y": 340,
"wires": []
}
]