<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Bakkesh KS</title>
    <description>The latest articles on DEV Community by Bakkesh KS (@bakkeshks).</description>
    <link>https://dev.to/bakkeshks</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F1516559%2F3ad407b2-32da-439f-85ec-85de228d19f0.jpg</url>
      <title>DEV Community: Bakkesh KS</title>
      <link>https://dev.to/bakkeshks</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/bakkeshks"/>
    <language>en</language>
    <item>
      <title>VideoToBlogAI: Transform Your Videos Into Technical Blog Post Using AI</title>
      <dc:creator>Bakkesh KS</dc:creator>
      <pubDate>Sun, 17 Nov 2024 19:27:32 +0000</pubDate>
      <link>https://dev.to/bakkeshks/videotoblogai-transform-your-videos-into-technical-blog-post-using-ai-4b57</link>
      <guid>https://dev.to/bakkeshks/videotoblogai-transform-your-videos-into-technical-blog-post-using-ai-4b57</guid>
      <description>&lt;p&gt;&lt;em&gt;This is a submission for the &lt;a href="https://dev.to/challenges/assemblyai"&gt;AssemblyAI Challenge &lt;/a&gt;: Sophisticated Speech-to-Text.&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  What I Built
&lt;/h2&gt;

&lt;p&gt;VideoToBlogAI is an AI-powered web application that automates the creation of technical blog posts from video and audio. This application convert the uploaded media into text format and process the transcriptions by generating an well structured technical blog posts.   &lt;/p&gt;

&lt;h3&gt;
  
  
  Key Features:
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Credit-Based System:&lt;/strong&gt; It employs an credit based system means before processing any media, the platform verifies the remaining credit balance of the user. &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Code Extraction:&lt;/strong&gt; This app can automatically extract code snippets from videos, audio files saving time and effort for developers and technical content creators.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Advanced Analysis:&lt;/strong&gt; It offers word count, character count, and a dynamic table of contents to help users refine their blog posts.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  How it Works:
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;1. Upload Your Content:&lt;/strong&gt; Users can register and upload MP4 videos or MP3 audio files (up to 30 MB) which is send to the backend. Before processing any media, the platform verifies the user credit balance and proceed. &lt;/p&gt;

&lt;p&gt;User Schema:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;- email: String, required, unique
- password: String, required
- username: String, required, unique
- secondsRemaining: Number, default: 1200
- role: String, enum: ["user", "admin"], default: "user", required
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;Blog Post Schema:&lt;br&gt;
&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;- blogPostId: String, required, unique
- userId: ObjectId (ref: "User"), required
- videoUrl: String, required
- text: String, required
- createdAt: Date, default: Date.now
- status: String, default: "completed"
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;&lt;strong&gt;2. AI-Powered Transcription:&lt;/strong&gt; The backend will upload media into uploads folder and send the media to AssemblyAI speech-to-text API which will converts the uploaded media into text format. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;3. Blog Generation:&lt;/strong&gt; After that the text is sent to Google Gemini language model to process the transcription to generate the technical  blog post. The blog post is saved in the mongodb database.&lt;/p&gt;
&lt;h2&gt;
  
  
  Demo
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Project Link:&lt;/strong&gt; &lt;a href="https://shark-app-n5snu.ondigitalocean.app" rel="noopener noreferrer"&gt;https://shark-app-n5snu.ondigitalocean.app&lt;/a&gt;&lt;br&gt;
 &lt;strong&gt;Demo Video:&lt;/strong&gt;  &lt;/p&gt;

&lt;p&gt;&lt;iframe width="710" height="399" src="https://www.youtube.com/embed/5BiB7iiwI7o"&gt;
&lt;/iframe&gt;
&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Source code:&lt;/strong&gt; &lt;/p&gt;
&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&gt;
      &lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fassets.dev.to%2Fassets%2Fgithub-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/bakkeshks" rel="noopener noreferrer"&gt;
        bakkeshks
      &lt;/a&gt; / &lt;a href="https://github.com/bakkeshks/VideoToBlogAI" rel="noopener noreferrer"&gt;
        VideoToBlogAI
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      Convert your video to technical blog post using AI 
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;
&lt;div class="markdown-heading"&gt;
&lt;h1 class="heading-element"&gt;VideoToBlogAI&lt;/h1&gt;
&lt;/div&gt;

&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;Project Proposal for the AssemblyAI Challenge&lt;/h2&gt;
&lt;/div&gt;

&lt;div class="markdown-heading"&gt;
&lt;h3 class="heading-element"&gt;Overview&lt;/h3&gt;
&lt;/div&gt;

&lt;p&gt;VideoToBlogAI is a project designed to generate technical blog posts from various sources such as local videos, and audio files (with a 30 MB limit). It leverages the Google Gemini AI API for language model tasks and AssemblyAI API for speech-to-text functionality.&lt;/p&gt;

&lt;p&gt;&lt;a rel="noopener noreferrer" href="https://github.com/bakkeshks/VideoToBlogAI./images/main.png"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fgithub.com%2Fbakkeshks%2FVideoToBlogAI.%2Fimages%2Fmain.png" alt="Main Image"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a rel="noopener noreferrer" href="https://github.com/bakkeshks/VideoToBlogAI./images/upload.png"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fgithub.com%2Fbakkeshks%2FVideoToBlogAI.%2Fimages%2Fupload.png" alt="Upload Image"&gt;&lt;/a&gt;
&lt;a rel="noopener noreferrer" href="https://github.com/bakkeshks/VideoToBlogAI./images/editpost.png"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fgithub.com%2Fbakkeshks%2FVideoToBlogAI.%2Fimages%2Feditpost.png" alt="EditPost Image"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;div class="markdown-heading"&gt;
&lt;h3 class="heading-element"&gt;Features&lt;/h3&gt;

&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;User registration and sign-in&lt;/strong&gt; with error handling.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Admin analytics&lt;/strong&gt;: blog post generation, total hours processed.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Content uploads&lt;/strong&gt;: MP4 videos, MP3 audio (max 30 MB).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Credit check&lt;/strong&gt;: Verify user credits before generating blog posts and manage available time for processing.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;AI-generated blog posts&lt;/strong&gt;: view, edit, delete, save.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Automatic code extraction&lt;/strong&gt; from videos, audios and youtube url.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Features&lt;/strong&gt;: Word count, character count, dynamic table of contents, semantic analysis.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Rendering&lt;/strong&gt;: Markdown format with Next.js for a user-friendly interface.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Transcription services&lt;/strong&gt;:
&lt;ul&gt;
&lt;li&gt;Video/audio: AssemblyAI's speech-to-text API.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Google Gemini API&lt;/strong&gt;: Transform transcriptions into blog posts.&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="markdown-heading"&gt;
&lt;h3 class="heading-element"&gt;Technologies Used&lt;/h3&gt;…&lt;/div&gt;
&lt;/div&gt;
  &lt;/div&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/bakkeshks/VideoToBlogAI" rel="noopener noreferrer"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;


&lt;p&gt;&lt;strong&gt;Screenshots:&lt;/strong&gt; &lt;br&gt;
Login Page:&lt;br&gt;&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fxgigijl41gi19628a6f7.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fxgigijl41gi19628a6f7.png" alt="LoginPage" width="800" height="446"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Dashboard:&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fddymfqp90i9ne6kljduy.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fddymfqp90i9ne6kljduy.png" alt="Dashboard" width="800" height="220"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Uploadvideo:&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Feqm0wvcziwq1buufy31w.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Feqm0wvcziwq1buufy31w.png" alt=" Uploadvideo" width="800" height="171"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Viewpost:&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fv2co6hubeh0cuq9b7z03.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fv2co6hubeh0cuq9b7z03.png" alt=" Viewpost" width="800" height="380"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Editpost:&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F84d9yjbgfbnxvqyit32e.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F84d9yjbgfbnxvqyit32e.png" alt=" Editpost" width="800" height="262"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Adminanalytics:&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fua87jgxq9omu8qfz6ljy.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fua87jgxq9omu8qfz6ljy.png" alt="Adminanalytics" width="800" height="343"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Technologies Used:
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Frontend:&lt;/strong&gt; Next.js, Shadcn/UI, Tailwind CSS, Highlight.js&lt;br&gt;
&lt;strong&gt;Backend:&lt;/strong&gt; Node.js, Express.js, MongoDB&lt;br&gt;
&lt;strong&gt;AI APIs:&lt;/strong&gt; Google Gemini AI API (for language model tasks), AssemblyAI API (for speech-to-text)&lt;br&gt;
&lt;strong&gt;Authentication:&lt;/strong&gt; JWT (JSON Web Tokens)&lt;/p&gt;

&lt;h2&gt;
  
  
  Journey
&lt;/h2&gt;

&lt;p&gt;Building VideoToBlogAI has been an great project. The most challenging part was implementing a video-to-text API that could accurately convert videos into text. Once I achieved this, I was able to leverage Google Gemini API to generate technical blog posts.&lt;/p&gt;

&lt;p&gt;VideoToBlogAI leverages the robust capabilities of &lt;em&gt;Universal-2, AssemblyAI's state-of-the-art speech-to-text model&lt;/em&gt;, to accurately transcribe audio and video content. This integration significantly enhances the platform ability to process diverse media formats and generate high quality blog posts. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Price categories:&lt;/strong&gt;&lt;br&gt;
Sophisticated Speech-to-Text&lt;br&gt;
&lt;strong&gt;Team Members:&lt;/strong&gt; &lt;br&gt;
&lt;a class="mentioned-user" href="https://dev.to/bakkeshks"&gt;@bakkeshks&lt;/a&gt; &lt;/p&gt;

</description>
      <category>devchallenge</category>
      <category>assemblyaichallenge</category>
      <category>ai</category>
      <category>api</category>
    </item>
  </channel>
</rss>
