<?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: Bhavya Verma</title>
    <description>The latest articles on DEV Community by Bhavya Verma (@beebombshell).</description>
    <link>https://dev.to/beebombshell</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%2F249623%2F560b820f-5a85-4857-8e05-ed5c7a70b8b9.jpg</url>
      <title>DEV Community: Bhavya Verma</title>
      <link>https://dev.to/beebombshell</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/beebombshell"/>
    <language>en</language>
    <item>
      <title>How To Integrate Supabase Cloud Functions With No Code Visually Using BuildShip</title>
      <dc:creator>Bhavya Verma</dc:creator>
      <pubDate>Fri, 19 Jan 2024 01:30:00 +0000</pubDate>
      <link>https://dev.to/buildship/how-to-integrate-supabase-cloud-functions-with-no-code-visually-using-buildship-2gf</link>
      <guid>https://dev.to/buildship/how-to-integrate-supabase-cloud-functions-with-no-code-visually-using-buildship-2gf</guid>
      <description>&lt;p&gt;The world of software development constantly evolves, and today we will witness the full potential of low-code in action. In this blog post, we will explore the process of creating and implementing cloud functions for Supabase using BuildShip, a powerful low-code platform.&lt;/p&gt;

&lt;p&gt;With BuildShip, you can visually develop backend logic and integrate with leading AI models and third-party services like Supabase, all without needing to write a single line of code.&lt;/p&gt;

&lt;h2&gt;
  
  
  What is Supabase?
&lt;/h2&gt;

&lt;p&gt;Supabase is one of the favorite tools for developers worldwide. It is an open source software as a service, and provides hosted backend services such as Postgres database, authentication, and file storage. Supabase also has an extensive documentation for almost every use case required to make the development process faster.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fs0wdeg9xztp9n7vsu4i4.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fs0wdeg9xztp9n7vsu4i4.png" alt="What is Supabase" width="800" height="400"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Supabase projects can be integrated with all-time favorite tools such as MySQL and TypeScript, catering to developers' preferences and requirements. Through OAuth2-powered platforms like Appsmith, Supabase users can efficiently authenticate and authorize requests, ensuring enhanced security and privacy for their applications.&lt;/p&gt;

&lt;p&gt;With BuildShip’s ability to build robust backend APIs and Supabase platform's flexibility, developers can handle a large number of users without compromising speed or performance. Supabase's strong focus on popular database integrations and the drop-in nodes from BuildShip further enhances scalability, allowing developers to easily connect with their preferred databases and existing assets.&lt;/p&gt;

&lt;h2&gt;
  
  
  Supabase vs Firebase
&lt;/h2&gt;

&lt;p&gt;When considering backend solutions, the comparison between Supabase and Firebase often arises. Both Supabase and Firebase offer integration options for applications. They share the convenience of setting up projects directly in the browser and provide real-time data monitoring through user-friendly dashboards.&lt;/p&gt;

&lt;p&gt;Firebase operates as a document store, while Supabase leans on PostgreSQL, a robust SQL-based relational database management system. This foundational difference can significantly impact data handling and structure for developers.&lt;/p&gt;

&lt;p&gt;While BuildShip supports integrations for both platforms, this blog will specifically explore integrating Supabase into your backend workflow.&lt;/p&gt;

&lt;h2&gt;
  
  
  Building a Workflow with Supabase and BuildShip
&lt;/h2&gt;

&lt;p&gt;To demonstrate the capabilities of BuildShip, we will create a workflow that is triggered whenever a new row is inserted into a Supabase table. Our ultimate objective is to summarize and classify the large text content within the newly inserted row.&lt;/p&gt;

&lt;p&gt;Let's dive into the step-by-step process.&lt;/p&gt;

&lt;h3&gt;
  
  
  Selecting the Trigger
&lt;/h3&gt;

&lt;p&gt;In BuildShip, we start by creating a brand new workflow. The first step is to select a trigger. For this example, we choose the REST API call trigger, which will kick off the execution of our workflow. Once deployed, we will obtain a publicly accessible API endpoint to connect with Supabase.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F5sl3q54e1rz9c8p0djfd.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F5sl3q54e1rz9c8p0djfd.png" alt="REST API call trigger" width="800" height="461"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Adding the Cohere Integration Nodes
&lt;/h3&gt;

&lt;p&gt;We now move on to adding the Cohere integration nodes to summarize and classify the large text content from the Supabase requests in parallel. Adding a parallel node allows both nodes to be executed simultaneously, improving efficiency and reducing execution time.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F4591f0vjv7oi5m1u0rhi.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F4591f0vjv7oi5m1u0rhi.png" alt="Cohere integration nodes" width="800" height="344"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Cohere Text Summarizer Node&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The first node we add is the Cohere Text Summarizer. We input our Cohere API key and extract the large text field from the request body. We set the length of the summarized text to short and the format to a paragraph. Additionally, we adjust the temperature to 0.7 for optimal results.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F2yquo490efcnil2qulrf.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F2yquo490efcnil2qulrf.png" alt="Cohere Text Summarizer Node" width="800" height="459"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;QUICK TIP 💡: Make sure to save your sensitive data like API Keys in the BuildShip Secret Manager. Learn more how to secure your keys with BuildShip here.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Cohere Classify Node&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Next, we add the Cohere Classify node. Similar to the previous one, we input our API key and pass the text we want to classify as an array item. We use the large text from the request body and provide a set of classification examples to provide context to the model.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F3ycarjts4lrln9kk5buq.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F3ycarjts4lrln9kk5buq.png" alt="Cohere Classify Node" width="800" height="461"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Adding Supabase Integration
&lt;/h3&gt;

&lt;p&gt;Moving forward, we focus on adding the Supabase node to update the appropriate row with the values generated by the Cohere nodes.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Navigate to the Supabase group within the nodes library and select the Update Supabase Row node.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fej5z2wh0yeb0wl9kxy2z.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fej5z2wh0yeb0wl9kxy2z.png" alt="Adding Supabase Integration" width="800" height="460"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Configure the node by setting the API URL and the Supabase Secret Key obtained from the project settings.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Specify the row you want to update by adding a filter with the ID equal to the Row ID from the request body.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F1uk4h2115lr1g15et92n.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F1uk4h2115lr1g15et92n.png" alt="Adding the filter for supabase updation" width="800" height="390"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Finally, define the columns to update as an object, including the summary value returned from the Cohere Text Summarizer node and the first item returned from the Cohere Classify node.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F3imsm2oaqltuc07qp9cm.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F3imsm2oaqltuc07qp9cm.png" alt="Define the columns to update" width="800" height="502"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Returning Success Response
&lt;/h3&gt;

&lt;p&gt;To indicate a successful execution of our workflow, we add a return node and set the status code to OK, with the value set to success.&lt;/p&gt;

&lt;h2&gt;
  
  
  Connecting BuildShip with Supabase
&lt;/h2&gt;

&lt;p&gt;With the BuildShip workflow now complete, we can connect it to our Supabase table to start listening for changes in real-time. Here's how to set it up:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;In Supabase, go to the webhook section and create a new webhook.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Provide a name, such as buildship-webhook, and select the demo table you want to listen for changes on.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Choose to listen for insert events only and set the webhook type to HTTP Request with the method as POST.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Retrieve the endpoint URL from your workflow in BuildShip and paste it in the URL field.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Save the webhook to enable real-time updates from your table.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;


&lt;div class="crayons-card c-embed text-styles text-styles--secondary"&gt;
      &lt;div class="c-embed__cover"&gt;
        &lt;a href="https://www.youtube.com/watch?si=_amj8mv2vwXRQBpF&amp;amp;v=BXLnDErMZiU&amp;amp;feature=youtu.be" class="c-link s:max-w-50 align-middle" rel="noopener noreferrer"&gt;
          &lt;img alt="" src="https://res.cloudinary.com/practicaldev/image/fetch/s--2fLjuFft--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://i.ytimg.com/vi/BXLnDErMZiU/maxresdefault.jpg" height="450" class="m-0" width="800"&gt;
        &lt;/a&gt;
      &lt;/div&gt;
    &lt;div class="c-embed__body"&gt;
      &lt;h2 class="fs-xl lh-tight"&gt;
        &lt;a href="https://www.youtube.com/watch?si=_amj8mv2vwXRQBpF&amp;amp;v=BXLnDErMZiU&amp;amp;feature=youtu.be" rel="noopener noreferrer" class="c-link"&gt;
          Connecting BuildShip with Supabase - YouTube
        &lt;/a&gt;
      &lt;/h2&gt;
        &lt;p class="truncate-at-3"&gt;
          Get started with BuildShip 👉 https://buildship.comA Low-code Visual Backend Builder with AI 💬 Chat and build together with a community of no-code/low-code ...
        &lt;/p&gt;
      &lt;div class="color-secondary fs-s flex items-center"&gt;
          &lt;img alt="favicon" class="c-embed__favicon m-0 mr-2 radius-0" src="https://res.cloudinary.com/practicaldev/image/fetch/s--P9hZ5Ysz--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://www.youtube.com/s/desktop/ae5198ff/img/favicon.ico" width="16" height="16"&gt;
        youtube.com
      &lt;/div&gt;
    &lt;/div&gt;
&lt;/div&gt;


&lt;h2&gt;
  
  
  Testing and Results
&lt;/h2&gt;

&lt;p&gt;At this point, we have successfully set up the integration between BuildShip and Supabase. Let's test our setup by inserting a new row into Supabase. Upon saving the row, our BuildShip workflow will be triggered, summarizing and classifying the text, and updating the corresponding row with the generated values. This end-to-end process proves the efficiency and effectiveness of the BuildShip platform. Alternatively you can always view the backend code of each node by on the “&amp;lt;/&amp;gt;” icon.&lt;/p&gt;

&lt;p&gt;If you enjoyed our content, please give us a follow on Twitter or join our Discord in case of any questions. We look forward to hearing from you! 💜&lt;/p&gt;

</description>
      <category>database</category>
      <category>node</category>
      <category>codenewbie</category>
      <category>backend</category>
    </item>
    <item>
      <title>Object Detection with BuildShip's Google Vision API Template</title>
      <dc:creator>Bhavya Verma</dc:creator>
      <pubDate>Thu, 18 Jan 2024 09:40:31 +0000</pubDate>
      <link>https://dev.to/buildship/object-detection-with-buildships-google-vision-api-template-4nb4</link>
      <guid>https://dev.to/buildship/object-detection-with-buildships-google-vision-api-template-4nb4</guid>
      <description>&lt;p&gt;Creating powerful backend solutions can often be a daunting task, especially when dealing with complex functionalities like image processing and object detection. However, with the advent of AI-powered low-code platforms, the game has changed. BuildShip is one such platform that is revolutionizing the way developers and businesses implement backend workflows.&lt;/p&gt;

&lt;p&gt;Today, we're diving into a feature that combines the simplicity of low-code development with the power of AI: the Google Vision API object detection template in BuildShip.&lt;/p&gt;

&lt;h2&gt;
  
  
  Introducing the Google Vision API Template on BuildShip
&lt;/h2&gt;

&lt;p&gt;BuildShip's new template leverages the Google Vision API to create an API endpoint that does more than just analyze an image. It detects objects within the image and returns a new image with those objects outlined. This feature is perfect for applications that require visual recognition capabilities, such as inventory management, security surveillance, or even social media platforms.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fihtwcww9okhnp0g13fgs.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fihtwcww9okhnp0g13fgs.png" alt="Google Vision API Template" width="800" height="547"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Step-by-Step Guide to Using the Object Detection Template
&lt;/h2&gt;

&lt;p&gt;Let's walk through the process of setting up an object detection workflow using BuildShip's intuitive interface:&lt;/p&gt;

&lt;h3&gt;
  
  
  Step 1: Trigger Creation
&lt;/h3&gt;

&lt;p&gt;First, you'll create a trigger for your workflow. This will be a GET request with a custom path. For our example, we'll name it detectobjects. This endpoint will be the entry point for our object detection service.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fq397z52oxfnxia3yq1jz.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fq397z52oxfnxia3yq1jz.png" alt="Trigger Creation" width="750" height="328"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Step 2: Handling Image URLs
&lt;/h3&gt;

&lt;p&gt;Next, you'll set up a node to handle the image URL passed as a query parameter. This parameter, named imageURL, is essential as it points to the image you want to analyze and is marked as required.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F2plcaldafh5q5l8lk05z.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F2plcaldafh5q5l8lk05z.png" alt="Handling Image URLs" width="750" height="324"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Step 3: Object Detection
&lt;/h3&gt;

&lt;p&gt;Now, you'll use the detect objects in image node, which takes the imageURL from the query and utilizes the Google Cloud Vision package to identify and return the objects found in the image.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fyd4va8g2y5rjpporyz2q.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fyd4va8g2y5rjpporyz2q.png" alt="Object Detection" width="750" height="264"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Step 4: Drawing Boundaries
&lt;/h3&gt;

&lt;p&gt;After detection, the workflow passes the image and detected objects to the draw multiple object boundaries node. Here, you'll need to ensure that your Browserless key is set correctly, as the node requires this to function.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Frcc3iufh77zbtyxcfzh8.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Frcc3iufh77zbtyxcfzh8.png" alt="Drawing Boundaries" width="750" height="376"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Step 5: Finalizing the Output
&lt;/h3&gt;

&lt;p&gt;The last node in the workflow creates a response with the highlighted objects and their respective data. This information will be packaged neatly, ready to be returned to the user.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fzc1lprnahne2j5wnklog.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fzc1lprnahne2j5wnklog.png" alt="Finalizing the Output" width="750" height="606"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Step 6: Shipping the Workflow
&lt;/h3&gt;

&lt;p&gt;Once everything is set up, you simply click on "ship" to deploy your workflow. BuildShip provides a URL for the newly created endpoint, which you can immediately test with any image.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fojxd170a63ockt0emvkx.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fojxd170a63ockt0emvkx.png" alt="Shipping the Workflow" width="800" height="403"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Testing the Workflow
&lt;/h3&gt;

&lt;p&gt;With the workflow deployed, you can use tools like Postman to send an image URL to your new endpoint. The result? A JSON response with the detected objects and a link to the processed image with the outlined objects. It's that simple and efficient.&lt;/p&gt;

&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;BuildShip's Google Vision API object detection template is a testament to the platform's commitment to simplifying backend development. By leveraging AI and a user-friendly low-code approach, BuildShip enables developers and businesses to integrate complex functionalities like object detection with just a few clicks.&lt;/p&gt;

&lt;p&gt;With BuildShip, you're not just building workflows; you're unlocking a world of possibilities that AI and low-code solutions bring to the table. Whether you're a seasoned developer or a business professional with no coding experience, BuildShip empowers you to create robust backend systems that cater to your unique needs.&lt;/p&gt;

&lt;p&gt;Stay tuned for more insights on how BuildShip can help you streamline your backend development processes and harness the power of AI with ease. Happy Building!&lt;/p&gt;

&lt;p&gt;If you enjoyed our content, please give us a follow on Twitter or join our Discord in case of any questions. We look forward to hearing from you! 💜&lt;/p&gt;

</description>
      <category>beginners</category>
      <category>tutorial</category>
      <category>ai</category>
      <category>api</category>
    </item>
    <item>
      <title>How to Create a Telegram Bot with No Code - using BuildShip Workflow Builder (2024)</title>
      <dc:creator>Bhavya Verma</dc:creator>
      <pubDate>Thu, 18 Jan 2024 09:16:27 +0000</pubDate>
      <link>https://dev.to/buildship/how-to-create-a-telegram-bot-with-no-code-using-buildship-workflow-builder-2024-339n</link>
      <guid>https://dev.to/buildship/how-to-create-a-telegram-bot-with-no-code-using-buildship-workflow-builder-2024-339n</guid>
      <description>&lt;p&gt;Are you excited about building your very own Telegram bot, but the idea of coding makes you break into a sweat? Look no further, because we're about to take you on a journey where coding skills aren't required! In this blog post, we'll walk you through creating a powerful and interactive Telegram bot using BuildShip. With BuildShip, you can bring your bot dreams to life without writing a single line of code. Let's dive in and start building our Telegram bot together!&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 1. Setting Up Your BuildShip Project 🚚
&lt;/h2&gt;

&lt;p&gt;To kickstart this adventure, we'll need to set up our BuildShip project. It's easy! Open BuildShip, head over to your workflows, and simply click the "Add New Workflow" button to get started. The first step is to pick a trigger, and for our bot, we're going to choose the "New Telegram Bot Trigger".&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Frdx8hw3wf4n0ltdo08rh.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Frdx8hw3wf4n0ltdo08rh.png" alt="Setting Up Your BuildShip Project" width="800" height="413"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This trigger lets your bot respond to incoming messages on Telegram - pretty cool, right?&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 2. Getting Your API Token 🃏
&lt;/h2&gt;

&lt;p&gt;But wait, before we dive into the fun stuff, we need an API token from Telegram. Open up Telegram and search for our trusty friend, "&lt;a class="mentioned-user" href="https://dev.to/botfather"&gt;@botfather&lt;/a&gt;". This Telegram bot is here to guide us through creating our bots. If you're not on Telegram yet, create an account, and then search for "&lt;a class="mentioned-user" href="https://dev.to/botfather"&gt;@botfather&lt;/a&gt;". Make sure to look for the verified checkmark next to its name - that's how you know it's the real one.&lt;/p&gt;

&lt;p&gt;Once you're chatting with "&lt;a class="mentioned-user" href="https://dev.to/botfather"&gt;@botfather&lt;/a&gt;", type &lt;code&gt;/start&lt;/code&gt; to get things rolling. Among the options, go ahead and select &lt;code&gt;/newbot&lt;/code&gt; to create a new bot. "&lt;a class="mentioned-user" href="https://dev.to/botfather"&gt;@botfather&lt;/a&gt;" will ask for a name and a username for your bot. Let's name ours "BuildShip Bot" and give it the username "buildship_bot."&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F48uxww6ce65u090e1nm2.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F48uxww6ce65u090e1nm2.png" alt="Getting Your API Token" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;After you've wrapped up the process, "&lt;a class="mentioned-user" href="https://dev.to/botfather"&gt;@botfather&lt;/a&gt;" will hand you an API token. Don't forget to copy that token – we'll need it later in BuildShip!&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 3. Configuring the Telegram Node 📱
&lt;/h2&gt;

&lt;p&gt;Back in BuildShip, we need to set up the Telegram node to enable our bot to send messages. This will let our bot send messages. Add a new node from the node library and search for "Send Telegram Message." This node lets us send messages through our bot. Now, let's fill in the required fields.&lt;/p&gt;

&lt;p&gt;First, we need the chat ID, which is like the address of the conversation with our bot. To find it, create a new group on Telegram and invite the bot you just created, along with the "raw data bot." The "raw data bot" will provide you with the chat ID. Copy it and paste it in the designated field in BuildShip.&lt;/p&gt;

&lt;p&gt;Next up, we need the Telegram API key. Click on the secrets field and pick the Telegram secret you created earlier. This ensures your API key is safely stored, and accessible only to your BuildShip project.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fkkcytxzoy1unn00gsx1v.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fkkcytxzoy1unn00gsx1v.png" alt="Configuring the Telegram Node" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Lastly, type in the message you want your bot to send, something friendly like "Hello from BuildShip!". And just like that, we've set up the basics for our bot to chat away.&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 4. Deploying and Testing the Workflow 🚀
&lt;/h2&gt;

&lt;p&gt;With everything in place, it's time to set our workflow in motion. Hit the "Ship Workflow" button to deploy your bot. Invite your BuildShip bot to your Telegram chat group and test it out. You should receive a response from your bot, confirming that everything is working as expected.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F2371azeh4mzjpwtbqvgn.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F2371azeh4mzjpwtbqvgn.png" alt="Deploying and Testing the Workflow" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 5. Enhancing Your Telegram Bot 🤖
&lt;/h2&gt;

&lt;p&gt;Now that your basic bot is up and running, let's make it even more interactive and dynamic. To do that, we'll use the OpenAI GPT Text Generator node. This node lets us generate text responses based on user prompts.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fk8oha9xqtcwyvwvizsg1.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fk8oha9xqtcwyvwvizsg1.png" alt="Enhancing Your Telegram Bot" width="800" height="365"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Add the OpenAI GPT Text Generator node from the node library. Fill in the required fields, including the API key, user prompt, and system prompt. The API key can be obtained from OpenAI and stored securely using BuildShip secrets. The user prompt is the message sent by the user, while the system prompt is a suggestion for the bot's response.&lt;/p&gt;

&lt;p&gt;Update the chat ID and Telegram API fields with the appropriate values. The text field will now be the response generated by the ChatGPT node. The response field will remain the same, capturing the response from the Telegram node.&lt;/p&gt;

&lt;h2&gt;
  
  
  Conclusion 🎬
&lt;/h2&gt;

&lt;p&gt;You've done it! You've successfully brought your very own Telegram bot to life with BuildShip. In just a few easy steps, you've set up a bot that can chat and even generate dynamic responses. BuildShip offers a powerful platform that combines the simplicity of no-code development with the creative possibilities of coding. With this foundation, you can let your imagination run wild and expand your bot's capabilities. So go ahead, explore the endless possibilities, and enjoy building with BuildShip!&lt;/p&gt;

&lt;p&gt;Remember, this blog post only scratches the surface of what you can achieve with BuildShip. Feel free to explore and experiment with other nodes and functionalities to further personalize your Telegram bot. Happy building!&lt;/p&gt;

&lt;p&gt;If you enjoyed our content, please give us a follow on Twitter or join our Discord in case of any questions. We look forward to hearing from you! 💜&lt;/p&gt;

</description>
      <category>javascript</category>
      <category>tutorial</category>
      <category>ai</category>
      <category>codenewbie</category>
    </item>
    <item>
      <title>Generate and Send Stripe Summary Reports with BuildShip</title>
      <dc:creator>Bhavya Verma</dc:creator>
      <pubDate>Thu, 18 Jan 2024 08:52:11 +0000</pubDate>
      <link>https://dev.to/buildship/generate-and-send-stripe-summary-reports-with-buildship-1dif</link>
      <guid>https://dev.to/buildship/generate-and-send-stripe-summary-reports-with-buildship-1dif</guid>
      <description>&lt;p&gt;If you're seeking a powerful tool that can help you build complex backend solutions with the ease of low-code and no-code, look no further than BuildShip. This blog will guide you on how to generate and send a Stripe summary report by email using BuildShip's new feature.&lt;/p&gt;

&lt;h2&gt;
  
  
  What is BuildShip?
&lt;/h2&gt;

&lt;p&gt;BuildShip is an AI low-code workflow backend builder that simplifies the process of creating backend solutions. It offers a variety of templates and features that can be customized to suit your specific needs. One of these features is the ability to generate a Stripe summary report.&lt;/p&gt;

&lt;h2&gt;
  
  
  How to Generate a Stripe Summary Report with BuildShip
&lt;/h2&gt;

&lt;p&gt;To begin with, navigate to your project in BuildShip and select the template for the workflow that suits your needs. In this case, we're focusing on the 'Stripe Summary Report' template.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fv0z6poq29rs5c3vs4pxp.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fv0z6poq29rs5c3vs4pxp.png" alt="Stripe Summary Report Workflow" width="800" height="526"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Once you've selected your template, you'll see that most of the work is already done for you. There are just a few fields for you to fill in. Let's walk through each node:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Trigger Node:&lt;/strong&gt; This is your schedule or CRON job with a location. You can set your CRON syntax schedule once a month and define the time zone.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fomo8yurp2zi8h2oqk0m2.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fomo8yurp2zi8h2oqk0m2.png" alt="CRON Job Node" width="750" height="400"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Generate Stripe Report Node:&lt;/strong&gt; Here, you'll see a warning that the Stripe API key is required. You can safely store your secrets in BuildShip. If you already have a Stripe key, you can select it here.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F540jt2duehjjkkw9db6e.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F540jt2duehjjkkw9db6e.png" alt="Generate Stripe Report Node" width="750" height="262"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;JSON to HTML Node:&lt;/strong&gt; This node turns the JSON from Stripe into HTML. We'll delve into this more shortly.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fm4xgv4j57unau17nokkl.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fm4xgv4j57unau17nokkl.png" alt="JSON to HTML Node" width="750" height="262"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Generate PDF Document Node:&lt;/strong&gt; This node uses Puppeteer to convert the HTML input into a PDF document and saves it to the cloud storage. The input comes from the generated HTML, and the browserless key comes from your secrets.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F12kdzmv466mp47a7xzcz.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F12kdzmv466mp47a7xzcz.png" alt="Generate PDF Document Node" width="750" height="684"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Send Email Node:&lt;/strong&gt; This is the final node, which sends emails with the PDF as an attachment. You'll be using the Resend API for this. Enter your Resend secret, recipient email, and the 'from' address.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fvoosrbc8gxznmc1uk8xn.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fvoosrbc8gxznmc1uk8xn.png" alt="Send Email Node" width="750" height="552"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Once you've filled in all the necessary fields, you're ready to deploy your summary report generator. After successful deployment, you can see your workflow in action.&lt;/p&gt;

&lt;h2&gt;
  
  
  Customizing Your Workflow
&lt;/h2&gt;

&lt;p&gt;One of the standout features of BuildShip is its ability to customize and tweak parts of your workflow. For instance, if you want to add a footer to the HTML of your Stripe report, you can use the AI feature in BuildShip to do this. Simply click on the magic wand button next to the node, write your prompt, and let the AI work its magic. In this case, we're adding a footer that says 'Built with BuildShip'.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Frl4qp6isq4udhrrsraby.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Frl4qp6isq4udhrrsraby.png" alt="Customizing Your Workflow" width="800" height="335"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;BuildShip offers a powerful and flexible solution for building your own backend solutions. With its low-code and no-code approach, it's easier than ever to get up and running with your own customized workflows. Stay tuned for more tutorials on how to get the most out of BuildShip.&lt;/p&gt;

&lt;p&gt;Remember, we're just scratching the surface here. There's so much more you can do with BuildShip. Happy Building!&lt;/p&gt;

&lt;p&gt;If you enjoyed our content, please give us a &lt;a href="https://twitter.com/BuildShipApp"&gt;follow on Twitter&lt;/a&gt; or &lt;a href="https://buildship.com/discord"&gt;join our Discord&lt;/a&gt; in case of any questions. We look forward to hearing from you! 💜&lt;/p&gt;

</description>
      <category>stripe</category>
      <category>beginners</category>
      <category>tutorial</category>
      <category>api</category>
    </item>
    <item>
      <title>How to Generate SEO-Friendly Technical Blogs from YouTube Videos</title>
      <dc:creator>Bhavya Verma</dc:creator>
      <pubDate>Wed, 17 Jan 2024 21:08:42 +0000</pubDate>
      <link>https://dev.to/buildship/how-to-generate-seo-friendly-technical-blogs-from-youtube-videos-n74</link>
      <guid>https://dev.to/buildship/how-to-generate-seo-friendly-technical-blogs-from-youtube-videos-n74</guid>
      <description>&lt;p&gt;Are you looking to generate high-quality SEO-friendly technical blogs directly from a YouTube video? With this new BuildShip Template, you can now easily extract video captions and generate well-formatted technical blogs in markdown using the OpenAI Text Generator.&lt;/p&gt;

&lt;p&gt;This template is designed to help you make the most out of your YouTube videos and improve your search engine rankings. In this blog, we will guide you on how to use this feature effectively.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;How to Use the YouTube URL to Blog Template&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;To get started, follow these simple steps:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Clone the template “YouTube Video Blog Generator” and add your OpenAI API key in the node prompted. Once done, hit "Ship".&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F6b0x0ajc8szirneqxtat.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F6b0x0ajc8szirneqxtat.png" alt="YouTube Video Blog generator template" width="800" height="461"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Copy the endpoint URL provided. You can use Postman, Hoppscotch, or any other API testing platform to create a POST request.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ftovbmtxz6z1aq6q0vp9i.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ftovbmtxz6z1aq6q0vp9i.png" alt="Endpoint URL" width="800" height="478"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;In your API testing platform, add the copied endpoint URL and set the request method to POST.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;In the params section, add the YouTube Video URL you want to generate a blog from.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fqqhbn1dqau9a773r8abx.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fqqhbn1dqau9a773r8abx.png" alt="YouTube Video URL" width="800" height="179"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;If you want to make your blog SEO-friendly, you can include a list of SEO keywords. To do this, navigate to the body section and select the &lt;code&gt;raw&lt;/code&gt; format. Then, choose &lt;code&gt;JSON&lt;/code&gt; from the dropdown and input your SEO keywords as a string array.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fszrnp0qvcexg2lgrb5ky.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fszrnp0qvcexg2lgrb5ky.png" alt="SEO Keywords" width="800" height="591"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Note: Adding SEO keywords is optional. If you don't want to include any keywords, you can set the body to none.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;ul&gt;
&lt;li&gt;Hit "Send" to generate the SEO-friendly technical blog based on the YouTube video captions.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Understanding the Workflow
&lt;/h2&gt;

&lt;p&gt;Let's take a closer look at the workflow behind the YouTube URL to Blog template:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;HTTP POST Trigger&lt;/strong&gt;: The workflow starts with a trigger that listens for a POST request.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fbjvqqy9dugjknllepmb8.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fbjvqqy9dugjknllepmb8.png" alt="HTTP POST Trigger" width="800" height="266"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Get Query Param:&lt;/strong&gt; This node checks for the presence of the Video URL parameter in the request.&lt;/li&gt;
&lt;/ul&gt;

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

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;YouTube Caption Extractor:&lt;/strong&gt; The "YouTube Caption Extractor" node is used to extract the captions for the video. It supports both user-submitted and auto-generated captions with language options. The captions are returned as an array of subtitle objects with properties like start time, duration, and text content.&lt;/li&gt;
&lt;/ul&gt;

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

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Extract &amp;amp; Join By Key:&lt;/strong&gt; This node processes the returned array, extracts the subtitles, and concatenates them into a single string representing the captions for the entire YouTube video.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fmt76koqb1stu6dm5uok6.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fmt76koqb1stu6dm5uok6.png" alt="Extract &amp;amp; Join By Key" width="800" height="262"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;OpenAI Text Generation:&lt;/strong&gt; The workflow then utilizes the power of the OpenAI Text Generation node. The token limit depends on the OpenAI Model being used. GPT-3.5 Turbo allows up to 4,097 tokens, while GPT-4, the more advanced model, allows up to 8,192 tokens.&lt;/li&gt;
&lt;/ul&gt;

&lt;blockquote&gt;
&lt;p&gt;Here are the YouTube video captions to generate a blog from: &lt;code&gt;${userPrompt}&lt;/code&gt;. Here's a list of the SEO Keywords to be included in this blog: &lt;code&gt;${keywords}&lt;/code&gt;. Also, make sure to return the blog content formatted in markdown.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;System Prompt:&lt;/strong&gt; This prompt sets the context for the text generation. It instructs the OpenAI Model to generate SEO-friendly technical blogs based on the content transcript. You can use the default prompt provided or customize it to suit your specific use-case.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;User Prompt&lt;/strong&gt;: The extracted YouTube video captions and the SEO Keywords are used as the user prompt for the OpenAI Model.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;SEO Keywords&lt;/strong&gt;: This node takes in the SEO keywords specified in the request body and sends them as part of the user prompt. You can include the SEO keywords in the user prompt to optimize your blog for search engines. Here's an example of how the user prompt can be constructed:``&lt;/p&gt;

&lt;p&gt;You can set fallback keywords or leave the field blank if you don't have specific keywords to include.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;OpenAI Model&lt;/strong&gt;: You can choose between GPT-3.5 Turbo, GPT-4, and GPT-4 Turbo for the text generation process. In terms of the token limit, the GPT-3.5 Turbo allows up to 4,097 tokens, GPT-4 allows up to 8,192 tokens, and GPT-4 Turbo allows 128,000 tokens, as mentioned in the &lt;a href="https://platform.openai.com/docs/models/gpt-4-and-gpt-4-turbo"&gt;OpenAI Docs&lt;/a&gt;.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Max Tokens&lt;/strong&gt;: This parameter sets the maximum number of tokens reserved for the response size. It ensures that the response fits within the specified token limit.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fcghtk3x92c6uavnhnkur.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fcghtk3x92c6uavnhnkur.png" alt="OpenAI GPT Text Generation Node" width="800" height="527"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;The time limit of the video depends on factors such as speech rate, pauses, and content density. If the token limit has not been exceeded, the workflow proceeds to the OpenAI Text Generation node.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h3&gt;
  
  
  Customizing the Template 🪄
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Blog Style:&lt;/strong&gt; You can customize the blog style by modifying the prompts in the OpenAI Text Generation node (System and User Prompt).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;SEO Keywords:&lt;/strong&gt; Include relevant SEO keywords to optimize your blog for search engines.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Token Limit:&lt;/strong&gt; If you need more tokens for longer videos or complex content, you can upgrade to higher-tier OpenAI Models. Keep in mind that this may result in higher costs and may require a paid plan.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If you enjoyed our content, please give us a &lt;a href="https://twitter.com/BuildShipApp"&gt;follow on Twitter&lt;/a&gt; or &lt;a href="https://buildship.com/discord"&gt;join our Discord&lt;/a&gt; in case of any questions. We look forward to hearing from you! 💜&lt;/p&gt;

</description>
      <category>tutorial</category>
      <category>beginners</category>
      <category>javascript</category>
      <category>productivity</category>
    </item>
    <item>
      <title>Introducing BuildShip</title>
      <dc:creator>Bhavya Verma</dc:creator>
      <pubDate>Sun, 17 Dec 2023 12:07:25 +0000</pubDate>
      <link>https://dev.to/buildship/introducing-buildship-2116</link>
      <guid>https://dev.to/buildship/introducing-buildship-2116</guid>
      <description>&lt;p&gt;We are the team behind &lt;a href="http://rowy.io/"&gt;Rowy.io&lt;/a&gt; and today we are super excited to launch BuildShip. BuildShip was created with all the feedback we got from the amazing community of no-code/low-code builders using Rowy and months of hard work by the team.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why did we build BuildShip?
&lt;/h2&gt;

&lt;p&gt;With a new AI model or API launching almost every day, we are seeing a whole new wave of product builders working on ambitious ideas. But the current landscape of no-code backend tools limits them to bring their ideas to life exactly the way they want to. Many no-code tools are not scalable beyond a certain point, lack integration to the latest API or AI model, are expensive, and are inflexible.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;So does this mean you have to know how to code and how to use cloud platforms like GCP, AWS, Azure…to be able to launch ambitious AI startups? 🤔&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Well, that’s exactly what we want to change with BuildShip. By &lt;strong&gt;combining the ease of no-code with the power of code&lt;/strong&gt; and putting it in the hands of product builders and developers - we want to enable bringing ideas to life fast and exactly the way you imagined.&lt;/p&gt;

&lt;p&gt;With BuildShip, you can create powerful APIs, schedule jobs, perform database CRUD operations on any cloud platform, and combine together any AI model - to create any backend workflow effortlessly on a single AI-powered platform. 🪄&lt;/p&gt;

&lt;h2&gt;
  
  
  Why should you use BuildShip 🛠️:
&lt;/h2&gt;

&lt;h3&gt;
  
  
  🔮 AI-Generated Nodes
&lt;/h3&gt;

&lt;p&gt;Choose from hundreds of pre-built nodes to build your workflows. And if anything is missing, don’t wait for us to release an integration! Simply ask AI what you want and it gives you a custom workflow node generated just for you. This will change the way you build your backend!&lt;/p&gt;

&lt;h3&gt;
  
  
  💪 Combine the power of any AI model
&lt;/h3&gt;

&lt;p&gt;BuildShip offers multimodal AI support, covering text, images, and video! From OpenAI nodes text generation to Vector embedding, generate lifelike videos using Sythesia, custom images using Stable Diffusion, or literally use any AI model from platforms like Replicate, Hugging Face, etc., to build your most powerful ideas by combining them.&lt;/p&gt;

&lt;h3&gt;
  
  
  📦 Readily use any API or 1M+ NPM packages
&lt;/h3&gt;

&lt;p&gt;You can use any NPM package in the workflow node or ask Ask AI to use an NPM package and generate a node for you.&lt;/p&gt;

&lt;h3&gt;
  
  
  👩‍💻Code made accessible - anytime you want
&lt;/h3&gt;

&lt;p&gt;BuildShip is not a black box, you can open the code of any node, tweak it any way you want, and make it your own. Use powerful developer tools like logging, version control, a code editor equipped with autocomplete, a lightning-fast debugger similar to localhost, and a secure sandboxing environment.&lt;/p&gt;

&lt;h3&gt;
  
  
  🚀 One-click deploy
&lt;/h3&gt;

&lt;p&gt;When ready, hit “ship” and get your backend workflow deployed instantly!&lt;/p&gt;

&lt;h3&gt;
  
  
  🎭 Start fast with templates
&lt;/h3&gt;

&lt;p&gt;We have templates featuring chatbots, music generators, reverse image search using Google Vision API, Vector DB search, HTML to PDF converter, and more!&lt;/p&gt;

&lt;p&gt;Whether you're into no-code app builders like FlutterFlow, Webflow, Bubble or diving into frontend frameworks like Next.js, React, Vue, BuildShip has got your back. No more being stuck unable to leverage the latest AI models and tools due to lack of an integration or wrestling with cloud platforms, waiting for never-ending cloud function builds, or doing the DevOps dance. 🚀✨&lt;/p&gt;

&lt;p&gt;Give BuildShip a try, especially if you are hitting the limits of your current no-code tools or you are a developer who wants to build ideas fast without having any coding limitations.&lt;/p&gt;

&lt;p&gt;Our mission is to help you build your BIGGEST ideas in the &lt;em&gt;simplest&lt;/em&gt; of ways. Join the BuildShip community on &lt;a href="https://buildship.com/discord"&gt;Discord&lt;/a&gt; and chat with other awesome no-code/low-code builders.&lt;/p&gt;

</description>
      <category>productivity</category>
      <category>ai</category>
      <category>news</category>
      <category>api</category>
    </item>
    <item>
      <title>Build an AI MicroSaaS App using a Low-Code Template Integrated with Stripe</title>
      <dc:creator>Bhavya Verma</dc:creator>
      <pubDate>Fri, 16 Jun 2023 11:52:33 +0000</pubDate>
      <link>https://dev.to/buildship/build-an-ai-microsaas-app-using-a-low-code-template-integrated-with-stripe-2m3f</link>
      <guid>https://dev.to/buildship/build-an-ai-microsaas-app-using-a-low-code-template-integrated-with-stripe-2m3f</guid>
      <description>&lt;p&gt;SaaS (Software as a Service) refers to a software delivery model where &lt;strong&gt;applications are hosted and provided over the Internet&lt;/strong&gt; as a &lt;strong&gt;service to customers&lt;/strong&gt;. Instead of purchasing and installing software locally, users access and use the software through a web browser or a dedicated application.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--NMROATRi--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://firebasestorage.googleapis.com/v0/b/website-a1s39m.appspot.com/o/blog%252F6HEbFhFrwOjGlZ60A9hh%252FogImage%252FPnMb5baU4tLMQoCFhDgW-microsaas-1.png%3Falt%3Dmedia%26token%3Dd3e51f22-7101-4519-b727-fbc5c1da6b0c" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--NMROATRi--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://firebasestorage.googleapis.com/v0/b/website-a1s39m.appspot.com/o/blog%252F6HEbFhFrwOjGlZ60A9hh%252FogImage%252FPnMb5baU4tLMQoCFhDgW-microsaas-1.png%3Falt%3Dmedia%26token%3Dd3e51f22-7101-4519-b727-fbc5c1da6b0c" alt="microsaas-1" width="800" height="420"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;With the flexibility of low-code development, we can effortlessly create our own &lt;strong&gt;MicroSaaS&lt;/strong&gt; application called &lt;strong&gt;AI MicroSaaS Background Remover&lt;/strong&gt;. This powerful application allows users to &lt;strong&gt;easily remove the background from their images&lt;/strong&gt; without compromising the image quality! 🪄&lt;/p&gt;

&lt;p&gt;Additionally, it offers valuable features like &lt;strong&gt;user authentication&lt;/strong&gt;, &lt;strong&gt;a credit system&lt;/strong&gt; where each photo removal consumes one credit, and the option for users to &lt;strong&gt;purchase credit packages&lt;/strong&gt; for additional image removals.&lt;/p&gt;

&lt;p&gt;The AI Background Remover application is built using &lt;a href="https://www.rowy.io"&gt;Rowy&lt;/a&gt;, a &lt;strong&gt;powerful low-code platform&lt;/strong&gt;, and utilizes local backend management tools hosted on Google Cloud. By leveraging the &lt;strong&gt;Replicate API&lt;/strong&gt;, the application efficiently &lt;strong&gt;removes backgrounds from uploaded photos&lt;/strong&gt;, ensuring high-quality results. Furthermore, the integration of the &lt;strong&gt;Stripe API&lt;/strong&gt; enables seamless credit purchases, enabling users to acquire additional credits for image removals. The application's** frontend is powered by a separate NextJS project**, ensuring a smooth and intuitive user experience.&lt;/p&gt;

&lt;h2 id="aboutthetools"&gt;About the Tools ⚙️&lt;/h2&gt;

&lt;h3 id="backgroundremovalwithreplicateapi"&gt;Background Removal with Replicate API 🖼️&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--NMQLhXfH--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://firebasestorage.googleapis.com/v0/b/website-a1s39m.appspot.com/o/blog%252F6HEbFhFrwOjGlZ60A9hh%252FcontentImages%252F0eXv8ppwZkxRcItGVboM-microsaas-2.png%3Falt%3Dmedia%26token%3D4bf0399f-4c51-45ab-95b5-7885e60c8f85" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--NMQLhXfH--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://firebasestorage.googleapis.com/v0/b/website-a1s39m.appspot.com/o/blog%252F6HEbFhFrwOjGlZ60A9hh%252FcontentImages%252F0eXv8ppwZkxRcItGVboM-microsaas-2.png%3Falt%3Dmedia%26token%3D4bf0399f-4c51-45ab-95b5-7885e60c8f85" alt="microsaas-2" width="800" height="214"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The AI Background Remover application leverages the &lt;strong&gt;Replicate API&lt;/strong&gt; to perform &lt;strong&gt;accurate and efficient background removal&lt;/strong&gt; from uploaded photos. Replicate is a powerful AI-driven image processing API that specializes in background removal tasks.&lt;/p&gt;

&lt;p&gt;By utilizing advanced algorithms and deep learning techniques, Replicate enables the application to automatically extract foreground subjects and remove backgrounds while preserving the quality of the image. This integration ensures that users can &lt;strong&gt;effortlessly achieve professional-looking results&lt;/strong&gt; without any manual editing.&lt;/p&gt;

&lt;h3 id="paymentprocessingwithstripe"&gt;Payment Processing with Stripe 💰&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--bkut3rnf--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://firebasestorage.googleapis.com/v0/b/website-a1s39m.appspot.com/o/blog%252F6HEbFhFrwOjGlZ60A9hh%252FcontentImages%252FHcwMmDfXw09VyzatmVd7-microsaas-3.png%3Falt%3Dmedia%26token%3Db361dfb6-1028-45ff-87ca-4b287b5562f5" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--bkut3rnf--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://firebasestorage.googleapis.com/v0/b/website-a1s39m.appspot.com/o/blog%252F6HEbFhFrwOjGlZ60A9hh%252FcontentImages%252FHcwMmDfXw09VyzatmVd7-microsaas-3.png%3Falt%3Dmedia%26token%3Db361dfb6-1028-45ff-87ca-4b287b5562f5" alt="microsaas-3" width="800" height="343"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Stripe is a &lt;strong&gt;popular payment processing platform&lt;/strong&gt; that the AI Background Remover application integrates with. It enables seamless handling of credit purchases within the application.&lt;/p&gt;

&lt;p&gt;With Stripe's secure and reliable payment infrastructure, users can easily and safely purchase additional credits to remove backgrounds from more images. The Stripe API provides the necessary functionality to &lt;strong&gt;handle transactions, manage subscriptions, and ensure a smooth payment experience&lt;/strong&gt; for users.&lt;/p&gt;

&lt;h3 id="seamlessfrontendexperiencewithnextjs"&gt;Seamless Frontend Experience with NextJS ✨&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--J9AYjd11--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://firebasestorage.googleapis.com/v0/b/website-a1s39m.appspot.com/o/blog%252F6HEbFhFrwOjGlZ60A9hh%252FcontentImages%252FYlR1dMHW9Zz6GJbprbOf-microsaas-4.png%3Falt%3Dmedia%26token%3Dccf40e2a-f72f-4bb4-ab6e-d792b8685c7a" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--J9AYjd11--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://firebasestorage.googleapis.com/v0/b/website-a1s39m.appspot.com/o/blog%252F6HEbFhFrwOjGlZ60A9hh%252FcontentImages%252FYlR1dMHW9Zz6GJbprbOf-microsaas-4.png%3Falt%3Dmedia%26token%3Dccf40e2a-f72f-4bb4-ab6e-d792b8685c7a" alt="microsaas-4" width="800" height="382"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;NextJS is a popular frontend development framework that &lt;strong&gt;powers the user interface of the AI Background Remover&lt;/strong&gt; application. It provides a &lt;strong&gt;robust and scalable environment&lt;/strong&gt; for building interactive and performant web interfaces.&lt;/p&gt;

&lt;p&gt;NextJS offers features such as server-side rendering, client-side rendering, and static site generation, which enhance the overall user experience. With NextJS, the application delivers fast loading times, smooth transitions, and responsive designs, ensuring a seamless and enjoyable user experience while interacting with the AI Background Remover features.&lt;/p&gt;

&lt;h2 id="retrievingthereplicateapitoken"&gt;Retrieving the Replicate API token ✅&lt;/h2&gt;

&lt;p&gt;Follow these steps to retrieve your Replicate API token for the application:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Visit the &lt;a href="https://replicate.com/"&gt;Replicate Website&lt;/a&gt; and sign in to your account. If you don't have an account, you will need to create one.&lt;/li&gt;
&lt;li&gt;Click on the dropdown adjacent to your profile in the top-left corner of the page and navigate to the &lt;a href="https://replicate.com/account/api-tokens"&gt;API tokens&lt;/a&gt; page. &lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--tHOb4WTv--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://firebasestorage.googleapis.com/v0/b/website-a1s39m.appspot.com/o/blog%252F6HEbFhFrwOjGlZ60A9hh%252FcontentImages%252F1cNrjFyDIRHGqWLuCCyj-microsaas-5.png%3Falt%3Dmedia%26token%3Da7710a83-9a49-4ead-8630-e898180efb8c" alt="microsaas-5" width="800" height="346"&gt;
&lt;/li&gt;
&lt;li&gt;Copy your Replicate API token and store it temporarily for further use in the application.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2 id="retrievingthestripeapikey"&gt;Retrieving the Stripe API key ✅&lt;/h2&gt;

&lt;p&gt;Follow these steps to retrieve your Replicate API token for the application:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Visit the &lt;a href="https://dashboard.stripe.com/test/dashboard"&gt;Stripe Website&lt;/a&gt; and sign in to your account. If you don't have an account already, create a new one.&lt;/li&gt;
&lt;li&gt;Click on the &lt;strong&gt;Developers&lt;/strong&gt; button in the top-right corner to navigate to the &lt;a href="https://dashboard.stripe.com/test/developers"&gt;Developers’ Page&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Navigate to the &lt;strong&gt;API keys section&lt;/strong&gt;, copy your Stripe API key, and store it temporarily for further use in the application. &lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--I-YcmeBX--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://firebasestorage.googleapis.com/v0/b/website-a1s39m.appspot.com/o/blog%252F6HEbFhFrwOjGlZ60A9hh%252FcontentImages%252FzCuliguPrP5AtPqLWSTs-microsaas-6.png%3Falt%3Dmedia%26token%3D33bcfeed-1276-4f44-9ca1-48d2c60dd030" alt="microsaas-6" width="800" height="417"&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;h2 id="settingupthebackendonrowy"&gt;Setting up the backend on Rowy 💪&lt;/h2&gt;

&lt;p&gt;Follow these simple steps to set up the backend of the application in Rowy and create the necessary tables:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;To create a table in Rowy using the &lt;strong&gt;AI MicroSaaS&lt;/strong&gt; template, click on the "Use this template" button. This will open the Template Setup Wizard, where you can proceed by clicking the "&lt;strong&gt;Let's begin!&lt;/strong&gt;" button to start the setup process. &lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--T93AR-ru--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://firebasestorage.googleapis.com/v0/b/website-a1s39m.appspot.com/o/blog%252F6HEbFhFrwOjGlZ60A9hh%252FcontentImages%252FiXyuKlP8casuLMIJqGjZ-microsaas-7.png%3Falt%3Dmedia%26token%3Dcca3d9d6-f14c-43c4-bec6-cf69f00e5506" alt="microsaas-7" width="800" height="430"&gt;
&lt;/li&gt;
&lt;li&gt;You will be asked to enter a name for the table where all your data will be stored. You can choose to keep the default values and proceed without making any changes.&lt;/li&gt;
&lt;li&gt;In the upcoming step, you will need to input your &lt;strong&gt;Replicate API key&lt;/strong&gt;. If you haven't already added it to the &lt;strong&gt;GCP Secret Manager&lt;/strong&gt;, click the '&lt;strong&gt;Add a key in Secret Manager&lt;/strong&gt;' button. You will be redirected to the &lt;a href="https://console.cloud.google.com/security/secret-manager"&gt;GCP Secret Manager&lt;/a&gt;, where you can create a new secret with name &lt;code&gt;replicate&lt;/code&gt; and enter the Replicate API token as its value. Once done, navigate back to the &lt;strong&gt;Template Setup Wizard&lt;/strong&gt; and select your key. &lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--o061Cw-e--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://firebasestorage.googleapis.com/v0/b/website-a1s39m.appspot.com/o/blog%252F6HEbFhFrwOjGlZ60A9hh%252FcontentImages%252FpXacLYwMuDmBR7mpZdoe-microsaas-8.png%3Falt%3Dmedia%26token%3D1ec08e57-2210-4044-b4e4-529682344a32" alt="microsaas-8" width="800" height="450"&gt;
&lt;/li&gt;
&lt;li&gt;In the next step, you will be required to input your Stripe API key. Similar to the previous step, create your secret key in the &lt;a href="https://console.cloud.google.com/security/secret-manager"&gt;GCP Secret Manager&lt;/a&gt; and select it in the Template Setup Wizard. &lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--rbcijL8p--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://firebasestorage.googleapis.com/v0/b/website-a1s39m.appspot.com/o/blog%252F6HEbFhFrwOjGlZ60A9hh%252FcontentImages%252FpzVHhC01WcVISXfL3jb6-microsaas-9.png%3Falt%3Dmedia%26token%3D4dff79fc-f54b-49a0-ba37-175599685b02" alt="microsaas-9" width="800" height="450"&gt;
&lt;/li&gt;
&lt;li&gt;Next, you should provide your Vercel URL. For local testing purposes, you can temporarily use "https://localhost:3000" as the default host for your frontend project. &lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--vYS9D4ow--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://firebasestorage.googleapis.com/v0/b/website-a1s39m.appspot.com/o/blog%252F6HEbFhFrwOjGlZ60A9hh%252FcontentImages%252F6O6vuJ6tcXnFcBwOgnSA-microsaas-10.png%3Falt%3Dmedia%26token%3D4aa8ea23-c2e2-4a77-9882-b36ec31065d4" alt="microsaas-10" width="800" height="420"&gt;
&lt;/li&gt;
&lt;li&gt;In the next step, you will simply need to &lt;strong&gt;deploy pre-built Webhooks&lt;/strong&gt;, provided by Rowy, to your own Google Cloud project. &lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--PYcIwjlu--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://firebasestorage.googleapis.com/v0/b/website-a1s39m.appspot.com/o/blog%252F6HEbFhFrwOjGlZ60A9hh%252FcontentImages%252FviZkuEbRdsaJqPPk2yIz-microsaas-11.png%3Falt%3Dmedia%26token%3D8dce0df5-88b6-494b-9155-a83758c51a3a" alt="microsaas-11" width="800" height="420"&gt;
&lt;/li&gt;
&lt;li&gt;Finally, we can deploy the cloud functions required by our project and click on the ‘&lt;strong&gt;Proceed&lt;/strong&gt;’ button, which will redirect you to the project table. &lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--22gSUUHv--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://firebasestorage.googleapis.com/v0/b/website-a1s39m.appspot.com/o/blog%252F6HEbFhFrwOjGlZ60A9hh%252FcontentImages%252F6MzEm61LYtnSqqRMk3W4-microsaas-12.png%3Falt%3Dmedia%26token%3Dec8fc4e0-324a-4d28-965b-388bfa4c640b" alt="microsaas-12" width="800" height="420"&gt;
&lt;/li&gt;
&lt;li&gt;Navigate to the &lt;strong&gt;Webhooks menu on the top right corner&lt;/strong&gt; to see all the Webhooks used in the project. Copy the &lt;strong&gt;Webhook Endpoint&lt;/strong&gt; from the "&lt;strong&gt;Prediction Done Webhook&lt;/strong&gt;" and paste it inside the code for the "&lt;strong&gt;Start Prediction webhook&lt;/strong&gt;", where prompted. Update the webhook and click on the ‘&lt;strong&gt;Save and Deploy&lt;/strong&gt;’ button. &lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--HteLXRWx--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://firebasestorage.googleapis.com/v0/b/website-a1s39m.appspot.com/o/blog%252F6HEbFhFrwOjGlZ60A9hh%252FcontentImages%252FqmbUzL8QYcZTuVvoxBoZ-microsaas-13.png%3Falt%3Dmedia%26token%3Db9de6cbc-002b-448a-ad28-9c811cf66e18" alt="microsaas-13" width="800" height="400"&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;h2 id="settingupthenextjsfrontend"&gt;Setting up the NextJS Frontend ✨&lt;/h2&gt;

&lt;p&gt;Before running a Next.js application, you need to ensure you have certain prerequisites such as Node.js, a code editor, and a terminal available on your device.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--8Qgbr_w7--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://firebasestorage.googleapis.com/v0/b/website-a1s39m.appspot.com/o/blog%252F6HEbFhFrwOjGlZ60A9hh%252FcontentImages%252FZcZZRMAEto93qCRpPGGY-microsaas-14.png%3Falt%3Dmedia%26token%3D5b20212c-95c6-4055-8dd4-e4da899b16ce" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--8Qgbr_w7--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://firebasestorage.googleapis.com/v0/b/website-a1s39m.appspot.com/o/blog%252F6HEbFhFrwOjGlZ60A9hh%252FcontentImages%252FZcZZRMAEto93qCRpPGGY-microsaas-14.png%3Falt%3Dmedia%26token%3D5b20212c-95c6-4055-8dd4-e4da899b16ce" alt="microsaas-14" width="800" height="492"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;To begin with the Next.js Frontend, you will need to navigate to the project &lt;a href="https://github.com/rowyio/demo-microsaas"&gt;repository&lt;/a&gt; and clone it onto your local machine. This can be achieved by running the command:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;git clone https://github.com/rowyio/demo-microsaas.git
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Once our project has been cloned, we can move inside the project folder and install the dependencies using the command:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;npm install
&lt;/code&gt;&lt;/pre&gt;

&lt;h3 id="settingtheenvironmentvariables"&gt;Setting the Environment Variables 🪴&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Navigate to the project folder in your preferred code editor and in the root directory, create a file named &lt;code&gt;.env.local&lt;/code&gt; for local environment variables.&lt;/li&gt;
&lt;li&gt;Referencing the &lt;code&gt;.env.local.example&lt;/code&gt; file, copy the code, and paste it into the newly created &lt;code&gt;.env.local&lt;/code&gt; file. This will populate the environment variable file with the necessary content, as indicated below:&lt;/li&gt;
&lt;/ul&gt;

&lt;pre&gt;&lt;code&gt;REPLICATE_API_TOKEN=
STRIPE_SECRET_KEY=

# Firebase specific envs
NEXT_PUBLIC_FIREBASE_API_KEY=
NEXT_PUBLIC_FIREBASE_AUTH_DOMAIN=
NEXT_PUBLIC_FIREBASE_STORAGE_BUCKET=
NEXT_PUBLIC_FIREBASE_SENDER_ID=
NEXT_PUBLIC_FIREBASE_APP_ID=
NEXT_PUBLIC_FIREBASE_PROJECT_ID=


# Rowy specific envs
NEXT_PUBLIC_PROFILES_TABLE_ID=

NEXT_PUBLIC_START_PREDICTION_WEBHOOK=
NEXT_PUBLIC_CREATE_STRIPE_CHECKOUT_WEBHOOK=
&lt;/code&gt;&lt;/pre&gt;

&lt;ul&gt;
&lt;li&gt;First, you need to fill in the values for the Replicate API Token and the Stripe Key that you obtained earlier.&lt;/li&gt;
&lt;li&gt;Next, we need to set a bunch of firebase-related environment variables.&lt;/li&gt;
&lt;li&gt;In your web browser, go to your Firebase project and open the project settings. Scroll down to the 'SDK setup and configuration' section and click on 'Config'. Here, you will find the necessary environment variable values that you need to configure in the &lt;code&gt;.env.local&lt;/code&gt; file. &lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--xvuJoSv1--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://firebasestorage.googleapis.com/v0/b/website-a1s39m.appspot.com/o/blog%252F6HEbFhFrwOjGlZ60A9hh%252FcontentImages%252FmOflIUNpdLwrVvGljCoG-microsaas-15.png%3Falt%3Dmedia%26token%3D2f68c52b-43d3-47f1-b4e0-a29074d30b34" alt="microsaas-15" width="800" height="474"&gt;
&lt;/li&gt;
&lt;li&gt;For the 'Table ID' environment variable, if you haven't changed the default table name, enter 'microSaasProfiles' as its value. Otherwise, set it to the table name you added earlier.&lt;/li&gt;
&lt;li&gt;To obtain the final two environment variables, namely the webhook for starting the prediction and creating the Stripe checkout webhook, you can find these values in the Webhooks section of Rowy. &lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--eSRPUe6s--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://firebasestorage.googleapis.com/v0/b/website-a1s39m.appspot.com/o/blog%252F6HEbFhFrwOjGlZ60A9hh%252FcontentImages%252F12MruQk6KXioUWfEbtuV-microsaas-16.png%3Falt%3Dmedia%26token%3D8431233a-1ee8-4ee0-8d61-a2ff43f2cc77" alt="microsaas-16" width="800" height="492"&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;h3 id="settingthestripewebhookurl"&gt;Setting the Stripe Webhook URL 🕸️&lt;/h3&gt;

&lt;p&gt;After successfully adding the environment variables, we are nearly ready to start our project. However, there is one more task remaining. We need to set a &lt;strong&gt;Webhook URL&lt;/strong&gt; in the Stripe dashboard, which will be triggered whenever a checkout is completed.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;In the Stripe &lt;a href="https://dashboard.stripe.com/test/dashboard"&gt;dashboard&lt;/a&gt;, go to the &lt;strong&gt;Developers section&lt;/strong&gt; and access webhooks. Locate and click the "&lt;strong&gt;Add an endpoint&lt;/strong&gt;" button.&lt;/li&gt;
&lt;li&gt;To obtain the Endpoint URL, return to Rowy and navigate to the Webhooks section. Look for the "S&lt;strong&gt;tripe Checkout Session Completed&lt;/strong&gt;" webhook and copy the corresponding endpoint URL. Paste this URL as the Endpoint URL in Stripe.&lt;/li&gt;
&lt;li&gt;Next, click on "&lt;strong&gt;Select events&lt;/strong&gt;" and search for &lt;code&gt;checkout&lt;/code&gt;. Choose the event labeled &lt;code&gt;checkout.session.completed&lt;/code&gt; and click "&lt;strong&gt;Add Events&lt;/strong&gt;".&lt;/li&gt;
&lt;li&gt;Finally, click the "&lt;strong&gt;Add endpoint&lt;/strong&gt;" button to create your endpoint in the Stripe dashboard. &lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--0aT9GGex--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://firebasestorage.googleapis.com/v0/b/website-a1s39m.appspot.com/o/blog%252F6HEbFhFrwOjGlZ60A9hh%252FcontentImages%252FMya3opphXgOoqJmNjEdv-microsaas-17.png%3Falt%3Dmedia%26token%3D7cec11ee-e73c-4c38-9a4f-fa522adca6db" alt="microsaas-17" width="800" height="500"&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;h3 id="runningthenextjsproject"&gt;Running the NextJS Project ▶️&lt;/h3&gt;

&lt;p&gt;In the project directory, launch the local development server by running the following command in your terminal:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;npm run dev
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;This command will start the server and enable you to test and develop the application locally.&lt;/p&gt;

&lt;p&gt;We can now run up our &lt;a href="https://localhost:3000"&gt;localhost:3000&lt;/a&gt; to see the Next.js frontend running. Thus, we can verify the features of the application as both our Frontend and Rowy Backend are up and running.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--Sj4FiyHh--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://firebasestorage.googleapis.com/v0/b/website-a1s39m.appspot.com/o/blog%252F6HEbFhFrwOjGlZ60A9hh%252FcontentImages%252FSe7S1mgoznHCB7BFxo54-microsaas-18.png%3Falt%3Dmedia%26token%3Dcaec381d-f2aa-403e-8029-e13ab6b02815" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--Sj4FiyHh--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://firebasestorage.googleapis.com/v0/b/website-a1s39m.appspot.com/o/blog%252F6HEbFhFrwOjGlZ60A9hh%252FcontentImages%252FSe7S1mgoznHCB7BFxo54-microsaas-18.png%3Falt%3Dmedia%26token%3Dcaec381d-f2aa-403e-8029-e13ab6b02815" alt="microsaas-18" width="800" height="500"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2 id="conclusion"&gt;Conclusion 🚀&lt;/h2&gt;

&lt;p&gt;MicroSaaS services offer &lt;strong&gt;tremendous potential for building powerful applications with ease&lt;/strong&gt;. With the assistance of Rowy's low-code backend, developers can efficiently explore a multitude of opportunities in creating innovative solutions. The AI MicroSaaS Background Remover application exemplifies the capabilities of such services by providing users with an intuitive platform to remove image backgrounds effortlessly.&lt;/p&gt;

&lt;p&gt;Expanding the AI MicroSaaS Background Remover application, additional features could include advanced image editing options, collaboration capabilities, etc. Furthermore, Rowy's &lt;strong&gt;versatility extends beyond background removal&lt;/strong&gt;, enabling developers to &lt;strong&gt;explore diverse MicroSaaS applications&lt;/strong&gt; such as &lt;strong&gt;sentiment analysis tools&lt;/strong&gt;, &lt;strong&gt;document recognition systems&lt;/strong&gt;, or &lt;strong&gt;data visualization platforms&lt;/strong&gt;. 🎯&lt;/p&gt;

&lt;p&gt;By harnessing the power of Rowy and MicroSaaS services, developers can unlock &lt;strong&gt;endless possibilities&lt;/strong&gt; for creating impactful and user-friendly applications, revolutionizing various industries, and driving innovation to new heights. 🧠&lt;/p&gt;

&lt;p&gt;If you enjoyed our content, please give us a &lt;a href="https://twitter.com/rowyio"&gt;follow on Twitter&lt;/a&gt; or &lt;a href="https://rowy.io/discord"&gt;join our Discord&lt;/a&gt; in case of any questions. We look forward to hearing from you! 💜&lt;/p&gt;

</description>
      <category>tutorial</category>
      <category>opensource</category>
      <category>codenewbie</category>
      <category>cloud</category>
    </item>
    <item>
      <title>Build a Full Stack Storybooks Application with Low-Code: Rowy x BravoStudio</title>
      <dc:creator>Bhavya Verma</dc:creator>
      <pubDate>Thu, 15 Jun 2023 21:40:49 +0000</pubDate>
      <link>https://dev.to/buildship/build-a-full-stack-storybooks-application-with-low-code-rowy-x-bravostudio-3o7k</link>
      <guid>https://dev.to/buildship/build-a-full-stack-storybooks-application-with-low-code-rowy-x-bravostudio-3o7k</guid>
      <description>&lt;p&gt;Imagine generating captivating storybooks from simple one-line prompts! 🤯 With our &lt;strong&gt;full-stack&lt;/strong&gt;, &lt;strong&gt;low-code&lt;/strong&gt;, Story Books template, effortlessly &lt;strong&gt;create storybooks featuring auto-generated titles&lt;/strong&gt;, &lt;strong&gt;subtitles&lt;/strong&gt;, &lt;strong&gt;multiple pages&lt;/strong&gt;, and &lt;strong&gt;vibrant illustrations&lt;/strong&gt;. &lt;/p&gt;

&lt;p&gt;And that's not all! &lt;/p&gt;

&lt;p&gt;We enhance the experience by &lt;strong&gt;generating an audio file&lt;/strong&gt; for each story page, enabling users to listen to the stories instead of reading them.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--ptJf6_1V--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://firebasestorage.googleapis.com/v0/b/website-a1s39m.appspot.com/o/blog%252F6HEbFhFrwOjGlZ60A9hi%252FcontentImages%252FDXTiPw8DBo5EZ7GaYeG7-storybooks-1.png%3Falt%3Dmedia%26token%3D7f41e8c5-4b96-4410-aa66-a337101a3999" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--ptJf6_1V--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://firebasestorage.googleapis.com/v0/b/website-a1s39m.appspot.com/o/blog%252F6HEbFhFrwOjGlZ60A9hi%252FcontentImages%252FDXTiPw8DBo5EZ7GaYeG7-storybooks-1.png%3Falt%3Dmedia%26token%3D7f41e8c5-4b96-4410-aa66-a337101a3999" alt="storybooks-rowy-bravo-1" width="800" height="420"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Let’s dive deeper and explore a powerful combination of tools that can bring your bedtime storybook app to life! 💪&lt;/p&gt;

&lt;h2 id="thestorybooksapplication"&gt;The Story Books Application 📖&lt;/h2&gt;

&lt;p&gt;The Story Books application is designed to &lt;strong&gt;create engaging bedtime stories for children&lt;/strong&gt;. It harnesses the power of the &lt;strong&gt;GPT-4 API&lt;/strong&gt; to &lt;strong&gt;convert simple one-line prompts into entire storybooks&lt;/strong&gt; filled with captivating tales. The app takes it a step further by leveraging the Stability AI API to generate beautiful illustrations for every page of the story.&lt;/p&gt;

&lt;p&gt;We wanted to make the reading experience even more immersive and interactive, so we incorporated the &lt;strong&gt;PlayHT API&lt;/strong&gt;. This means you can &lt;strong&gt;listen to the stories&lt;/strong&gt; instead of reading them! It's a fantastic way to make the app more &lt;strong&gt;accessible&lt;/strong&gt; and engaging for all users.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--gYtTja1s--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://firebasestorage.googleapis.com/v0/b/website-a1s39m.appspot.com/o/blog%252F6HEbFhFrwOjGlZ60A9hi%252FcontentImages%252FxUiWb0CYnbjdmq6SAdGM-storybooks-2.png%3Falt%3Dmedia%26token%3Dca17d900-dd19-4de4-b1b5-d824f3ef02a6" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--gYtTja1s--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://firebasestorage.googleapis.com/v0/b/website-a1s39m.appspot.com/o/blog%252F6HEbFhFrwOjGlZ60A9hi%252FcontentImages%252FxUiWb0CYnbjdmq6SAdGM-storybooks-2.png%3Falt%3Dmedia%26token%3Dca17d900-dd19-4de4-b1b5-d824f3ef02a6" alt="storybooks-rowy-bravo-2" width="800" height="452"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;To get started, you can create your own Story Books app using our &lt;a href="https://rowy.app/workspaces"&gt;cloneable AI templates&lt;/a&gt; that combines &lt;a href="https://www.rowy.io/"&gt;Rowy&lt;/a&gt; as the spreadsheet UI backend and CMS, and &lt;a href="https://www.bravostudio.app/"&gt;Bravo Studio&lt;/a&gt; as the front-end no-code app builder. Thus you can easily manage the content of your stories using low-code app development. &lt;/p&gt;

&lt;h2 id="whatisbravostudio"&gt;What is Bravo Studio?&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--UHcePOsN--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://firebasestorage.googleapis.com/v0/b/website-a1s39m.appspot.com/o/blog%252F6HEbFhFrwOjGlZ60A9hi%252FcontentImages%252FKatTW1lw7kwi8V3eh4QB-storybooks-3.png%3Falt%3Dmedia%26token%3D36ae87bb-22aa-4829-aaf8-83d2e90262b7" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--UHcePOsN--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://firebasestorage.googleapis.com/v0/b/website-a1s39m.appspot.com/o/blog%252F6HEbFhFrwOjGlZ60A9hi%252FcontentImages%252FKatTW1lw7kwi8V3eh4QB-storybooks-3.png%3Falt%3Dmedia%26token%3D36ae87bb-22aa-4829-aaf8-83d2e90262b7" alt="storybooks-rowy-bravo-3" width="800" height="420"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Bravo Studio is a &lt;strong&gt;code-free app builder&lt;/strong&gt; that transforms your &lt;strong&gt;Figma&lt;/strong&gt; or &lt;strong&gt;AdobeXD&lt;/strong&gt; prototypes into native iOS and Android apps instantly. It also let’s you c&lt;strong&gt;onnect to external APIs&lt;/strong&gt; and use the &lt;strong&gt;Data Library&lt;/strong&gt; to give you the ability to connect your data with real data from an external source.&lt;/p&gt;

&lt;p&gt;Bravo Studio utilizes &lt;strong&gt;Bravo Tags&lt;/strong&gt;, which are merely native mobile components to make your apps Android and iOS compatible. These Bravo Tags enable Bravo to identify the native behavior in your apps such as slide menu, splash screens, and even Lottie Animations, to make real components and converting them to an original app in Bravo Studios.&lt;/p&gt;

&lt;p&gt;With Bravo Studio, you can effortlessly turn your storybook content into a visually stunning and interactive mobile app, all without the need to write a single line of code.&lt;/p&gt;

&lt;h2 id="settingupthestorybooksapplication"&gt;Setting up the Story Books Application ✨&lt;/h2&gt;

&lt;p&gt;Let us give you a quick walk-through on how you can set up your Story Books application with Rowy and Bravo Studio!&lt;/p&gt;

&lt;h3 id="1cloningthetemplateonrowy"&gt;1. Cloning the template on Rowy 🤩&lt;/h3&gt;

&lt;p&gt;The first step is to visit www.rowy.io and click on the "Sign In" button. Once you have created your Workspace and set up your Project, you need to select the Story Books template from the "Create a Table" section located at the top of the page.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--aBue9ADN--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://firebasestorage.googleapis.com/v0/b/website-a1s39m.appspot.com/o/blog%252F6HEbFhFrwOjGlZ60A9hi%252FcontentImages%252FoUblBkEbU6FipGJNIIfH-storybooks-4.png%3Falt%3Dmedia%26token%3Ddd3a6069-155a-429a-ad9b-80d01058ed30" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--aBue9ADN--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://firebasestorage.googleapis.com/v0/b/website-a1s39m.appspot.com/o/blog%252F6HEbFhFrwOjGlZ60A9hi%252FcontentImages%252FoUblBkEbU6FipGJNIIfH-storybooks-4.png%3Falt%3Dmedia%26token%3Ddd3a6069-155a-429a-ad9b-80d01058ed30" alt="storybooks-rowy-bravo-4" width="800" height="193"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;You'll be guided by the template setup wizard to easily configure your table, include your confidential keys, and deploy your cloud functions, all in a single seamless process!&lt;/p&gt;

&lt;h3 id="2settingupyoursecrets"&gt;2. Setting up your Secrets 🤫&lt;/h3&gt;

&lt;p&gt;To begin the template setup, you will be asked to provide three secret keys: your &lt;strong&gt;OpenAI API Key&lt;/strong&gt;, &lt;strong&gt;PlayHT Secret Key&lt;/strong&gt;, and &lt;strong&gt;Stability AI API Key.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Here are the steps to obtain these secret keys for your project:&lt;/p&gt;

&lt;h4 id="21retrievingtheopenaiapikey"&gt;2.1 Retrieving the OpenAI API Key ✅&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;Go to the &lt;a href="https://platform.openai.com/account/api-keys"&gt;OpenAI Account Dashboard&lt;/a&gt; and create an account if you haven’t already.&lt;/li&gt;
&lt;li&gt;Click on &lt;strong&gt;Create a new secret key&lt;/strong&gt;.
&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--CoT6RYvo--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://firebasestorage.googleapis.com/v0/b/website-a1s39m.appspot.com/o/blog%252F6HEbFhFrwOjGlZ60A9hi%252FcontentImages%252Ft7ecwW5pR3o2BjdSL6zf-storybooks-5.png%3Falt%3Dmedia%26token%3D22fbae06-68b3-4cb0-a48d-5f261143668a" alt="storybooks-rowy-bravo-4" width="800" height="338"&gt;
&lt;/li&gt;
&lt;li&gt;Add a name for your secret key. Let's use "&lt;strong&gt;Story Book&lt;/strong&gt;" as an example. Finally, click "&lt;strong&gt;Create&lt;/strong&gt;" to save your new secret key.&lt;/li&gt;
&lt;li&gt;Great! You've generated your OpenAI API Key. 🎉 Make sure to copy and store it in a safe and accessible location, since you'll be needing it later.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--XG7DdbHf--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://firebasestorage.googleapis.com/v0/b/website-a1s39m.appspot.com/o/blog%252F6HEbFhFrwOjGlZ60A9hi%252FcontentImages%252FdFAMUDyl2Qxm2uIpyWaE-storybooks-6.png%3Falt%3Dmedia%26token%3D028f55fb-e038-4446-b94e-ac219ddc6cc2" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--XG7DdbHf--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://firebasestorage.googleapis.com/v0/b/website-a1s39m.appspot.com/o/blog%252F6HEbFhFrwOjGlZ60A9hi%252FcontentImages%252FdFAMUDyl2Qxm2uIpyWaE-storybooks-6.png%3Falt%3Dmedia%26token%3D028f55fb-e038-4446-b94e-ac219ddc6cc2" alt="storybooks-rowy-bravo-5" width="800" height="451"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;In the Template Setup Wizard, when prompted to add your OpenAI API Key, click on the "&lt;strong&gt;Add a key in Secret Manager&lt;/strong&gt;" button. This will redirect you to the &lt;a href="https://console.cloud.google.com/security/secret-manager"&gt;GCP Secret Manager&lt;/a&gt;. Add your OpenAI API Key as shown below and click "&lt;strong&gt;Create a Secret&lt;/strong&gt;".&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--yj3nJsV_--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://firebasestorage.googleapis.com/v0/b/website-a1s39m.appspot.com/o/blog%252F6HEbFhFrwOjGlZ60A9hi%252FcontentImages%252Fwu0lI3I6VLCxbcn9CxYw-storybooks-7.png%3Falt%3Dmedia%26token%3Dc64af9fc-798a-44a4-b68c-f10edfeb148f" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--yj3nJsV_--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://firebasestorage.googleapis.com/v0/b/website-a1s39m.appspot.com/o/blog%252F6HEbFhFrwOjGlZ60A9hi%252FcontentImages%252Fwu0lI3I6VLCxbcn9CxYw-storybooks-7.png%3Falt%3Dmedia%26token%3Dc64af9fc-798a-44a4-b68c-f10edfeb148f" alt="storybooks-rowy-bravo-6" width="800" height="451"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Now, you can go back to the setup process. Simply click on the Secret dropdown and select your newly generated API Key. If you can't see it, try clicking the “&lt;strong&gt;Refresh&lt;/strong&gt;” button.&lt;/p&gt;

&lt;h4 id="22retrievingtheplayhtsecretkey"&gt;2.2 Retrieving the PlayHT Secret Key ✅&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;Navigate to the &lt;a href="https://play.ht/app/api-access"&gt;PlayHT Developer Dashboard&lt;/a&gt;. Create an account, if you haven’t already and copy the &lt;strong&gt;User ID&lt;/strong&gt; and &lt;strong&gt;Secret Key&lt;/strong&gt;.
&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--p2z0ZsHK--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://firebasestorage.googleapis.com/v0/b/website-a1s39m.appspot.com/o/blog%252F6HEbFhFrwOjGlZ60A9hi%252FcontentImages%252FTi4Oy4LoK6AMBnkoLZmX-storybooks-8.png%3Falt%3Dmedia%26token%3D249c9e22-c302-49b1-86b6-1a64a8c80b08" alt="storybooks-rowy-bravo-7" width="800" height="442"&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;That’s it! Now, you’ve generated your User ID and Secret Key! 🎉 In the Template Setup Wizard, when prompted to add your PlayHT Secret Key, click on the "&lt;strong&gt;Add a key in Secret Manager&lt;/strong&gt;" button. This will redirect you to the &lt;a href="https://console.cloud.google.com/security/secret-manager"&gt;GCP Secret Manager&lt;/a&gt;. Add your PlayHT Key as shown below and click &lt;strong&gt;Create a Secret&lt;/strong&gt;.&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;{
    "userId": "PASTE YOUR USER ID HERE",
    "secretKey": "PASTE YOUR SECRET KEY HERE"
}
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;After generating the &lt;strong&gt;PlayHT Secret Key&lt;/strong&gt;, you can return to the setup process and select your newly generated API key from the Secret dropdown.&lt;/p&gt;

&lt;h4 id="23retrievingthestabilityaiapikey"&gt;2.3 Retrieving the Stability AI API Key ✅&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;Go to the &lt;a href="https://beta.dreamstudio.ai/account"&gt;DreamStudio Dashboard&lt;/a&gt; by &lt;strong&gt;Stability AI&lt;/strong&gt;, and create an account via a simple step-by-step guided process.&lt;/li&gt;
&lt;li&gt;Click on “&lt;strong&gt;Get API Key&lt;/strong&gt;” button to generate your API Key.
&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--9onGYVe0--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://firebasestorage.googleapis.com/v0/b/website-a1s39m.appspot.com/o/blog%252F6HEbFhFrwOjGlZ60A9hi%252FcontentImages%252F8DzX5Od8i6QIQe8IuPH9-storybooks-9.png%3Falt%3Dmedia%26token%3D7d1f959a-468e-4d0e-99a8-885f1583025b" alt="storybooks-rowy-bravo-8" width="800" height="442"&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Your Stability AI API Key is now generated! 🎉&lt;/p&gt;

&lt;p&gt;In the Template Setup Wizard, when prompted to add your &lt;strong&gt;Stability AI Secret Key&lt;/strong&gt;, click on the &lt;strong&gt;Add a key in Secret Manager&lt;/strong&gt; button. This will redirect you to the &lt;a href="https://console.cloud.google.com/security/secret-manager"&gt;GCP Secret Manager&lt;/a&gt;. Add your Stability AI Key as shown below and click &lt;strong&gt;Create a Secret&lt;/strong&gt;.&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;"PASTE YOUR API KEY HERE"
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;After generating the &lt;strong&gt;Stability AI Secret Key&lt;/strong&gt;, you can go back to the setup process, click &lt;strong&gt;Refresh&lt;/strong&gt; and select the generated API key from the Secret dropdown.&lt;/p&gt;

&lt;h2 id="understandingandcustomisinglogicandfunctionalityofstorybooks"&gt;Understanding and Customising Logic and Functionality of Story Books 💭&lt;/h2&gt;

&lt;p&gt;When you click on the "&lt;strong&gt;Add Row&lt;/strong&gt;" button to create a new entry, you have the option to select the &lt;strong&gt;Writing Style&lt;/strong&gt; from a dropdown menu. The available styles are &lt;strong&gt;inspired by renowned authors and illustrators&lt;/strong&gt; in the field of children's literature. If you prefer, you can customize the list by adding or removing the names of authors of your choice through the "&lt;strong&gt;Column Config&lt;/strong&gt;" settings.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--mAdgKFh0--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://firebasestorage.googleapis.com/v0/b/website-a1s39m.appspot.com/o/blog%252F6HEbFhFrwOjGlZ60A9hi%252FcontentImages%252F0mT95mJPSjtnlMSwFMql-storybooks-10.png%3Falt%3Dmedia%26token%3D8fd16c2c-3be2-4f3f-9112-9663ccd1769d" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--mAdgKFh0--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://firebasestorage.googleapis.com/v0/b/website-a1s39m.appspot.com/o/blog%252F6HEbFhFrwOjGlZ60A9hi%252FcontentImages%252F0mT95mJPSjtnlMSwFMql-storybooks-10.png%3Falt%3Dmedia%26token%3D8fd16c2c-3be2-4f3f-9112-9663ccd1769d" alt="storybooks-rowy-bravo-9" width="800" height="436"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The story is generated based on the content in the "&lt;strong&gt;Prompt&lt;/strong&gt;" field. You can input any idea that comes to mind and the system will generate a story around it. For instance, you could enter &lt;code&gt;A curious squirrel's exciting forest treasure hunt teaches the value of friendship&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;The "&lt;strong&gt;Response&lt;/strong&gt;" column is a Derivative Field that utilizes the power of OpenAI's GPT-4 API to generate story content in the form of a JSON object.&lt;/p&gt;

&lt;p&gt;To access and modify the underlying logic responsible for generating the stories, simply go to the "&lt;strong&gt;Column Config&lt;/strong&gt;" menu for the "&lt;strong&gt;Response&lt;/strong&gt;" field.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--8ZOSx_vz--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://firebasestorage.googleapis.com/v0/b/website-a1s39m.appspot.com/o/blog%252F6HEbFhFrwOjGlZ60A9hi%252FcontentImages%252F9YnUiND5Hr8VLMrJFC4Y-storybooks-11.png%3Falt%3Dmedia%26token%3D1fb19ab4-b427-470d-a7b2-5be61b3eb81f" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--8ZOSx_vz--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://firebasestorage.googleapis.com/v0/b/website-a1s39m.appspot.com/o/blog%252F6HEbFhFrwOjGlZ60A9hi%252FcontentImages%252F9YnUiND5Hr8VLMrJFC4Y-storybooks-11.png%3Falt%3Dmedia%26token%3D1fb19ab4-b427-470d-a7b2-5be61b3eb81f" alt="storybooks-rowy-bravo-10" width="800" height="436"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2 id="storybooksresponseinsidethescript"&gt;Story Books Response - Inside the Script 📜&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--7rk1r_CY--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://firebasestorage.googleapis.com/v0/b/website-a1s39m.appspot.com/o/blog%252F6HEbFhFrwOjGlZ60A9hi%252FcontentImages%252FoKzJHS1vNwyA0U9b2Qrg-storybooks-12.png%3Falt%3Dmedia%26token%3Dfd11fc60-a24f-430e-ac0e-b989c33f5c9c" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--7rk1r_CY--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://firebasestorage.googleapis.com/v0/b/website-a1s39m.appspot.com/o/blog%252F6HEbFhFrwOjGlZ60A9hi%252FcontentImages%252FoKzJHS1vNwyA0U9b2Qrg-storybooks-12.png%3Falt%3Dmedia%26token%3Dfd11fc60-a24f-430e-ac0e-b989c33f5c9c" alt="storybooks-rowy-bravo-11" width="800" height="546"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The &lt;code&gt;systemPrompt&lt;/code&gt; variable is responsible for conveying the story prompt to the AI. We have set the &lt;code&gt;response&lt;/code&gt; column to return the generated story book data in the form of a Structured JSON response, which would help us to parse through the data easily.&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;{
  "cover":{
      "title":string,
    "subtitle":string,
        "illustration":string
   },
   "pages":[
     {
            index:number,
      "illustration":string,
          "text":string
     }
   ]  
}
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Via this derivative field’s JSON contents, we’ll be extracting the various components of our Story Books Application, such as the &lt;strong&gt;Story Title, Subtitle, the illustration prompt&lt;/strong&gt; for generating the cover image, and the &lt;strong&gt;story pages with respective illustrations&lt;/strong&gt;.&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;We can also add additional instructions and rules for the storybook content, such as they must be meaningful, have a good moral, be safe for children to hear, and must not contain explicit content.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;In the API call to OpenAI, we specify the model, which is &lt;code&gt;gpt-4&lt;/code&gt;, and the temperature. The Temperature always lies in the range of 0 to 1. The Temperature is particularly useful when we want the API to complete something, where there is only one answer and vice versa. If you want to generate ideas or complete a story, higher temperature will bring us more variety.&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;const response = await openai.createChatCompletion({
      model: "gpt-4",
      temperature: 0.7,
      messages: [
        { role: "system", content: systemPrompt },
        //...chatHistory,
        {
          role: "user",
          content: row.prompt,
        }
      ]
    })
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;When the temperature is set to &lt;code&gt;0&lt;/code&gt;, the responses become quite straightforward and lack creativity, almost being deterministic. On the other hand, when the temperature is set to &lt;code&gt;1&lt;/code&gt;, the responses exhibit a wide range of creativity and can vary significantly.&lt;/p&gt;

&lt;h2 id="generatingcoverimages"&gt;Generating Cover Images 🖼️&lt;/h2&gt;

&lt;p&gt;The prompt for generating the cover image of the story is stored in the "&lt;strong&gt;Cover Illustration&lt;/strong&gt;" field, which is &lt;strong&gt;obtained from OpenAI's response&lt;/strong&gt;. To generate the cover image, you can choose from a &lt;strong&gt;variety of style presets&lt;/strong&gt; available in the "&lt;strong&gt;Style Preset&lt;/strong&gt;" dropdown menu.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--YdxcMKUr--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://firebasestorage.googleapis.com/v0/b/website-a1s39m.appspot.com/o/blog%252F6HEbFhFrwOjGlZ60A9hi%252FcontentImages%252FkDNLYQRTXpMNpOxFnKFV-storybooks-13.png%3Falt%3Dmedia%26token%3D011d2470-2448-4654-af56-1aab9f96d001" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--YdxcMKUr--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://firebasestorage.googleapis.com/v0/b/website-a1s39m.appspot.com/o/blog%252F6HEbFhFrwOjGlZ60A9hi%252FcontentImages%252FkDNLYQRTXpMNpOxFnKFV-storybooks-13.png%3Falt%3Dmedia%26token%3D011d2470-2448-4654-af56-1aab9f96d001" alt="storybooks-rowy-bravo-12" width="800" height="507"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The "&lt;strong&gt;Style Preset&lt;/strong&gt;" field can be customized through the Column Config menu. You have the option to add or remove style presets or change the default preset.&lt;/p&gt;

&lt;p&gt;Both the "&lt;strong&gt;Cover Illustration&lt;/strong&gt;" and "&lt;strong&gt;Style Presets&lt;/strong&gt;" fields serve as listeners for image generation. Any modifications made to these fields will trigger the regeneration of the cover image.&lt;/p&gt;

&lt;p&gt;If you are not satisfied with the appearance of your cover image, you have the flexibility to directly modify the prompt in the table or select a different style preset of your preference.&lt;/p&gt;

&lt;h2 id="selectingvoiceforthegeneratedstory"&gt;Selecting Voice for the Generated Story 🎧&lt;/h2&gt;

&lt;p&gt;The “&lt;strong&gt;Voice&lt;/strong&gt;” column is a Connector field type which calls an external API, in our case it calls the PlayHT &lt;code&gt;getVoices&lt;/code&gt; end-point. This allows us to fetch the list of voices we can generate our audio story in.&lt;/p&gt;

&lt;p&gt;This ensures our app stays up-to-date as it would get all the updated voice options without having to manually add them in the dropdown menu.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--FaR3zSWL--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://firebasestorage.googleapis.com/v0/b/website-a1s39m.appspot.com/o/blog%252F6HEbFhFrwOjGlZ60A9hi%252FcontentImages%252FPNPBOZBR945y9SzxNbQl-storybooks-14.png%3Falt%3Dmedia%26token%3Deb73d203-48f0-4139-a81d-ea842fafc471" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--FaR3zSWL--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://firebasestorage.googleapis.com/v0/b/website-a1s39m.appspot.com/o/blog%252F6HEbFhFrwOjGlZ60A9hi%252FcontentImages%252FPNPBOZBR945y9SzxNbQl-storybooks-14.png%3Falt%3Dmedia%26token%3Deb73d203-48f0-4139-a81d-ea842fafc471" alt="storybooks-rowy-bravo-13" width="800" height="562"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2 id="extractingpagestoasubtable"&gt;Extracting Pages to a Sub-table 📑&lt;/h2&gt;

&lt;p&gt;Once we get our generated response via OpenAI, we can see that our response consists of two parts:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;cover&lt;/code&gt; which contains the illustration, subtitle, and title for our story.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;pages&lt;/code&gt; which contains illustration, index, and the story text for every page.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Now, to be able to convert this response into separate pages, we have a &lt;strong&gt;Sync Pages&lt;/strong&gt; extension deployed which automates creating a document in a sub-collection for each page in the story. The extension is triggered by the &lt;code&gt;responsePages&lt;/code&gt; , &lt;code&gt;stylePreset&lt;/code&gt; , and &lt;code&gt;voiceId&lt;/code&gt; fields, which means any changes in these columns will trigger a re-evaluation of the &lt;strong&gt;Sync Pages&lt;/strong&gt; extension.&lt;/p&gt;

&lt;p&gt;The &lt;strong&gt;Sync Pages&lt;/strong&gt; extension body automates going through all the pages in the response and adds a document for each page of the story in the sub-table.&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;await Promise.all(row.response.pages.map(async(page,i)=&amp;gt;{
   console.log(`p-${i}`)
    await ref.collection('pages').doc(`p-${i}`).set({...page,stylePreset,voiceId},{merge:true})
  }))
&lt;/code&gt;&lt;/pre&gt;

&lt;h2 id="bravointegration"&gt;Bravo Integration 🚀&lt;/h2&gt;

&lt;p&gt;We will be &lt;strong&gt;utilizing Rowy Webhooks to set up the connection and access data&lt;/strong&gt; in our Rowy table via the Bravo Studio frontend.&lt;/p&gt;

&lt;h3 id="createastorywebhook"&gt;“Create a Story” Webhook 🕸️&lt;/h3&gt;

&lt;p&gt;We have the option to enable verification via a Firebase Authorization token, which needs to be passed as a Header as &lt;code&gt;Authorization: Bear ACCESS_TOKEN&lt;/code&gt;. This allows you to assert a restriction to who can access which stories. &lt;strong&gt;This verification is entirely optional&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--Fpz9nLQB--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://firebasestorage.googleapis.com/v0/b/website-a1s39m.appspot.com/o/blog%252F6HEbFhFrwOjGlZ60A9hi%252FcontentImages%252FS6oamqRhmtM991tohg9S-storybooks-15.png%3Falt%3Dmedia%26token%3D6bd6a878-4c9e-4480-800c-1b0625d71937" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--Fpz9nLQB--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://firebasestorage.googleapis.com/v0/b/website-a1s39m.appspot.com/o/blog%252F6HEbFhFrwOjGlZ60A9hi%252FcontentImages%252FS6oamqRhmtM991tohg9S-storybooks-15.png%3Falt%3Dmedia%26token%3D6bd6a878-4c9e-4480-800c-1b0625d71937" alt="storybooks-rowy-bravo-14" width="800" height="296"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The Parser function takes the request inside the body, and creates a new document for the incoming prompt to generate a new story. We can also add the &lt;strong&gt;Writing Style&lt;/strong&gt;, &lt;strong&gt;Preset Style&lt;/strong&gt;, and the &lt;strong&gt;Voice&lt;/strong&gt;.&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;// send a post requst with body containing 'prompt' key with prompt of the story 
  const { body } = req;
    return { ...body}
&lt;/code&gt;&lt;/pre&gt;

&lt;h3 id="getstorieswebhook"&gt;“Get Stories” Webhook 🕸️&lt;/h3&gt;

&lt;p&gt;This is the Webhook responsible for getting the stories. The parser queries the collection to get the stories table. The parser maps through the query documents to create the stories objects and sends it back to the client.&lt;/p&gt;

&lt;h2 id="rowyxbravostudioapowerfulcombinationforyourbedtimestorybookapp"&gt;Rowy X Bravo Studio: A Powerful Combination for Your Bedtime Storybook App 💪✨&lt;/h2&gt;

&lt;p&gt;The Rowy X Bravo Studio combination offers a &lt;strong&gt;highly reusable and extensible&lt;/strong&gt; app-building solution that &lt;strong&gt;opens up a world of possibilities for no-code and low-code users&lt;/strong&gt;. With the Story Books template, you can effortlessly create captivating storybooks by simply providing one-line prompts, making it ideal for users to reuse the template logic and enhance it to their liking.&lt;/p&gt;

&lt;p&gt;With its user-friendly interface and the ability to manage and organize content using Rowy as the backend CMS, the possibilities for creating interactive mobile apps extend beyond storybooks. From educational apps and interactive catalogs, to guided tours and immersive experiences, the Rowy X Bravo Studio duo empowers users to transform their creative visions into reality, all without the need for coding expertise.&lt;/p&gt;

&lt;p&gt;Experience the boundless potential of &lt;strong&gt;Rowy X Bravo Studio&lt;/strong&gt;and unlock your imagination to craft captivating, interactive applications that leave a lasting impression on your audience.&lt;/p&gt;

&lt;p&gt;If you enjoyed our content, please give us a &lt;a href="https://twitter.com/rowyio"&gt;follow on Twitter&lt;/a&gt; or &lt;a href="https://rowy.io/discord"&gt;join our Discord&lt;/a&gt; in case of any questions. We look forward to hearing from you! 💜&lt;/p&gt;

</description>
      <category>googlecloud</category>
      <category>tutorial</category>
      <category>beginners</category>
      <category>codenewbie</category>
    </item>
    <item>
      <title>Classify Website Content using Langchain, OpenAI and Browserless</title>
      <dc:creator>Bhavya Verma</dc:creator>
      <pubDate>Tue, 23 May 2023 15:05:52 +0000</pubDate>
      <link>https://dev.to/buildship/classify-website-content-using-langchain-openai-and-browserless-2b2p</link>
      <guid>https://dev.to/buildship/classify-website-content-using-langchain-openai-and-browserless-2b2p</guid>
      <description>&lt;p&gt;In the fast-paced digital era, the internet is teeming with an overwhelming amount of websites and online content. Finding the right information amidst this vast sea of data can be a daunting and time-consuming task.&lt;/p&gt;

&lt;p&gt;Fortunately, with the advent of advanced language models and frameworks such as &lt;a href="https://js.langchain.com/docs/"&gt;Langchain&lt;/a&gt;, we now have access to powerful AI tools that can streamline various tasks. &lt;/p&gt;

&lt;p&gt;In this blog, you’ll explore the capabilities of the &lt;a href="https://demo.rowy.io/table/langchainURLClassifier#sideDrawer=%22table-information%22"&gt;Langchain URL Classifier app&lt;/a&gt; (powered by Rowy) and discover how it harnesses Langchain to effectively classify websites.&lt;/p&gt;

&lt;h2 id="langchainurlclassifieranoverview"&gt;Langchain URL Classifier - An Overview 🔎&lt;/h2&gt;

&lt;p&gt;The Langchain URL Classifier is a low-code demo app of how to &lt;strong&gt;leverage Langchain framework&lt;/strong&gt; along with &lt;strong&gt;OpenAI&lt;/strong&gt; to classify URLs and website content coupled with &lt;strong&gt;Browserless&lt;/strong&gt; tool to make it more accurate. This app will take a website URL and give out a category of the website along with what is the purpose of each website. &lt;/p&gt;

&lt;p&gt;By following this tutorial, you'll acquire a complete and functional app backend for URL classification. It serves as an excellent foundation that can be customized and adapted to suit your specific use cases as needed.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--SJ1R7ln3--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://firebasestorage.googleapis.com/v0/b/website-a1s39m.appspot.com/o/blog%252F6HEbFhFrwOjGlZ60A9hj%252FcontentImages%252FSMY22OMaFnWFC9u2ttcK-Langchain1.png%3Falt%3Dmedia%26token%3D354b5ff8-54c7-411e-8233-4a0a8d73cefd" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--SJ1R7ln3--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://firebasestorage.googleapis.com/v0/b/website-a1s39m.appspot.com/o/blog%252F6HEbFhFrwOjGlZ60A9hj%252FcontentImages%252FSMY22OMaFnWFC9u2ttcK-Langchain1.png%3Falt%3Dmedia%26token%3D354b5ff8-54c7-411e-8233-4a0a8d73cefd" alt="langchain1.png" width="800" height="343"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3 id="whatislangchain"&gt;What is Langchain? 🦜🔗&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://js.langchain.com/docs/"&gt;Langchain&lt;/a&gt; is an &lt;strong&gt;AI framework&lt;/strong&gt; designed for developing applications powered by language models. It distinguishes itself by going &lt;strong&gt;beyond mere language model integration&lt;/strong&gt;, incorporating key principles that make applications more data-aware and dynamic.&lt;/p&gt;

&lt;p&gt;By connecting language models to additional data sources, Langchain unlocks new possibilities for developing intelligent applications.&lt;/p&gt;

&lt;p&gt;The Langchain URL Classifier primarily uses &lt;strong&gt;LLM Chains&lt;/strong&gt; that enable us to connect several components to form a single, coherent application. We can, for example, build a chain that receives user input, formats it with a &lt;code&gt;PromptTemplate&lt;/code&gt;, and then delivers the prepared result to an LLM. We can create more sophisticated chains by merging multiple chains or chains with other components.&lt;/p&gt;

&lt;h2 id="prerequisites"&gt;Pre-requisites ✅&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;A Rowy Account with &lt;strong&gt;Rowy Run&lt;/strong&gt; set up. If you don’t have one, create one on &lt;a href="www.rowy.app"&gt;www.rowy.app&lt;/a&gt; - It is fully &lt;a href="https://www.rowy.io/pricing"&gt;free&lt;/a&gt; for one project with unlimited database tables and functions (For more information on setting up Rowy, check out our documentation at https://docs.rowy.io/setup/install)&lt;/li&gt;
&lt;/ul&gt;

&lt;h2 id="settingupthelangchainurlclassifier"&gt;Setting up the Langchain URL Classifier ✨&lt;/h2&gt;

&lt;p&gt;Get started with the following step-by-step instructions to create a Langchain URL Classifier backend app 🚀&lt;/p&gt;

&lt;h3 id="1createatableonrowy"&gt;1. Create a table on Rowy&lt;/h3&gt;

&lt;p&gt;Visit &lt;a href="www.rowy.io"&gt;www.rowy.io&lt;/a&gt; and click "&lt;strong&gt;Sign In&lt;/strong&gt;". Once you've created your Workspace and set up your Project, select the &lt;strong&gt;Langchain URL Classifier&lt;/strong&gt; template from the "&lt;strong&gt;Create a Table&lt;/strong&gt;" section at the top of the page.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--OYl0Iq7K--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://firebasestorage.googleapis.com/v0/b/website-a1s39m.appspot.com/o/blog%252F6HEbFhFrwOjGlZ60A9hj%252FcontentImages%252FAxmu7KZM8rfcocuHFWiC-Langchain2.png%3Falt%3Dmedia%26token%3Dfbea2d9e-fb9c-4e31-886f-5675fda89988" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--OYl0Iq7K--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://firebasestorage.googleapis.com/v0/b/website-a1s39m.appspot.com/o/blog%252F6HEbFhFrwOjGlZ60A9hj%252FcontentImages%252FAxmu7KZM8rfcocuHFWiC-Langchain2.png%3Falt%3Dmedia%26token%3Dfbea2d9e-fb9c-4e31-886f-5675fda89988" alt="langchain2.png" width="800" height="214"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The template setup wizard will guide you through the steps to set up your table, add your secret keys, and deploy your cloud functions – all in one go!&lt;/p&gt;

&lt;h3 id="2settingupyoursecrets"&gt;2. Setting up your Secrets 🤫&lt;/h3&gt;

&lt;p&gt;As part of the template setup process, you'll be prompted to add two secrets: your &lt;strong&gt;OpenAI API Key&lt;/strong&gt; and &lt;strong&gt;Browserless API Key.&lt;/strong&gt; Here's how to retrieve these secret keys for your project:&lt;/p&gt;

&lt;h4 id="21retrievingtheopenaiapikey"&gt;2.1 Retrieving the OpenAI API Key ✅&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;Go to the OpenAI Account Dashboard and create an account if you haven’t already.&lt;/li&gt;
&lt;li&gt;Click on Create a new secret key.
&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--yD1kVHr9--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://firebasestorage.googleapis.com/v0/b/website-a1s39m.appspot.com/o/blog%252F6HEbFhFrwOjGlZ60A9hj%252FcontentImages%252F0kfAaVff1wokD2pMVeA1-Langchain3.png%3Falt%3Dmedia%26token%3Dc0b57eff-8b7a-4693-8b11-320a54829ea8" alt="langchain3.png" width="800" height="338"&gt;
&lt;/li&gt;
&lt;li&gt;Add a name for your secret key, let’s say &lt;strong&gt;Rowy Langchain&lt;/strong&gt;. Click &lt;strong&gt;Create&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;Now, your OpenAI API Key is generated! 🥳 Copy and store it somewhere temporarily.
&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--HCojIVhp--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://firebasestorage.googleapis.com/v0/b/website-a1s39m.appspot.com/o/blog%252F6HEbFhFrwOjGlZ60A9hj%252FcontentImages%252FSio9WSSQfA8AuQWapMFz-Langchain4.png%3Falt%3Dmedia%26token%3Dd0883cd0-e45c-4b39-a7e8-5d974890e9b6" alt="langchain4.png" width="800" height="451"&gt;
In the Template Setup Wizard, when prompted to add your OpenAI API Key, click on the &lt;strong&gt;Add a key in Secret Manager&lt;/strong&gt; button. This will redirect you to the &lt;a href="https://console.cloud.google.com/security/secret-manager"&gt;GCP Secret Manager&lt;/a&gt;. Add your &lt;strong&gt;OpenAI API Key&lt;/strong&gt; as shown below and click &lt;strong&gt;Create a Secret&lt;/strong&gt;.
&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--0GMhZPJb--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://firebasestorage.googleapis.com/v0/b/website-a1s39m.appspot.com/o/blog%252F6HEbFhFrwOjGlZ60A9hj%252FcontentImages%252F9Owk3LYBLJ1wXDYj7mN8-Langchain5.png%3Falt%3Dmedia%26token%3D64046148-3aa6-4f0c-b82b-1d1bcc34d0a2" alt="langchain5.png" width="800" height="451"&gt;
Now, you can go back to the setup process. In the Secret dropdown itself, click &lt;strong&gt;Refresh&lt;/strong&gt; to see your &lt;strong&gt;OpenAI API Key&lt;/strong&gt; and select it.&lt;/li&gt;
&lt;/ul&gt;

&lt;h4 id="22retrievingthebrowserlessapikey"&gt;2.2 Retrieving the Browserless API Key ✅&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;Navigate to the &lt;a href="https://cloud.browserless.io/account/"&gt;Browserless Dashboard&lt;/a&gt; and create an account, if you haven’t already.
&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--1d2SixAl--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://firebasestorage.googleapis.com/v0/b/website-a1s39m.appspot.com/o/blog%252F6HEbFhFrwOjGlZ60A9hj%252FcontentImages%252FTOA3dpO8Nh7BDN6hrVRb-Langchain7.png%3Falt%3Dmedia%26token%3D962a0c42-50bd-42f1-9b8b-fdf53db425b2" alt="langchain7.png" width="800" height="444"&gt;
&lt;/li&gt;
&lt;li&gt;Select a &lt;a href="https://www.browserless.io/sign-up-cloud-unit/"&gt;plan&lt;/a&gt; as per your requirement. (You can also opt for the free tier)
&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--71XN0y4F--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://firebasestorage.googleapis.com/v0/b/website-a1s39m.appspot.com/o/blog%252F6HEbFhFrwOjGlZ60A9hj%252FcontentImages%252FR9IgOAlVL4udKe73ebC9-Langchain8.png%3Falt%3Dmedia%26token%3D0fa8b4fb-a047-4c14-b956-ee9283525cab" alt="langchain8.png" width="800" height="444"&gt;
&lt;/li&gt;
&lt;li&gt;Verify your email address according to the prompted steps on the portal.&lt;/li&gt;
&lt;li&gt;Your &lt;strong&gt;Browserless API Key&lt;/strong&gt; is generated! 🥳 Copy the generated API key from the dashboard.
&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--VWmy2_R5--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://firebasestorage.googleapis.com/v0/b/website-a1s39m.appspot.com/o/blog%252F6HEbFhFrwOjGlZ60A9hj%252FcontentImages%252FXc81BmUF6vmyd6COiy8e-Langchain9.png%3Falt%3Dmedia%26token%3Da767a6f0-ce45-4389-a69b-98ba2c9e84b7" alt="langchain9.png" width="800" height="444"&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;In the Template Setup Wizard, when prompted to add your &lt;strong&gt;Browserless API Key&lt;/strong&gt;, click on the &lt;strong&gt;Add a key in Secret Manager&lt;/strong&gt; button. This will redirect you to the &lt;a href="https://console.cloud.google.com/security/secret-manager"&gt;GCP Secret Manager&lt;/a&gt;. Add your API Key as shown below and click &lt;strong&gt;Create a Secret&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--57XIMmXy--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://firebasestorage.googleapis.com/v0/b/website-a1s39m.appspot.com/o/blog%252F6HEbFhFrwOjGlZ60A9hj%252FcontentImages%252FE5uN4Mvn6a5z5DLASW56-Langchain10.png%3Falt%3Dmedia%26token%3D91d0ce17-4ffa-4b6a-b5e7-839e9aef3b7c" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--57XIMmXy--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://firebasestorage.googleapis.com/v0/b/website-a1s39m.appspot.com/o/blog%252F6HEbFhFrwOjGlZ60A9hj%252FcontentImages%252FE5uN4Mvn6a5z5DLASW56-Langchain10.png%3Falt%3Dmedia%26token%3D91d0ce17-4ffa-4b6a-b5e7-839e9aef3b7c" alt="langchain10.png" width="800" height="425"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Now, you can go back to the setup process. In the Secret dropdown itself, click &lt;strong&gt;Refresh&lt;/strong&gt; to view your &lt;strong&gt;Browserless API Key&lt;/strong&gt; and select it.&lt;/p&gt;

&lt;h3 id="3deployingcloudfunctions"&gt;3. Deploying Cloud Functions 🚀&lt;/h3&gt;

&lt;p&gt;The template set up process will then prompt you to deploy the automations. Click the “&lt;strong&gt;Deploy Functions&lt;/strong&gt;” button to set your derivatives into gear. Once the deployment completes, click “&lt;strong&gt;Proceed&lt;/strong&gt;” and you will be redirected to your Langchain URL Classifier application.
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--124SPny4--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://firebasestorage.googleapis.com/v0/b/website-a1s39m.appspot.com/o/blog%252F6HEbFhFrwOjGlZ60A9hj%252FcontentImages%252F6Hk6DtZrWM9BeKYLhbkF-Langchain11.png%3Falt%3Dmedia%26token%3Dadfd6373-ec74-4493-91f8-056e3f239454" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--124SPny4--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://firebasestorage.googleapis.com/v0/b/website-a1s39m.appspot.com/o/blog%252F6HEbFhFrwOjGlZ60A9hj%252FcontentImages%252F6Hk6DtZrWM9BeKYLhbkF-Langchain11.png%3Falt%3Dmedia%26token%3Dadfd6373-ec74-4493-91f8-056e3f239454" alt="langchain11.png" width="800" height="425"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Now, you’re all set to get hands on with the application! 🎉 Connect it to the frontend of your choice, experiment with the logic, or feel free to use the default Rowy template as a starting point.&lt;/p&gt;

&lt;h2 id="simplifyingweburlclassification"&gt;Simplifying Web URL Classification 💫&lt;/h2&gt;

&lt;p&gt;The Langchain URL Classifier primarily consists of two automated data fields, i.e. &lt;strong&gt;Website Category&lt;/strong&gt; and &lt;strong&gt;Website Summary&lt;/strong&gt;. Every time a new row is added, the user can &lt;strong&gt;specify the URL of the Website&lt;/strong&gt; in the URL field. The derivative functions listen to this field and dynamically generate results.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--CLnjikbe--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://firebasestorage.googleapis.com/v0/b/website-a1s39m.appspot.com/o/blog%252F6HEbFhFrwOjGlZ60A9hj%252FcontentImages%252FnifejvSWBgNbh18yeVjx-Langchain12.png%3Falt%3Dmedia%26token%3D3a4f5f87-495b-4ef7-a6fb-cb1507ee55ab" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--CLnjikbe--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://firebasestorage.googleapis.com/v0/b/website-a1s39m.appspot.com/o/blog%252F6HEbFhFrwOjGlZ60A9hj%252FcontentImages%252FnifejvSWBgNbh18yeVjx-Langchain12.png%3Falt%3Dmedia%26token%3D3a4f5f87-495b-4ef7-a6fb-cb1507ee55ab" alt="langchain12.png" width="800" height="417"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3 id="websitecategory"&gt;Website Category&lt;/h3&gt;

&lt;p&gt;The Website Category field uses an instance of the &lt;code&gt;LLMChain&lt;/code&gt; class provided by &lt;strong&gt;Langchain&lt;/strong&gt;. The &lt;strong&gt;Web Scraping service of the Browserless API&lt;/strong&gt; retrieves the HTML content of the website. Based on the processing and extraction of this HTML content, the language model generates a response based on the provided prompt, which includes classifying the website into a category.&lt;/p&gt;

&lt;h3 id="websitesummary"&gt;Website Summary&lt;/h3&gt;

&lt;p&gt;The Website Summary field uses a similar logic to generate the summary of the HTML content provided by the web scraping service.&lt;/p&gt;

&lt;h2 id="conclusion"&gt;Conclusion&lt;/h2&gt;

&lt;p&gt;The Langchain URL Classifier is an innovative application that utilizes the power of language models to simplify web URL classification. By leveraging the capabilities of the Langchain framework, this tool categorizes web URLs based on the content and purpose of the respective websites.&lt;/p&gt;

&lt;p&gt;This blog highlights the use case of Rowy as a platform for leveraging large language models. It focuses on the Langchain URL Classifier, an application that dynamically generates website categories and summaries based on the provided URL. By simplifying web content navigation and enhancing information retrieval, the Langchain URL Classifier offers an efficient solution for finding relevant information.&lt;/p&gt;

&lt;p&gt;If you enjoyed our content, please give us a &lt;a href="https://twitter.com/rowyio"&gt;follow on Twitter&lt;/a&gt; or &lt;a href="https://rowy.io/discord"&gt;join our Discord&lt;/a&gt; in case of any questions. We look forward to hearing from you! 💜&lt;/p&gt;

</description>
      <category>nocode</category>
      <category>lowcode</category>
      <category>backend</category>
      <category>javascript</category>
    </item>
    <item>
      <title>Automate GitHub Discussions with Rowy and OpenAI's GPT-3 API</title>
      <dc:creator>Bhavya Verma</dc:creator>
      <pubDate>Thu, 18 May 2023 13:27:20 +0000</pubDate>
      <link>https://dev.to/buildship/automate-github-discussions-with-rowy-and-openais-gpt-3-api-2llh</link>
      <guid>https://dev.to/buildship/automate-github-discussions-with-rowy-and-openais-gpt-3-api-2llh</guid>
      <description>&lt;p&gt;Managing open-source communities can be daunting, especially tracking community questions and providing timely answers. That's why we created the &lt;strong&gt;GitHub Command Centre&lt;/strong&gt;. It's a powerful tool that leverages &lt;strong&gt;OpenAI's GPT-3 API&lt;/strong&gt; to help open-source organizations manage their &lt;strong&gt;GitHub Discussions&lt;/strong&gt; with greater efficiency. 💪&lt;/p&gt;

&lt;p&gt;The GitHub Command Centre &lt;strong&gt;streamlines the process&lt;/strong&gt; of handling community questions, &lt;strong&gt;automating responses&lt;/strong&gt; via the OpenAI GPT-3 API and providing &lt;strong&gt;first-level triaging&lt;/strong&gt;. This is a game-changing feature that makes managing open-source communities easier than ever before. In this blog post, we'll explore how the Command Centre works and how it can benefit your organization.&lt;/p&gt;

&lt;h2&gt;
  
  
  GitHub Discussions - An Overview
&lt;/h2&gt;

&lt;p&gt;GitHub Discussions is a built-in feature that allows open source project communities to have threaded conversations and Q&amp;amp;A sessions. Discussions are essential for open source projects, as they provide a platform for community members to ask questions, share ideas, and offer feedback to project maintainers.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F2cy4niwm4om786pdg8w7.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F2cy4niwm4om786pdg8w7.png" alt="GitHub Discussions - The home for developer communities" width="800" height="420"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;As open source projects grow and their communities expand, managing the discussions within them can become overwhelming for maintainers. That's where the GitHub Command Centre comes in, offering powerful tools to help streamline process of handling community questions and automating responses.&lt;/p&gt;

&lt;h2&gt;
  
  
  Pre-requisites ✅
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;A Rowy Account with &lt;a href="https://docs.rowy.io/setup/install"&gt;Rowy Run&lt;/a&gt; set up. If you don’t have one, you can easily create an account at &lt;a href="//www.rowy.app"&gt;www.rowy.app&lt;/a&gt;. If you need help setting up Rowy, check out our documentation &lt;a href="https://docs.rowy.io/category/how-to-guide"&gt;here&lt;/a&gt;.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;A GitHub repository with Discussions enabled. If you're not sure how to enable Discussions, you can follow GitHub's documentation at &lt;a href="https://docs.github.com/en/discussions"&gt;https://docs.github.com/en/discussions&lt;/a&gt;.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Once you have these prerequisites in place, you're ready to start using the GitHub Command Centre to manage your open-source community discussions with greater ease and efficiency! 🎯&lt;/p&gt;

&lt;h2&gt;
  
  
  Setting up the Command Centre ✨
&lt;/h2&gt;

&lt;p&gt;Follow these easy steps to get your GitHub Command Centre set up:&lt;/p&gt;

&lt;h3&gt;
  
  
  1. Getting Started with Rowy!
&lt;/h3&gt;

&lt;p&gt;The first step is to visit &lt;a href="//www.rowy.io"&gt;www.rowy.io&lt;/a&gt; and click on the "&lt;strong&gt;Sign In&lt;/strong&gt;" button. Once you have created your Workspace and set up your Project, you need to select the GitHub Command Centre template from the "&lt;strong&gt;Create a Table&lt;/strong&gt;" section located at the top of the page.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fsbpfbw55clordp2lfgg9.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fsbpfbw55clordp2lfgg9.png" alt="Rowy Dashboard Template Setup Wizard" width="800" height="213"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The template setup wizard will guide you through the steps to set up your table, add your secret keys, and deploy your cloud functions – all in one go! This streamlined process will save you time and effort. 🚀&lt;/p&gt;

&lt;h3&gt;
  
  
  2. Setting up your Secrets 🤫
&lt;/h3&gt;

&lt;p&gt;As part of the template setup process, you'll be prompted to add two secrets: your &lt;strong&gt;OpenAI API Key&lt;/strong&gt; and your &lt;strong&gt;GitHub Personal Access Token&lt;/strong&gt;. Here's how to retrieve these secret keys for your project:&lt;/p&gt;

&lt;h4&gt;
  
  
  1. Retrieving the OpenAI API Key ✅
&lt;/h4&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;Go to the &lt;a href="https://platform.openai.com/account/api-keys"&gt;OpenAI Account Dashboard&lt;/a&gt; and create an account if you haven’t already.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Click on &lt;strong&gt;Create a new secret key&lt;/strong&gt;.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fp2ibdecyq528pfljudte.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fp2ibdecyq528pfljudte.png" alt="OpenAI API Keys Dashboard" width="800" height="338"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;Add a name for your secret key, Let's use "&lt;strong&gt;Command Centre&lt;/strong&gt;" as an example. Finally, click "&lt;strong&gt;Create&lt;/strong&gt;" to save your new secret key.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Great! You've generated your OpenAI API Key. 🎉 Make sure to copy and store it in a safe and accessible location, as you'll be needing it later.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fhpb5s4l4zq9yqpotg73p.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fhpb5s4l4zq9yqpotg73p.png" alt="Adding OpenAI API Keys on Rowy Template Setup" width="800" height="451"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;In the Template Setup Wizard, when prompted to add your OpenAI API Key, click on the &lt;strong&gt;Add a key in Secret Manager&lt;/strong&gt; button. This will redirect you to the &lt;a href="https://console.cloud.google.com/security/secret-manager"&gt;GCP Secret Manager&lt;/a&gt;. Add your OpenAI API Key as shown below and click &lt;strong&gt;Create a Secret&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F8kat50rq2fyjrq0bu67c.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F8kat50rq2fyjrq0bu67c.png" alt="Adding OpenAI API key on Google Cloud Secret Manager" width="800" height="451"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Now, you can go back to the setup process. Simply click on the &lt;strong&gt;Secret dropdown&lt;/strong&gt; and select your newly generated API Key. If you can't see it, try clicking &lt;strong&gt;Refresh&lt;/strong&gt;.&lt;/p&gt;

&lt;h4&gt;
  
  
  2. Retrieving the GitHub Personal Access Token ✅
&lt;/h4&gt;

&lt;p&gt;Using a Personal Access Token allows the suggested answers generated by the GitHub Command Centre to be sent as comments on behalf of the token owner. This feature helps to streamline the process of managing GitHub Discussions for open-source projects.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;NOTE!&lt;/strong&gt; ✍️ Please note that we are currently using the beta version of the GitHub Discussions API, which has some limitations. Specifically, we can only use Personal Access Tokens to send suggested answers as comments on behalf of users. We hope that GitHub will introduce more versatile ways of using the API soon.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;QUICK TIP!&lt;/strong&gt; 💡 You have two options for using Personal Access Tokens to send suggested answers as comments. You can either use your own token or create a new account specifically for a bot that will answer questions about your organization.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;strong&gt;How to retrieve your Personal Access Token? 🤔&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;To retrieve your Personal Access Token, follow these steps:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Go to your &lt;a href="https://github.com/"&gt;GitHub Account&lt;/a&gt; and click on your &lt;strong&gt;profile picture&lt;/strong&gt; in the upper-right corner of the homepage. Then, click on &lt;strong&gt;Settings&lt;/strong&gt;.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F7hqg5vwbztx8mwvinl9b.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F7hqg5vwbztx8mwvinl9b.png" alt="Navigating GitHub Settings" width="800" height="742"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;In the left sidebar, click on &lt;strong&gt;Developer Settings&lt;/strong&gt;.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;In the left sidebar, under &lt;strong&gt;Personal access tokens&lt;/strong&gt;, click on &lt;strong&gt;Tokens (classic)&lt;/strong&gt;.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Click &lt;strong&gt;Generate new token&lt;/strong&gt;.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Set an expiration for the token and select the following scopes under the &lt;strong&gt;Select Scopes&lt;/strong&gt; category:&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;ul&gt;
&lt;li&gt;&lt;code&gt;public_repo&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;read:org&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;write:discussion&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;read:discussion&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fcdedsebauum0798x1rgm.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fcdedsebauum0798x1rgm.png" alt="Selecting Scopes for GitHub Personal Access Tokens" width="800" height="446"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fij2n21gnvlvphw9drqvg.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fij2n21gnvlvphw9drqvg.png" alt="Selecting Scopes for GitHub Personal Access Tokens" width="800" height="446"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Click &lt;strong&gt;Generate Token&lt;/strong&gt; and store it somewhere temporarily. You have successfully generated your Personal Access Token! 🥳&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;In the &lt;a href="https://console.cloud.google.com/security/secret-manager"&gt;GCP Secret Manager&lt;/a&gt;, add your GitHub Personal Access Token as shown below and click &lt;strong&gt;Create a Secret&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ftenqejgwwo3vucehpiel.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ftenqejgwwo3vucehpiel.png" alt="Adding GitHub Personal access token on Google Cloud Secret Manager" width="800" height="451"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Post which, you can go back to the setup process and click on the &lt;strong&gt;Secret dropdown&lt;/strong&gt; to select your newly generated &lt;strong&gt;GitHub Token&lt;/strong&gt;. If you can't see it, try clicking &lt;strong&gt;Refresh&lt;/strong&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Setting up the Webhook 🕸️
&lt;/h2&gt;

&lt;p&gt;After setting up your GitHub Command Centre template, you can configure the GitHub Discussions Webhook to listen for any changes in the discussion section of a specific repository.&lt;/p&gt;

&lt;p&gt;To set up the webhook, follow these steps:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Go to the Webhooks section in the top-right menu of your Command Centre template.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fqy4bhpvbiq8ih6c9ai5w.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fqy4bhpvbiq8ih6c9ai5w.png" alt="GitHub Discussions Webhooks Parser on Rowy" width="800" height="418"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;Copy the Endpoint URL provided for the GitHub Discussions Webhook.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Navigate to the repository you want to set up the Command Centre for on GitHub (&lt;a href="https://github.com/"&gt;https://github.com/&lt;/a&gt;).&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Go to the repository settings → Webhooks and click on "Add a Webhook".&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Authenticate if prompted, then add the Endpoint URL to the Payload URL field. Set the content type to &lt;code&gt;application/json&lt;/code&gt;.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fyvcsqlvkl3xniprj4se6.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fyvcsqlvkl3xniprj4se6.png" alt="Setting up the Webhook endpoint on GitHub" width="800" height="489"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Under the "Which events would you like to trigger this Webhook?" section, select "Let me Select Individual Events" and check the Discussions checkbox. This ensures that the webhook listens to changes in the repository's discussion section.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fgmohbynfldksfeutarni.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fgmohbynfldksfeutarni.png" alt="GitHub Discussions - Setting Trigger events" width="800" height="275"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Save the webhook, and now it's ready to use! 🚀&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Managing your Discussions Better 💯
&lt;/h2&gt;

&lt;p&gt;The Command Centre allows you to easily manage your discussions through a well-organized Rowy Table. This provides all the necessary information such as:&lt;/p&gt;

&lt;h3&gt;
  
  
  Status of the Discussion
&lt;/h3&gt;

&lt;p&gt;The Status column records the current state of the discussion, including whether it has been created, pinned, or answered. There are 13 different categories available to describe the status of GitHub Discussions.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fd8hyy07nuwaj3xbf2xbr.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fd8hyy07nuwaj3xbf2xbr.png" alt="Recorded status of incoming GitHub Discussions" width="800" height="725"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Discussion Title and Description
&lt;/h3&gt;

&lt;p&gt;Both the Title and Description fields are formatted in GitHub-Flavored Markdown, displaying the discussion's details in an easily readable format.&lt;/p&gt;

&lt;h3&gt;
  
  
  Category of the Discussion
&lt;/h3&gt;

&lt;p&gt;Currently, GitHub Discussions are divided into six categories: General, Announcements, Polls, Show and Tell, Support/Q&amp;amp;A, and Idea/Feature Requests.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fv5reb56ocm1v2ra0rvzf.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fv5reb56ocm1v2ra0rvzf.png" alt="Recorded Category of incoming GitHub Discussions" width="800" height="457"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  URL of the Discussion
&lt;/h3&gt;

&lt;p&gt;The table includes the URL of each incoming discussion, providing easy access to the discussion.&lt;/p&gt;

&lt;h3&gt;
  
  
  Question Type
&lt;/h3&gt;

&lt;p&gt;The &lt;strong&gt;Question Type&lt;/strong&gt; field is a &lt;strong&gt;Derivative field&lt;/strong&gt; type that utilizes the power of the &lt;strong&gt;GPT-3 API&lt;/strong&gt; to perform &lt;strong&gt;first-level triaging&lt;/strong&gt; of the discussion. The API classifies the discussion into one of three categories: &lt;strong&gt;Technical&lt;/strong&gt;, &lt;strong&gt;Theoretical&lt;/strong&gt;, or &lt;strong&gt;Unsure&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;This categorization helps to quickly identify the type of question and provide appropriate answers, streamlining the process of managing discussions.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fzm85rqxq407of2ehkj4h.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fzm85rqxq407of2ehkj4h.png" alt="Triaged type of question asked in the incoming GitHub Discussions" width="800" height="386"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Updated At Timestamp
&lt;/h3&gt;

&lt;p&gt;The &lt;strong&gt;Updated At&lt;/strong&gt; field is a derived column that stores the updated timestamp, if available. If the value is not available, it stores the created timestamp of the discussion.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;QUICK TIP!&lt;/strong&gt; 💡 By clicking once on the arrow on the column name you can sort the table in descending order by the Updated At field so that the most frequent discussions are more easily accessible by staying on top.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h3&gt;
  
  
  Suggested Answer
&lt;/h3&gt;

&lt;p&gt;The &lt;strong&gt;Suggested Answer&lt;/strong&gt; column is a powerful feature of the GitHub Command Centre, leveraging the capabilities of OpenAI's GPT-3 API to generate potential solutions for the discussion at hand. This is accomplished through a generic prompt given to the Derivative script, which generates markdown answers in the form of a JavaScript function.&lt;/p&gt;

&lt;p&gt;The Suggested Answer field can be highly customized, enabling open-source project maintainers to save time and streamline the process of managing discussions.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fcabdvy2tdyetgbqemw14.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fcabdvy2tdyetgbqemw14.png" alt="AI generated answer of incoming GitHub Discussions" width="800" height="439"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Additionally, the Suggested Answer field can be &lt;strong&gt;highly customized&lt;/strong&gt; to suit your specific needs. For instance, you can &lt;strong&gt;train your model on your product data&lt;/strong&gt; to provide more accurate answers to discussions. This &lt;strong&gt;level of customization&lt;/strong&gt; enhances the Command Centre's utility and makes it an even more powerful tool for managing open-source communities.&lt;/p&gt;

&lt;h3&gt;
  
  
  Sending the Suggested Answer
&lt;/h3&gt;

&lt;p&gt;Finally, the &lt;strong&gt;Send Comment&lt;/strong&gt; toggle, when turned on, sends the Suggested Answer as a comment on the Discussion. This toggle triggers an extension that uses the GitHub Discussions API to send the answer. The beauty of this triggered extension is that it allows you to &lt;strong&gt;modify the Suggested Answer column according to your expertise&lt;/strong&gt;, resulting in a &lt;strong&gt;more accurate&lt;/strong&gt; and personalized response to the discussion.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fgrs4bdbn8z8lyvuzldyl.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fgrs4bdbn8z8lyvuzldyl.png" alt="Sending the AI generated answer as a comment on the discussion" width="800" height="682"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;In conclusion, the GitHub Command Centre is a game-changing solution for open-source projects. Its &lt;strong&gt;innovative features&lt;/strong&gt; and &lt;strong&gt;customizable options&lt;/strong&gt; make it an essential tool for managing discussions and building a thriving community on GitHub.&lt;/p&gt;

&lt;p&gt;By integrating the GPT-3 API and the GitHub Discussions API, the Command Centre can provide suggested answers to discussions and automate repetitive tasks. With its highly customizable features, the Command Centre can be tailored to the needs of each individual project. By using the GitHub Command Centre, project maintainers can save time and effort, and build a &lt;strong&gt;more engaged and productive community&lt;/strong&gt; around their projects. 🚀&lt;/p&gt;

&lt;p&gt;If you enjoyed our content, please give us a &lt;a href="https://twitter.com/rowyio"&gt;follow on Twitter&lt;/a&gt; or &lt;a href="https://rowy.io/discord"&gt;join our Discord&lt;/a&gt; in case of any questions. We look forward to hearing from you! 💜&lt;/p&gt;

</description>
      <category>lowcode</category>
      <category>opensource</category>
      <category>github</category>
      <category>chatgpt</category>
    </item>
  </channel>
</rss>
