devrel-toolkit 0.1.3 → 0.1.7
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/dist/cli/d-id.d.ts.map +1 -1
- package/dist/cli/d-id.js +13 -10
- package/dist/cli/d-id.js.map +1 -1
- package/dist/cli/doctor.js +1 -1
- package/dist/cli/doctor.js.map +1 -1
- package/dist/compositor/components/BrowserFrame.d.ts.map +1 -1
- package/dist/compositor/components/BrowserFrame.js +7 -2
- package/dist/compositor/components/BrowserFrame.js.map +1 -1
- package/dist/d-id/client.d.ts +4 -1
- package/dist/d-id/client.d.ts.map +1 -1
- package/dist/d-id/client.js +16 -12
- package/dist/d-id/client.js.map +1 -1
- package/package.json +1 -1
- package/skills/make-demo/SKILL.md +30 -90
package/dist/cli/d-id.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"d-id.d.ts","sourceRoot":"","sources":["../../src/cli/d-id.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAKzC,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,
|
|
1
|
+
{"version":3,"file":"d-id.d.ts","sourceRoot":"","sources":["../../src/cli/d-id.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAKzC,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CA4DzD"}
|
package/dist/cli/d-id.js
CHANGED
|
@@ -18,19 +18,22 @@ export function registerDidCommand(program) {
|
|
|
18
18
|
return;
|
|
19
19
|
}
|
|
20
20
|
// Print table header
|
|
21
|
-
const idWidth =
|
|
21
|
+
const idWidth = 45;
|
|
22
22
|
const nameWidth = 30;
|
|
23
|
-
console.log(`${"
|
|
24
|
-
console.log(`${"-".repeat(idWidth)} ${"-".repeat(nameWidth)} ${"-".repeat(
|
|
23
|
+
console.log(`${"PRESENTER ID".padEnd(idWidth)} ${"NAME".padEnd(nameWidth)} GENDER`);
|
|
24
|
+
console.log(`${"-".repeat(idWidth)} ${"-".repeat(nameWidth)} ${"-".repeat(10)}`);
|
|
25
|
+
// Deduplicate by name (many variants per presenter)
|
|
26
|
+
const seen = new Set();
|
|
25
27
|
for (const avatar of avatars) {
|
|
26
|
-
const
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
const
|
|
31
|
-
|
|
28
|
+
const name = avatar.name ?? "unknown";
|
|
29
|
+
if (seen.has(name))
|
|
30
|
+
continue;
|
|
31
|
+
seen.add(name);
|
|
32
|
+
const id = (avatar.presenter_id ?? avatar.id ?? "").padEnd(idWidth);
|
|
33
|
+
const gender = avatar.gender ?? "—";
|
|
34
|
+
console.log(`${id} ${name.padEnd(nameWidth)} ${gender}`);
|
|
32
35
|
}
|
|
33
|
-
console.log(`\n${
|
|
36
|
+
console.log(`\n${seen.size} presenter(s) found (${avatars.length} total variants).\n`);
|
|
34
37
|
});
|
|
35
38
|
did
|
|
36
39
|
.command("generate")
|
package/dist/cli/d-id.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"d-id.js","sourceRoot":"","sources":["../../src/cli/d-id.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAC9C,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAE1D,MAAM,UAAU,kBAAkB,CAAC,OAAgB;IACjD,MAAM,GAAG,GAAG,OAAO;SAChB,OAAO,CAAC,MAAM,CAAC;SACf,WAAW,CAAC,iCAAiC,CAAC,CAAC;IAElD,GAAG;SACA,OAAO,CAAC,SAAS,CAAC;SAClB,WAAW,CAAC,6BAA6B,CAAC;SAC1C,MAAM,CAAC,KAAK,IAAI,EAAE;QACjB,MAAM,MAAM,GAAG,gBAAgB,EAAE,CAAC;QAClC,MAAM,MAAM,GAAG,IAAI,SAAS,CAAC,MAAM,CAAC,CAAC;QAErC,OAAO,CAAC,GAAG,CAAC,mCAAmC,CAAC,CAAC;QAEjD,MAAM,OAAO,GAAG,MAAM,MAAM,CAAC,WAAW,EAAE,CAAC;QAE3C,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACzB,OAAO,CAAC,GAAG,CAAC,mBAAmB,CAAC,CAAC;YACjC,OAAO;QACT,CAAC;QAED,qBAAqB;QACrB,MAAM,OAAO,GAAG,EAAE,CAAC;QACnB,MAAM,SAAS,GAAG,EAAE,CAAC;QACrB,OAAO,CAAC,GAAG,CACT,GAAG,
|
|
1
|
+
{"version":3,"file":"d-id.js","sourceRoot":"","sources":["../../src/cli/d-id.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAC9C,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAE1D,MAAM,UAAU,kBAAkB,CAAC,OAAgB;IACjD,MAAM,GAAG,GAAG,OAAO;SAChB,OAAO,CAAC,MAAM,CAAC;SACf,WAAW,CAAC,iCAAiC,CAAC,CAAC;IAElD,GAAG;SACA,OAAO,CAAC,SAAS,CAAC;SAClB,WAAW,CAAC,6BAA6B,CAAC;SAC1C,MAAM,CAAC,KAAK,IAAI,EAAE;QACjB,MAAM,MAAM,GAAG,gBAAgB,EAAE,CAAC;QAClC,MAAM,MAAM,GAAG,IAAI,SAAS,CAAC,MAAM,CAAC,CAAC;QAErC,OAAO,CAAC,GAAG,CAAC,mCAAmC,CAAC,CAAC;QAEjD,MAAM,OAAO,GAAG,MAAM,MAAM,CAAC,WAAW,EAAE,CAAC;QAE3C,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACzB,OAAO,CAAC,GAAG,CAAC,mBAAmB,CAAC,CAAC;YACjC,OAAO;QACT,CAAC;QAED,qBAAqB;QACrB,MAAM,OAAO,GAAG,EAAE,CAAC;QACnB,MAAM,SAAS,GAAG,EAAE,CAAC;QACrB,OAAO,CAAC,GAAG,CACT,GAAG,cAAc,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,UAAU,CACzE,CAAC;QACF,OAAO,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,GAAG,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;QAEnF,oDAAoD;QACpD,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAC;QAC/B,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;YAC7B,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,IAAI,SAAS,CAAC;YACtC,IAAI,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC;gBAAE,SAAS;YAC7B,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;YACf,MAAM,EAAE,GAAG,CAAC,MAAM,CAAC,YAAY,IAAI,MAAM,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;YACpE,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,IAAI,GAAG,CAAC;YACpC,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,MAAM,EAAE,CAAC,CAAC;QAC7D,CAAC;QAED,OAAO,CAAC,GAAG,CAAC,KAAK,IAAI,CAAC,IAAI,wBAAwB,OAAO,CAAC,MAAM,qBAAqB,CAAC,CAAC;IACzF,CAAC,CAAC,CAAC;IAEL,GAAG;SACA,OAAO,CAAC,UAAU,CAAC;SACnB,WAAW,CAAC,qCAAqC,CAAC;SAClD,cAAc,CAAC,qBAAqB,EAAE,4BAA4B,CAAC;SACnE,MAAM,CAAC,oBAAoB,EAAE,mCAAmC,EAAE,WAAW,CAAC;SAC9E,MAAM,CAAC,mBAAmB,EAAE,kBAAkB,CAAC;SAC/C,MAAM,CAAC,kBAAkB,EAAE,qBAAqB,CAAC;SACjD,MAAM,CAAC,uBAAuB,EAAE,4BAA4B,EAAE,GAAG,CAAC;SAClE,MAAM,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE;QACrB,MAAM,mBAAmB,CAAC;YACxB,UAAU,EAAE,IAAI,CAAC,MAAM;YACvB,SAAS,EAAE,IAAI,CAAC,MAAM;YACtB,eAAe,EAAE,IAAI,CAAC,MAAM;YAC5B,kBAAkB,EAAE,IAAI,CAAC,SAAS;YAClC,WAAW,EAAE,QAAQ,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE,CAAC;SAC5C,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACP,CAAC"}
|
package/dist/cli/doctor.js
CHANGED
|
@@ -58,7 +58,7 @@ async function checkDidApiKey() {
|
|
|
58
58
|
}
|
|
59
59
|
// Test the key with a lightweight API call
|
|
60
60
|
try {
|
|
61
|
-
const response = await fetch("https://api.d-id.com/
|
|
61
|
+
const response = await fetch("https://api.d-id.com/clips/presenters", {
|
|
62
62
|
headers: {
|
|
63
63
|
Authorization: `Basic ${config.didApiKey}`,
|
|
64
64
|
"Content-Type": "application/json",
|
package/dist/cli/doctor.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"doctor.js","sourceRoot":"","sources":["../../src/cli/doctor.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAC9C,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAQhD,SAAS,YAAY,CAAC,GAAW;IAC/B,IAAI,CAAC;QACH,OAAO,QAAQ,CAAC,GAAG,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;IACtF,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED,KAAK,UAAU,gBAAgB;IAC7B,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;IAChC,MAAM,KAAK,GAAG,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IAC3D,IAAI,KAAK,IAAI,EAAE,EAAE,CAAC;QAChB,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,OAAO,mBAAmB,EAAE,CAAC;IACpF,CAAC;IACD,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,OAAO,4BAA4B,EAAE,CAAC;AAC7F,CAAC;AAED,KAAK,UAAU,WAAW;IACxB,MAAM,MAAM,GAAG,YAAY,CAAC,iBAAiB,CAAC,CAAC;IAC/C,IAAI,MAAM,EAAE,CAAC;QACX,MAAM,SAAS,GAAG,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;QACxC,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC;IAC/D,CAAC;IACD,OAAO;QACL,IAAI,EAAE,QAAQ;QACd,MAAM,EAAE,MAAM;QACd,MAAM,EAAE,oFAAoF;KAC7F,CAAC;AACJ,CAAC;AAED,KAAK,UAAU,sBAAsB;IACnC,MAAM,UAAU,GAAG,YAAY,CAAC,uBAAuB,CAAC,CAAC;IACzD,IAAI,UAAU,EAAE,CAAC;QACf,OAAO,EAAE,IAAI,EAAE,oBAAoB,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,mBAAmB,UAAU,EAAE,EAAE,CAAC;IACjG,CAAC;IAED,MAAM,UAAU,GAAG,YAAY,CAAC,0BAA0B,CAAC,CAAC;IAC5D,IAAI,UAAU,EAAE,CAAC;QACf,OAAO;YACL,IAAI,EAAE,oBAAoB;YAC1B,MAAM,EAAE,MAAM;YACd,MAAM,EAAE,cAAc,UAAU,aAAa;SAC9C,CAAC;IACJ,CAAC;IAED,OAAO;QACL,IAAI,EAAE,oBAAoB;QAC1B,MAAM,EAAE,MAAM;QACd,MAAM,EAAE,6FAA6F;KACtG,CAAC;AACJ,CAAC;AAED,KAAK,UAAU,cAAc;IAC3B,MAAM,MAAM,GAAG,UAAU,EAAE,CAAC;IAC5B,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC;QACtB,OAAO;YACL,IAAI,EAAE,cAAc;YACpB,MAAM,EAAE,MAAM;YACd,MAAM,EAAE,0EAA0E;SACnF,CAAC;IACJ,CAAC;IAED,2CAA2C;IAC3C,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,
|
|
1
|
+
{"version":3,"file":"doctor.js","sourceRoot":"","sources":["../../src/cli/doctor.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BrowserFrame.d.ts","sourceRoot":"","sources":["../../../src/compositor/components/BrowserFrame.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"BrowserFrame.d.ts","sourceRoot":"","sources":["../../../src/compositor/components/BrowserFrame.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAY1B,UAAU,iBAAiB;IACzB,cAAc,EAAE,MAAM,CAAC;IACvB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE;QACL,IAAI,EAAE;YAAE,CAAC,EAAE,MAAM,CAAC;YAAC,CAAC,EAAE,MAAM,CAAC;YAAC,KAAK,EAAE,MAAM,CAAC;YAAC,MAAM,EAAE,MAAM,CAAA;SAAE,CAAC;QAC9D,KAAK,EAAE,MAAM,CAAC;KACf,CAAC;IACF,cAAc,EAAE,MAAM,CAAC;CACxB;AAED,eAAO,MAAM,YAAY,EAAE,KAAK,CAAC,EAAE,CAAC,iBAAiB,CA+JpD,CAAC"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
2
|
import { AbsoluteFill, Img, staticFile, interpolate, spring, useCurrentFrame, useVideoConfig, } from "remotion";
|
|
3
|
+
import { Video } from "@remotion/media";
|
|
3
4
|
export const BrowserFrame = ({ screenshotPath, url, zoom, durationFrames, }) => {
|
|
4
5
|
const frame = useCurrentFrame();
|
|
5
6
|
const { fps, width, height } = useVideoConfig();
|
|
@@ -90,10 +91,14 @@ export const BrowserFrame = ({ screenshotPath, url, zoom, durationFrames, }) =>
|
|
|
90
91
|
height: "100%",
|
|
91
92
|
transform: `scale(${scale}) translate(${translateX / scale}px, ${translateY / scale}px)`,
|
|
92
93
|
transformOrigin: "center center",
|
|
93
|
-
}, children: _jsx(
|
|
94
|
+
}, children: screenshotPath.endsWith(".mp4") ? (_jsx(Video, { src: staticFile(screenshotPath), style: {
|
|
94
95
|
width: "100%",
|
|
95
96
|
height: "100%",
|
|
96
97
|
objectFit: "contain",
|
|
97
|
-
} })
|
|
98
|
+
} })) : (_jsx(Img, { src: staticFile(screenshotPath), style: {
|
|
99
|
+
width: "100%",
|
|
100
|
+
height: "100%",
|
|
101
|
+
objectFit: "contain",
|
|
102
|
+
} })) }) })] }));
|
|
98
103
|
};
|
|
99
104
|
//# sourceMappingURL=BrowserFrame.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BrowserFrame.js","sourceRoot":"","sources":["../../../src/compositor/components/BrowserFrame.tsx"],"names":[],"mappings":";AACA,OAAO,EACL,YAAY,EACZ,GAAG,EACH,UAAU,EACV,WAAW,EACX,MAAM,EACN,eAAe,EACf,cAAc,GACf,MAAM,UAAU,CAAC;
|
|
1
|
+
{"version":3,"file":"BrowserFrame.js","sourceRoot":"","sources":["../../../src/compositor/components/BrowserFrame.tsx"],"names":[],"mappings":"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"}
|
package/dist/d-id/client.d.ts
CHANGED
|
@@ -1,7 +1,9 @@
|
|
|
1
1
|
export interface DIDAvatar {
|
|
2
2
|
id: string;
|
|
3
|
+
presenter_id?: string;
|
|
3
4
|
name: string;
|
|
4
|
-
|
|
5
|
+
gender?: string;
|
|
6
|
+
sentiments?: {
|
|
5
7
|
id: string;
|
|
6
8
|
name: string;
|
|
7
9
|
}[];
|
|
@@ -9,6 +11,7 @@ export interface DIDAvatar {
|
|
|
9
11
|
export interface CreateVideoOptions {
|
|
10
12
|
avatarId: string;
|
|
11
13
|
sentimentId?: string;
|
|
14
|
+
voiceId?: string;
|
|
12
15
|
script: string;
|
|
13
16
|
config?: {
|
|
14
17
|
result_format?: "mp4" | "mov" | "webm";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/d-id/client.ts"],"names":[],"mappings":"AAMA,MAAM,WAAW,SAAS;IACxB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/d-id/client.ts"],"names":[],"mappings":"AAMA,MAAM,WAAW,SAAS;IACxB,EAAE,EAAE,MAAM,CAAC;IACX,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,UAAU,CAAC,EAAE;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;CAC7C;AAED,MAAM,WAAW,kBAAkB;IACjC,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE;QACP,aAAa,CAAC,EAAE,KAAK,GAAG,KAAK,GAAG,MAAM,CAAC;QACvC,iBAAiB,CAAC,EAAE,GAAG,GAAG,GAAG,GAAG,IAAI,CAAC;KACtC,CAAC;IACF,UAAU,CAAC,EAAE;QACX,IAAI,EAAE,OAAO,CAAC;QACd,KAAK,EAAE,MAAM,CAAC;KACf,CAAC;CACH;AAED,MAAM,WAAW,WAAW;IAC1B,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,SAAS,GAAG,SAAS,GAAG,MAAM,GAAG,OAAO,GAAG,UAAU,CAAC;IAC9D,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAA;KAAE,CAAC;CAC/C;AAED,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,qBAAa,SAAS;IACpB,OAAO,CAAC,MAAM,CAAS;gBAEX,MAAM,EAAE,MAAM;IAI1B,OAAO,KAAK,OAAO,GAKlB;YAEa,OAAO;IAiEf,WAAW,IAAI,OAAO,CAAC,SAAS,EAAE,CAAC;IASnC,WAAW,CAAC,OAAO,EAAE,kBAAkB,GAAG,OAAO,CAAC;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC;IA0BjF,QAAQ,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC;IAI1C,aAAa,CACjB,EAAE,EAAE,MAAM,EACV,OAAO,GAAE,WAAgB,GACxB,OAAO,CAAC,WAAW,CAAC;IA4BjB,aAAa,CAAC,SAAS,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CAY1E"}
|
package/dist/d-id/client.js
CHANGED
|
@@ -56,30 +56,34 @@ export class DIDClient {
|
|
|
56
56
|
throw lastError ?? new Error("D-ID API request failed after retries");
|
|
57
57
|
}
|
|
58
58
|
async listAvatars() {
|
|
59
|
-
|
|
60
|
-
|
|
59
|
+
// /clips/presenters returns pre-built presenters available on all paid plans
|
|
60
|
+
const data = await this.request("GET", "/clips/presenters");
|
|
61
|
+
return data.presenters ?? data;
|
|
61
62
|
}
|
|
62
63
|
async createVideo(options) {
|
|
64
|
+
const scriptPayload = {
|
|
65
|
+
type: "text",
|
|
66
|
+
input: options.script,
|
|
67
|
+
};
|
|
68
|
+
// Default to male voice (en-US-GuyNeural) to match default male presenter (Adam)
|
|
69
|
+
scriptPayload.provider = {
|
|
70
|
+
type: "microsoft",
|
|
71
|
+
voice_id: options.voiceId ?? "en-US-GuyNeural",
|
|
72
|
+
};
|
|
63
73
|
const body = {
|
|
64
|
-
|
|
65
|
-
script:
|
|
66
|
-
type: "text",
|
|
67
|
-
input: options.script,
|
|
68
|
-
},
|
|
74
|
+
presenter_id: options.avatarId,
|
|
75
|
+
script: scriptPayload,
|
|
69
76
|
};
|
|
70
|
-
if (options.sentimentId) {
|
|
71
|
-
body.sentiment_id = options.sentimentId;
|
|
72
|
-
}
|
|
73
77
|
if (options.config) {
|
|
74
78
|
body.config = options.config;
|
|
75
79
|
}
|
|
76
80
|
if (options.background) {
|
|
77
81
|
body.background = options.background;
|
|
78
82
|
}
|
|
79
|
-
return this.request("POST", "/
|
|
83
|
+
return this.request("POST", "/clips", body);
|
|
80
84
|
}
|
|
81
85
|
async getVideo(id) {
|
|
82
|
-
return this.request("GET", `/
|
|
86
|
+
return this.request("GET", `/clips/${id}`, undefined, 1);
|
|
83
87
|
}
|
|
84
88
|
async pollUntilDone(id, options = {}) {
|
|
85
89
|
const interval = options.interval ?? 5000;
|
package/dist/d-id/client.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/d-id/client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,SAAS,CAAC;AAC5C,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAChD,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAEvC,MAAM,QAAQ,GAAG,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/d-id/client.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -159,7 +159,19 @@ Save all screenshots and record bounding box data for zoom targets.
|
|
|
159
159
|
|
|
160
160
|
### Step 3b: Create Custom Animation Scenes (if planned)
|
|
161
161
|
|
|
162
|
-
For scenes that need animated explainers, flow diagrams, or motion graphics instead of static screenshots
|
|
162
|
+
For scenes that need animated explainers, flow diagrams, or motion graphics instead of static screenshots.
|
|
163
|
+
|
|
164
|
+
**BEFORE writing any Remotion code:**
|
|
165
|
+
1. Read `references/animation-example.md` — it has a complete, working animated component you can copy and adapt. Use the `useStagger` helper pattern from that file.
|
|
166
|
+
2. Load the `remotion-best-practices` skill rules for `timing` and `animations`.
|
|
167
|
+
|
|
168
|
+
**Non-negotiable animation rules:**
|
|
169
|
+
- You MUST call `useCurrentFrame()` in every animation component — without it, nothing moves
|
|
170
|
+
- Use `spring({ frame: frame - DELAY, fps })` with increasing DELAY for sequential reveals
|
|
171
|
+
- At frame 0, NOTHING should be visible — every element starts at opacity 0
|
|
172
|
+
- Connecting lines must animate their width/height from 0 to full
|
|
173
|
+
- Strikethroughs must draw across from left to right
|
|
174
|
+
- Set `durationInFrames` to at least `(number_of_elements × 25) + 60`
|
|
163
175
|
|
|
164
176
|
1. Create a temporary Remotion project in the working directory:
|
|
165
177
|
```bash
|
|
@@ -168,50 +180,18 @@ For scenes that need animated explainers, flow diagrams, or motion graphics inst
|
|
|
168
180
|
cd custom-animations && npm install
|
|
169
181
|
```
|
|
170
182
|
|
|
171
|
-
2.
|
|
183
|
+
2. Read `references/animation-example.md` and use it as your starting template. Adapt the content to match your scenes. The file has a complete `useStagger` helper and working examples for flow diagrams and strikethrough animations.
|
|
172
184
|
|
|
173
|
-
|
|
185
|
+
3. Register it as a composition in `src/Root.tsx`. The `durationInFrames` MUST be long enough for all animations to complete (e.g., if you have 5 elements with 20-frame stagger, you need at least 100+ frames):
|
|
174
186
|
```tsx
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
export const FlowDiagram: React.FC = () => {
|
|
178
|
-
const frame = useCurrentFrame();
|
|
179
|
-
const { fps } = useVideoConfig();
|
|
180
|
-
|
|
181
|
-
// Each step appears sequentially with spring animation
|
|
182
|
-
const step1 = spring({ frame, fps, config: { damping: 200 } });
|
|
183
|
-
const step2 = spring({ frame: frame - 20, fps, config: { damping: 200 } });
|
|
184
|
-
const step3 = spring({ frame: frame - 40, fps, config: { damping: 200 } });
|
|
185
|
-
const step4 = spring({ frame: frame - 60, fps, config: { damping: 200 } });
|
|
186
|
-
|
|
187
|
-
// Arrow draws in between steps
|
|
188
|
-
const arrow1Width = interpolate(step2, [0, 1], [0, 300]);
|
|
189
|
-
const arrow2Width = interpolate(step3, [0, 1], [0, 300]);
|
|
190
|
-
|
|
191
|
-
return (
|
|
192
|
-
<AbsoluteFill style={{ backgroundColor: "#0a0a0a", padding: 80 }}>
|
|
193
|
-
{/* Step 1 fades/scales in */}
|
|
194
|
-
<div style={{ opacity: step1, transform: `scale(${step1})` }}>
|
|
195
|
-
Client → GET /api/random
|
|
196
|
-
</div>
|
|
197
|
-
{/* Arrow draws from left to right */}
|
|
198
|
-
<div style={{ width: arrow1Width, height: 2, backgroundColor: "#4A90D9" }} />
|
|
199
|
-
{/* Step 2 appears after arrow */}
|
|
200
|
-
<div style={{ opacity: step2, transform: `translateY(${(1-step2)*20}px)` }}>
|
|
201
|
-
Server → 402 + config
|
|
202
|
-
</div>
|
|
203
|
-
{/* etc. — each step has a staggered delay */}
|
|
204
|
-
</AbsoluteFill>
|
|
205
|
-
);
|
|
206
|
-
};
|
|
187
|
+
<Composition id="FlowDiagram" component={FlowDiagram}
|
|
188
|
+
durationInFrames={180} fps={30} width={1920} height={1080} />
|
|
207
189
|
```
|
|
208
|
-
|
|
209
|
-
The key pattern: `spring({ frame: frame - DELAY, fps })` where DELAY increases for each element. This creates the sequential reveal effect.
|
|
210
|
-
|
|
211
|
-
3. Register it as a composition in `src/Root.tsx` and render to MP4:
|
|
190
|
+
Then render to MP4:
|
|
212
191
|
```bash
|
|
213
192
|
npx remotion render FlowDiagram ./demo-work/screenshots/scene-flow-diagram.mp4
|
|
214
193
|
```
|
|
194
|
+
**Test first**: run `npx remotion studio` and scrub through the timeline to verify elements animate in sequentially. If everything appears at once, your springs have no delays or your duration is too short.
|
|
215
195
|
|
|
216
196
|
4. Use the rendered MP4 as the `screenshotPath` for that scene in render-props.json.
|
|
217
197
|
|
|
@@ -229,71 +209,31 @@ Skip this step if `--no-avatar` or `--preview` was specified.
|
|
|
229
209
|
|
|
230
210
|
Generate **one single continuous avatar video** with all the narration combined. Do NOT generate separate clips per scene — separate clips create jarring cuts between sentences. One continuous video gives natural speech flow.
|
|
231
211
|
|
|
232
|
-
**D-ID has
|
|
212
|
+
**Use the D-ID Clips API** via the toolkit. It has 136+ professional presenters and works on all paid plans.
|
|
233
213
|
|
|
234
|
-
|
|
214
|
+
1. List available presenters:
|
|
215
|
+
```bash
|
|
216
|
+
npx devrel-toolkit d-id avatars
|
|
217
|
+
```
|
|
235
218
|
|
|
236
|
-
|
|
219
|
+
2. Pick a presenter. Default: `v2_public_Adam@0GLJgELXjc` (Adam — professional male). Concatenate all narrations into one script:
|
|
237
220
|
```json
|
|
238
221
|
[
|
|
239
222
|
{
|
|
240
223
|
"id": "full-narration",
|
|
241
|
-
"narration": "
|
|
242
|
-
"avatarId": "
|
|
224
|
+
"narration": "Full concatenated narration text here...",
|
|
225
|
+
"avatarId": "v2_public_Adam@0GLJgELXjc"
|
|
243
226
|
}
|
|
244
227
|
]
|
|
245
228
|
```
|
|
246
|
-
|
|
229
|
+
|
|
230
|
+
3. Generate:
|
|
247
231
|
```bash
|
|
248
232
|
npx devrel-toolkit d-id generate \
|
|
249
233
|
--script ./demo-work/avatar-script.json \
|
|
250
234
|
--output ./demo-work/avatars/ \
|
|
251
|
-
--avatar "
|
|
235
|
+
--avatar "v2_public_Adam@0GLJgELXjc"
|
|
252
236
|
```
|
|
253
|
-
3. If that avatar fails, list available ones with `npx devrel-toolkit d-id avatars` and pick another.
|
|
254
|
-
|
|
255
|
-
**Option B: Talks API (works on all plans including free — via curl)**
|
|
256
|
-
|
|
257
|
-
If Expressives fails (subscription error, no avatars available), use the Talks API directly. It takes a source photo URL instead of an avatar ID:
|
|
258
|
-
|
|
259
|
-
```bash
|
|
260
|
-
DID_KEY=$(grep DID_API_KEY .env.local | cut -d= -f2)
|
|
261
|
-
|
|
262
|
-
# Concatenate all narration into one string
|
|
263
|
-
NARRATION="Welcome to our platform. ... And that's it."
|
|
264
|
-
|
|
265
|
-
# Create the talk
|
|
266
|
-
RESPONSE=$(curl -s -X POST "https://api.d-id.com/talks" \
|
|
267
|
-
-H "Authorization: Basic $DID_KEY" \
|
|
268
|
-
-H "Content-Type: application/json" \
|
|
269
|
-
-d "{
|
|
270
|
-
\"source_url\": \"https://d-id-public-bucket.s3.us-west-2.amazonaws.com/alice.jpg\",
|
|
271
|
-
\"script\": {
|
|
272
|
-
\"type\": \"text\",
|
|
273
|
-
\"input\": \"$NARRATION\",
|
|
274
|
-
\"provider\": { \"type\": \"microsoft\", \"voice_id\": \"en-US-JennyNeural\" }
|
|
275
|
-
}
|
|
276
|
-
}")
|
|
277
|
-
|
|
278
|
-
TALK_ID=$(echo "$RESPONSE" | python3 -c "import json,sys; print(json.load(sys.stdin)['id'])")
|
|
279
|
-
|
|
280
|
-
# Poll until done, then download
|
|
281
|
-
for i in $(seq 1 60); do
|
|
282
|
-
RESULT=$(curl -s "https://api.d-id.com/talks/$TALK_ID" -H "Authorization: Basic $DID_KEY")
|
|
283
|
-
STATUS=$(echo "$RESULT" | python3 -c "import json,sys; print(json.load(sys.stdin).get('status','unknown'))")
|
|
284
|
-
if [ "$STATUS" = "done" ]; then
|
|
285
|
-
RESULT_URL=$(echo "$RESULT" | python3 -c "import json,sys; print(json.load(sys.stdin).get('result_url',''))")
|
|
286
|
-
curl -sL "$RESULT_URL" -o ./demo-work/avatars/full-narration.mp4
|
|
287
|
-
echo "Downloaded avatar video!"
|
|
288
|
-
break
|
|
289
|
-
fi
|
|
290
|
-
if [ "$STATUS" = "error" ] || [ "$STATUS" = "rejected" ]; then
|
|
291
|
-
echo "FAILED: $RESULT"
|
|
292
|
-
break
|
|
293
|
-
fi
|
|
294
|
-
sleep 5
|
|
295
|
-
done
|
|
296
|
-
```
|
|
297
237
|
|
|
298
238
|
4. This takes 1–5 minutes. The output includes a `manifest.json` with the clip path and total duration. Use this single avatar clip as `avatarClipPath` for the **first scene only** — the PiP will play continuously across all scenes.
|
|
299
239
|
|