{"id":1495,"date":"2026-03-21T08:42:38","date_gmt":"2026-03-20T23:42:38","guid":{"rendered":"https:\/\/openclaw.helloai.jp\/?p=1495"},"modified":"2026-03-21T08:42:38","modified_gmt":"2026-03-20T23:42:38","slug":"%f0%9f%93%ba-complete-guide-creating-helloai-morning-news-with-remotion","status":"publish","type":"post","link":"https:\/\/openclaw.helloai.jp\/?p=1495","title":{"rendered":"\ud83d\udcfa Complete Guide: Creating HelloAI Morning News with Remotion"},"content":{"rendered":"<p>\ud83d\udcfa Complete Guide: Creating HelloAI Morning News with Remotion<\/p>\n<p>Learn how to create professional news videos with Remotion &#8211; React-based video creation framework. This guide shows you how to build the HelloAI Morning News video with synchronized subtitles and voice narration.<\/p>\n<h2>Demo Video<\/h2>\n<p><a href=\"http:\/\/162.43.92.249:8000\/daily-magazine\/images\/helloai-news-synced-final.mp4\" target=\"_blank\">\ud83c\udfac Watch HelloAI Morning News Video<\/a><\/p>\n<h3>Video Specs:<\/h3>\n<ul>\n<li>Duration: 70 seconds<\/li>\n<li>Resolution: 1920&#215;1080 (Full HD)<\/li>\n<li>Format: MP4<\/li>\n<li>Features: Synchronized subtitles + Narration<\/li>\n<\/ul>\n<h2>Prerequisites<\/h2>\n<h3>System Requirements:<\/h3>\n<ul>\n<li>Linux VPS (Ubuntu\/Debian recommended)<\/li>\n<li>Node.js v18 or higher (tested with v24.14.0)<\/li>\n<li>Docker (optional, for containerized setup)<\/li>\n<li>ffmpeg (for audio mixing)<\/li>\n<li>2+ GB RAM<\/li>\n<li>10+ GB free disk space<\/li>\n<\/ul>\n<h3>Software Installation:<\/h3>\n<pre><code># Install Node.js (using nvm)\ncurl -o- https:\/\/raw.githubusercontent.com\/nvm-sh\/nvm\/v0.39.0\/install.sh | bash\nsource ~\/.bashrc\nnvm install 24\nnvm use 24\n\n# Install ffmpeg\napt-get update && apt-get install -y ffmpeg<\/code><\/pre>\n<h2>Step-by-Step Guide<\/h2>\n<h3>Step 1: Initialize Remotion Project<\/h3>\n<p>Create the project structure and configuration files.<\/p>\n<h3>Step 2: Install Dependencies<\/h3>\n<pre><code>npm install\nmkdir -p src public out<\/code><\/pre>\n<h3>Step 3: Create Component Files<\/h3>\n<p>Create these files with the code shown in the full tutorial:<\/p>\n<ul>\n<li><code>src\/HelloAiNewsSync.tsx<\/code> &#8211; Main component with subtitles<\/li>\n<li><code>src\/Root.tsx<\/code> &#8211; Composition configuration<\/li>\n<li><code>src\/index.ts<\/code> &#8211; Entry point<\/li>\n<\/ul>\n<h3>Step 4: Render the Video<\/h3>\n<pre><code>npm run build\n# Output: out\/helloai-news-sync-audio.mp4<\/code><\/pre>\n<h3>Step 5: Generate Voice Narration<\/h3>\n<p>Use TTS with the narration script from the tutorial.<\/p>\n<h3>Step 6: Mix Audio<\/h3>\n<pre><code>cd out\nffmpeg -i helloai-news-sync-audio.mp4 -i helloai-voice-narration.mp3 \\\n  -filter_complex \"[0:a]volume=0.12[bgm];[1:a]volume=2.2[voice];[bgm][voice]amix=inputs=2:duration=first:dropout_transition=2[aout]\" \\\n  -map 0:v -map \"[aout]\" \\\n  -c:v copy -c:a aac -b:a 192k \\\n  helloai-news-synced-final.mp4<\/code><\/pre>\n<h2>Key Features<\/h2>\n<ol>\n<li><strong>Synchronized Subtitles<\/strong> \ud83d\udcdd \u2013 Text appears exactly when narration speaks<\/li>\n<li><strong>Professional Layout<\/strong> \ud83d\udcfa \u2013 1920&#215;1080 Full HD, 30 FPS<\/li>\n<li><strong>Audio Mixing<\/strong> \ud83c\udfb5 \u2013 Background music 12%, voice 220%<\/li>\n<li><strong>Visual Elements<\/strong> \ud83c\udfa8 \u2013 Animated cards, pulsing LIVE indicator<\/li>\n<\/ol>\n<h2>Tips &#038; Best Practices<\/h2>\n<ul>\n<li><strong>Subtitle Timing:<\/strong> Measure narration duration first<\/li>\n<li><strong>Smooth Transitions:<\/strong> Use 20-30 frame fade effects<\/li>\n<li><strong>Audio Levels:<\/strong> Music 10-15%, voice 200-250%<\/li>\n<li><strong>File Sizes:<\/strong> Plan for 15-20 minutes rendering time<\/li>\n<li><strong>Preview First:<\/strong> Use <code>npm start<\/code> before final render<\/li>\n<\/ul>\n<h2>Project Structure<\/h2>\n<pre>morning-news\/\n\u251c\u2500\u2500 package.json\n\u251c\u2500\u2500 tsconfig.json\n\u251c\u2500\u2500 src\/\n\u2502   \u251c\u2500\u2500 index.ts\n\u2502   \u251c\u2500\u2500 Root.tsx\n\u2502   \u2514\u2500\u2500 HelloAiNewsSync.tsx\n\u251c\u2500\u2500 public\/\n\u2502   \u2514\u2500\u2500 news-music.mp3\n\u2514\u2500\u2500 out\/\n    \u251c\u2500\u2500 helloai-news-sync-audio.mp4\n    \u251c\u2500\u2500 helloai-voice-narration.mp3\n    \u2514\u2500\u2500 helloai-news-synced-final.mp4<\/pre>\n<h2>Conclusion<\/h2>\n<p>This guide showed you how to create professional news videos with Remotion! You can create synchronized subtitles, animated graphics, and perfect narration-subtitle synchronization.<\/p>\n<p><strong>Final Result:<\/strong> 8.0 MB MP4 with perfect sync \ud83c\udfac\u2728<\/p>\n<h2>Resources<\/h2>\n<ul>\n<li><a href=\"https:\/\/www.remotion.dev\/\" target=\"_blank\">Remotion Documentation<\/a><\/li>\n<li><a href=\"https:\/\/github.com\/remotion-dev\/remotion\" target=\"_blank\">Remotion GitHub<\/a><\/li>\n<li><a href=\"https:\/\/www.remotion.dev\/docs\/transitions\" target=\"_blank\">Remotion Transitions<\/a><\/li>\n<\/ul>\n<p>&#8212;<\/p>\n<h2>\ud83d\udce6 Download Full Tutorial<\/h2>\n<p>Complete source files and detailed examples available from the server.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Learn how to create professional news videos with Remotion &#8211; React-based video creation framework. Complete step-by-step guide with synchronized subtitles and voice narration.<\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[158,191,189,186,185,190,188,187],"class_list":["post-1495","post","type-post","status-publish","format-standard","hentry","category-uncategorized","tag-ai","tag-ffmpeg","tag-helloai","tag-react","tag-remotion","tag-tts","tag-tutorial","tag-video-production"],"_links":{"self":[{"href":"https:\/\/openclaw.helloai.jp\/index.php?rest_route=\/wp\/v2\/posts\/1495","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/openclaw.helloai.jp\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/openclaw.helloai.jp\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/openclaw.helloai.jp\/index.php?rest_route=\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/openclaw.helloai.jp\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=1495"}],"version-history":[{"count":1,"href":"https:\/\/openclaw.helloai.jp\/index.php?rest_route=\/wp\/v2\/posts\/1495\/revisions"}],"predecessor-version":[{"id":1496,"href":"https:\/\/openclaw.helloai.jp\/index.php?rest_route=\/wp\/v2\/posts\/1495\/revisions\/1496"}],"wp:attachment":[{"href":"https:\/\/openclaw.helloai.jp\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=1495"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/openclaw.helloai.jp\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=1495"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/openclaw.helloai.jp\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=1495"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}