agentreel 0.1.0 → 0.1.2

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/README.md CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
  Turn your Claude Code sessions into viral demo videos.
4
4
 
5
- https://github.com/user-attachments/assets/070ee610-298c-4989-8d7e-369ca495469e
5
+ https://github.com/user-attachments/assets/474fd85d-3b35-48f4-82b8-1b337840fb51
6
6
 
7
7
  ## Install
8
8
 
package/bin/agentreel.mjs CHANGED
@@ -258,7 +258,7 @@ function extractBrowserHighlights(videoPath, task) {
258
258
 
259
259
  // ── Render ──────────────────────────────────────────────────
260
260
 
261
- function renderVideo(props, output, musicPath) {
261
+ async function renderVideo(props, output, musicPath) {
262
262
  const publicDir = join(ROOT, "public");
263
263
  if (!existsSync(publicDir)) mkdirSync(publicDir, { recursive: true });
264
264
  if (musicPath && existsSync(musicPath)) {
@@ -267,11 +267,33 @@ function renderVideo(props, output, musicPath) {
267
267
 
268
268
  const absOutput = resolve(output);
269
269
  const propsJSON = JSON.stringify(props);
270
- const remotion = join(ROOT, "node_modules", ".bin", "remotion");
271
270
 
272
- execFileSync(remotion, ["render", "CastVideo", absOutput, "--props", propsJSON], {
273
- cwd: ROOT,
274
- stdio: ["ignore", "inherit", "inherit"],
271
+ // Render using Remotion's Node.js API — no CLI binary needed
272
+ const { bundle } = await import("@remotion/bundler");
273
+ const { renderMedia, selectComposition } = await import("@remotion/renderer");
274
+
275
+ const entryPoint = join(ROOT, "src", "index.ts");
276
+
277
+ console.error(" Bundling...");
278
+ const serveUrl = await bundle({
279
+ entryPoint,
280
+ webpackOverride: (config) => config,
281
+ });
282
+
283
+ console.error(" Selecting composition...");
284
+ const composition = await selectComposition({
285
+ serveUrl,
286
+ id: "CastVideo",
287
+ inputProps: props,
288
+ });
289
+
290
+ console.error(" Rendering...");
291
+ await renderMedia({
292
+ composition,
293
+ serveUrl,
294
+ codec: "h264",
295
+ outputLocation: absOutput,
296
+ inputProps: props,
275
297
  });
276
298
 
277
299
  const size = statSync(absOutput).size;
@@ -413,7 +435,7 @@ async function main() {
413
435
  console.error(` ${highlights.length} highlights extracted`);
414
436
 
415
437
  console.error("Step 3/3: Rendering video...");
416
- renderVideo({
438
+ await renderVideo({
417
439
  title: videoTitle,
418
440
  subtitle: prompt,
419
441
  highlights,
@@ -443,7 +465,7 @@ async function main() {
443
465
  console.error(` ${highlights.length} highlights extracted`);
444
466
 
445
467
  console.error("Step 3/3: Rendering video...");
446
- renderVideo({
468
+ await renderVideo({
447
469
  title: videoTitle,
448
470
  subtitle: prompt,
449
471
  highlights,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "agentreel",
3
- "version": "0.1.0",
3
+ "version": "0.1.2",
4
4
  "description": "Turn Claude Code sessions into viral demo videos",
5
5
  "bin": {
6
6
  "agentreel": "./bin/agentreel.mjs"
@@ -10,6 +10,8 @@
10
10
  "render": "remotion render CastVideo out/cast.mp4"
11
11
  },
12
12
  "dependencies": {
13
+ "@remotion/bundler": "^4",
14
+ "@remotion/renderer": "^4",
13
15
  "@remotion/cli": "^4",
14
16
  "remotion": "^4",
15
17
  "react": "^18",
@@ -32,5 +34,12 @@
32
34
  "type": "git",
33
35
  "url": "git+https://github.com/islo-labs/agentreel.git"
34
36
  },
35
- "keywords": ["cli", "demo", "video", "claude", "agent", "remotion"]
37
+ "keywords": [
38
+ "cli",
39
+ "demo",
40
+ "video",
41
+ "claude",
42
+ "agent",
43
+ "remotion"
44
+ ]
36
45
  }
package/src/CastVideo.tsx CHANGED
@@ -101,6 +101,23 @@ export const CastVideo: React.FC<CastProps> = ({
101
101
  {/* Subtle animated glow blobs in background */}
102
102
  <AnimatedBackground frame={frame} duration={durationInFrames} />
103
103
 
104
+ {/* Global watermark — always visible */}
105
+ <div
106
+ style={{
107
+ position: "absolute",
108
+ bottom: 28,
109
+ width: "100%",
110
+ textAlign: "center",
111
+ zIndex: 5,
112
+ fontFamily: MONO,
113
+ fontSize: 12,
114
+ color: "rgba(255,255,255,0.18)",
115
+ letterSpacing: 2,
116
+ }}
117
+ >
118
+ made with ♥ by agentreel
119
+ </div>
120
+
104
121
  <MusicTrack />
105
122
 
106
123
  <Sequence durationInFrames={titleFrames}>
@@ -993,7 +1010,7 @@ const EndCard: React.FC<{ text: string; url?: string }> = ({ text, url }) => {
993
1010
  letterSpacing: 3,
994
1011
  }}
995
1012
  >
996
- MADE WITH AGENTREEL
1013
+ made with ♥ by agentreel
997
1014
  </div>
998
1015
  </AbsoluteFill>
999
1016
  );