<?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: Memo Chou</title>
    <description>The latest articles on DEV Community by Memo Chou (@memochou1993).</description>
    <link>https://dev.to/memochou1993</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%2F980102%2Fa9b365f5-4212-4f4b-8f55-c3f01c8e9730.jpeg</url>
      <title>DEV Community: Memo Chou</title>
      <link>https://dev.to/memochou1993</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/memochou1993"/>
    <language>en</language>
    <item>
      <title>Convert JSON to Markdown in Seconds! 🚀</title>
      <dc:creator>Memo Chou</dc:creator>
      <pubDate>Thu, 20 Feb 2025 18:21:00 +0000</pubDate>
      <link>https://dev.to/memochou1993/convert-json-to-markdown-in-seconds-2i2n</link>
      <guid>https://dev.to/memochou1993/convert-json-to-markdown-in-seconds-2i2n</guid>
      <description>&lt;p&gt;Have you ever needed to quickly transform JSON data into a human-readable format? Whether you're a developer looking for an efficient way to preview API responses or a project manager wanting to present structured data without dealing with raw JSON, &lt;strong&gt;JSON2Markdown Converter&lt;/strong&gt; has got you covered! 🎯&lt;/p&gt;

&lt;h2&gt;
  
  
  What is JSON2Markdown Converter? 📝
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;JSON2Markdown Converter&lt;/strong&gt; is a powerful tool that converts JSON data into Markdown, making it easy to read and render as formatted content. It bridges the gap between raw JSON and well-structured documentation, helping both developers and non-developers interact with data more efficiently.&lt;/p&gt;

&lt;p&gt;🔗 Try it live: &lt;a href="https://memochou1993.github.io/json2markdown-converter/" rel="noopener noreferrer"&gt;JSON2Markdown Converter&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  How It Works ⚙️
&lt;/h2&gt;

&lt;p&gt;This tool utilizes two key packages to perform seamless conversion:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;a href="https://github.com/memochou1993/json2markdown" rel="noopener noreferrer"&gt;json2markdown&lt;/a&gt;: Parses JSON and transforms it into Markdown format.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/memochou1993/markdown2html" rel="noopener noreferrer"&gt;markdown2html&lt;/a&gt;: Converts Markdown into sanitized HTML for safe rendering.&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;
  
  
  Conversion Rules 📌
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;JSON objects&lt;/strong&gt; → Headings &amp;amp; Paragraphs&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;JSON arrays&lt;/strong&gt; → Lists&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;JSON Arrays of objects&lt;/strong&gt; → Tables&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Markdown content&lt;/strong&gt; → Retained&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;HTML content&lt;/strong&gt; → Sanitized in the final stage&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This ensures that your JSON data is not only converted but also structured in a way that makes sense for readers.&lt;/p&gt;

&lt;h2&gt;
  
  
  Real-World Examples 🌍
&lt;/h2&gt;

&lt;h3&gt;
  
  
  JSON Objects
&lt;/h3&gt;

&lt;p&gt;Objects are converted into headings and paragraphs.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"json_object"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"heading_2"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"heading_3"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="nl"&gt;"heading_4"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
          &lt;/span&gt;&lt;span class="nl"&gt;"heading_5"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
            &lt;/span&gt;&lt;span class="nl"&gt;"heading_6"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Hello, World!"&lt;/span&gt;&lt;span class="w"&gt;
          &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Markdown Output:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight markdown"&gt;&lt;code&gt;&lt;span class="gh"&gt;# JSON Object&lt;/span&gt;

&lt;span class="gu"&gt;## Heading 2&lt;/span&gt;

&lt;span class="gu"&gt;### Heading 3&lt;/span&gt;

&lt;span class="gu"&gt;#### Heading 4&lt;/span&gt;

&lt;span class="gu"&gt;##### Heading 5&lt;/span&gt;

&lt;span class="gu"&gt;###### Heading 6&lt;/span&gt;

Hello, World!
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  2️⃣ JSON Arrays
&lt;/h3&gt;

&lt;p&gt;Arrays are converted into lists.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="s2"&gt;"🚀 Rocket"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="s2"&gt;"🌕 Moon"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="s2"&gt;"🌍 Earth"&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Markdown Output:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight markdown"&gt;&lt;code&gt;&lt;span class="p"&gt;-&lt;/span&gt; 🚀 Rocket
&lt;span class="p"&gt;-&lt;/span&gt; 🌕 Moon
&lt;span class="p"&gt;-&lt;/span&gt; 🌍 Earth
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  3️⃣ JSON Array of Objects
&lt;/h3&gt;

&lt;p&gt;Arrays of objects are converted into tables.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"symbol"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"🌑"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"phase"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"New Moon"&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"symbol"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"🌕"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"phase"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Full Moon"&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Markdown Output:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight markdown"&gt;&lt;code&gt;| Symbol | Phase |
| --- | --- |
| 🌑 | New Moon |
| 🌕 | Full Moon |
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  4️⃣ Markdown Content
&lt;/h3&gt;

&lt;p&gt;Markdown content is preserved.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"markdown_image"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"![Logo](https://memochou1993.github.io/json2markdown-converter/logo.svg)"&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Markdown Output:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight markdown"&gt;&lt;code&gt;&lt;span class="gh"&gt;# Markdown Image&lt;/span&gt;

&lt;span class="p"&gt;![&lt;/span&gt;&lt;span class="nv"&gt;Logo&lt;/span&gt;&lt;span class="p"&gt;](&lt;/span&gt;&lt;span class="sx"&gt;https://memochou1993.github.io/json2markdown-converter/logo.svg&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  5️⃣ HTML content
&lt;/h3&gt;

&lt;p&gt;HTML content is sanitized in the final stage.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"html_link"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"&amp;lt;a onmouseover=&lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;alert('XSS Attack will be ineffective!')&lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt; target=&lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;_blank&lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt; href=&lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;https://github.com/memochou1993/json2markdown-converter&lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;&amp;gt;Visit GitHub&amp;lt;/a&amp;gt;"&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Markdown Output:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight markdown"&gt;&lt;code&gt;&lt;span class="gh"&gt;# HTML Link&lt;/span&gt;

&lt;span class="nt"&gt;&amp;lt;a&lt;/span&gt; &lt;span class="na"&gt;onmouseover=&lt;/span&gt;&lt;span class="s"&gt;"alert('XSS Attack will be ineffective!')"&lt;/span&gt; &lt;span class="na"&gt;target=&lt;/span&gt;&lt;span class="s"&gt;"_blank"&lt;/span&gt; &lt;span class="na"&gt;href=&lt;/span&gt;&lt;span class="s"&gt;"https://github.com/memochou1993/json2markdown-converter"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;Visit GitHub&lt;span class="nt"&gt;&amp;lt;/a&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;HTML Output:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight html"&gt;&lt;code&gt;&lt;span class="nt"&gt;&amp;lt;h1&amp;gt;&lt;/span&gt;HTML Link&lt;span class="nt"&gt;&amp;lt;/h1&amp;gt;&amp;lt;p&amp;gt;&amp;lt;a&lt;/span&gt; &lt;span class="na"&gt;href=&lt;/span&gt;&lt;span class="s"&gt;"https://github.com/memochou1993/json2markdown-converter"&lt;/span&gt; &lt;span class="na"&gt;target=&lt;/span&gt;&lt;span class="s"&gt;"_blank"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;Visit GitHub&lt;span class="nt"&gt;&amp;lt;/a&amp;gt;&amp;lt;/p&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Why Use JSON2Markdown Converter? 🤔
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;✅ &lt;strong&gt;Quickly Browse Data&lt;/strong&gt; – Instantly convert JSON into a more readable format.&lt;/li&gt;
&lt;li&gt;✅ &lt;strong&gt;User-Friendly&lt;/strong&gt; – Designed for both developers and non-developers.&lt;/li&gt;
&lt;li&gt;✅ &lt;strong&gt;Safe &amp;amp; Secure&lt;/strong&gt; – Sanitized HTML prevents XSS attacks.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Want to Use the Packages? 🛠️
&lt;/h2&gt;

&lt;p&gt;If you prefer to integrate &lt;strong&gt;JSON-to-Markdown&lt;/strong&gt; into your own project, you can install the packages and use them as follows:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;Converter&lt;/span&gt; &lt;span class="k"&gt;as&lt;/span&gt; &lt;span class="nx"&gt;JsonToMarkdownConverter&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;@memochou1993/json2markdown&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;Converter&lt;/span&gt; &lt;span class="k"&gt;as&lt;/span&gt; &lt;span class="nx"&gt;MarkdownToHtmlConverter&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;@memochou1993/markdown2html&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;markdown&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;JsonToMarkdownConverter&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;toMarkdown&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt;
  &lt;span class="na"&gt;status&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;😤&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="p"&gt;});&lt;/span&gt;

&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;html&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;MarkdownToHtmlConverter&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;toHTML&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;markdown&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;html&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="c1"&gt;// Output:&lt;/span&gt;
&lt;span class="c1"&gt;// &amp;lt;h1&amp;gt;status&amp;lt;/h1&amp;gt;&lt;/span&gt;
&lt;span class="c1"&gt;// &amp;lt;p&amp;gt;😤&amp;lt;/p&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;🔗 &lt;strong&gt;Explore more on GitHub:&lt;/strong&gt; &lt;a href="https://github.com/memochou1993/json2markdown-converter" rel="noopener noreferrer"&gt;JSON2Markdown Converter&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Feel free to give &lt;strong&gt;JSON2Markdown Converter&lt;/strong&gt; a try for your JSON-to-Markdown needs! 🎉 You can also use the packages in your own projects to make the process even easier. 😊&lt;/p&gt;

</description>
      <category>json</category>
      <category>markdown</category>
      <category>json2markdown</category>
      <category>converter</category>
    </item>
    <item>
      <title>GPT AI Assistant: Chat with AI using LINE App</title>
      <dc:creator>Memo Chou</dc:creator>
      <pubDate>Sun, 18 Dec 2022 17:15:42 +0000</pubDate>
      <link>https://dev.to/memochou1993/chat-with-ai-using-line-app-6o5</link>
      <guid>https://dev.to/memochou1993/chat-with-ai-using-line-app-6o5</guid>
      <description>&lt;h2&gt;
  
  
  About
&lt;/h2&gt;

&lt;p&gt;GPT AI Assistant is a lightweight and extensible application that is implemented using the OpenAI API and LINE Messaging API.&lt;/p&gt;

&lt;p&gt;Through the installation process, you can start to chat with your own AI assistant using the LINE mobile app.&lt;/p&gt;

&lt;h2&gt;
  
  
  Demo
&lt;/h2&gt;

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

&lt;h2&gt;
  
  
  Repository
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://github.com/memochou1993/gpt-ai-assistant" rel="noopener noreferrer"&gt;https://github.com/memochou1993/gpt-ai-assistant&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Installation
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Log in to the &lt;a href="https://beta.openai.com/" rel="noopener noreferrer"&gt;OpenAI&lt;/a&gt; website.

&lt;ul&gt;
&lt;li&gt;Generate an OpenAI &lt;a href="///demo/openai-api-key.png"&gt;API key&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;Log in to the &lt;a href="https://developers.line.biz/" rel="noopener noreferrer"&gt;LINE&lt;/a&gt; website.

&lt;ul&gt;
&lt;li&gt;Add a provider (e.g. "My Provider").&lt;/li&gt;
&lt;li&gt;Create a channel (e.g. "My AI Assistant") of type Messaging API.&lt;/li&gt;
&lt;li&gt;Click the "Messaging API" tab and generate a &lt;a href="///demo/line-channel-access-token.png"&gt;channel access token&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;Log in to the &lt;a href="https://github.com/" rel="noopener noreferrer"&gt;GitHub&lt;/a&gt; website.

&lt;ul&gt;
&lt;li&gt;Go to the &lt;code&gt;gpt-ai-assistant&lt;/code&gt; project.&lt;/li&gt;
&lt;li&gt;Click the "Star" button to support this project and the developer.&lt;/li&gt;
&lt;li&gt;Click the "Fork" button to copy the source code to your own repository.&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;Log in to the &lt;a href="https://vercel.com/" rel="noopener noreferrer"&gt;Vercel&lt;/a&gt; website.

&lt;ul&gt;
&lt;li&gt;Click the "Create a New Project" button to create a new project.&lt;/li&gt;
&lt;li&gt;Click the "Import" button to import the &lt;code&gt;gpt-ai-assistant&lt;/code&gt; project.&lt;/li&gt;
&lt;li&gt;Click the "Environment Variables" tab and add the following environment variables with their corresponding values:&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;OPENAI_API_KEY&lt;/code&gt; with the OpenAI &lt;a href="///demo/openai-api-key.png"&gt;API key&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;LINE_CHANNEL_ACCESS_TOKEN&lt;/code&gt; with the LINE &lt;a href="///demo/line-channel-access-token.png"&gt;channel access token&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;LINE_CHANNEL_SECRET&lt;/code&gt; with the LINE &lt;a href="///demo/line-channel-secret.png"&gt;channel secret&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;APP_LANG&lt;/code&gt; with &lt;code&gt;en&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Click the "Deploy" button and wait for the deployment to complete.&lt;/li&gt;
&lt;li&gt;Go to the dashboard, copy the application URL, e.g. "&lt;a href="https://gpt-ai-assistant.vercel.app/" rel="noopener noreferrer"&gt;https://gpt-ai-assistant.vercel.app/&lt;/a&gt;".&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;Go back to the &lt;a href="https://developers.line.biz/" rel="noopener noreferrer"&gt;LINE&lt;/a&gt; website.

&lt;ul&gt;
&lt;li&gt;Go to the page of "My AI Assistant", click the "Messaging API" tab, set the "Webhook URL" to application URL with "/webhook" path, e.g. "&lt;a href="https://gpt-ai-assistant.vercel.app/webhook" rel="noopener noreferrer"&gt;https://gpt-ai-assistant.vercel.app/webhook&lt;/a&gt;" and click the "Update" button.&lt;/li&gt;
&lt;li&gt;Click the "Verify" button to verify the webhook call is successful.&lt;/li&gt;
&lt;li&gt;Enable the "Use webhook" feature.&lt;/li&gt;
&lt;li&gt;Disable the "Auto-reply messages" feature.&lt;/li&gt;
&lt;li&gt;Disable the "Greeting messages" feature.&lt;/li&gt;
&lt;li&gt;Scan the QR code using the LINE mobile app to add as a friend.&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;Start chatting with your own AI assistant!&lt;/li&gt;

&lt;/ul&gt;

&lt;h2&gt;
  
  
  Upgrade
&lt;/h2&gt;

&lt;p&gt;On your own &lt;code&gt;gpt-ai-assistant&lt;/code&gt; project page, you can click on the "Sync fork" menu and then click on either the "Update branch" or "Discard commit" button to synchronize the latest code to your repository.&lt;/p&gt;

&lt;p&gt;When the Vercel bot detects a change in the code, it will automatically redeploy.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/demo%2Fgithub-sync-fork.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/demo%2Fgithub-sync-fork.png" width="" height=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Commands
&lt;/h2&gt;

&lt;p&gt;Send commands using the LINE mobile app to perform specific functions.&lt;/p&gt;

&lt;h3&gt;
  
  
  General Commands
&lt;/h3&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Name&lt;/th&gt;
&lt;th&gt;Alias&lt;/th&gt;
&lt;th&gt;Description&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;Talk&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;/talk&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Talk with AI Assistant.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;Draw&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;/draw&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Ask AI Assistant to draw a picture.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;Continue&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;/continue&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Ask AI Assistant to continue the conversation.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;Activate&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;/activate&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Activate auto-reply. The &lt;code&gt;VERCEL_ACCESS_TOKEN&lt;/code&gt; environment variable is required.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;Deactivate&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;/deactivate&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Deactivate auto-reply. The &lt;code&gt;VERCEL_ACCESS_TOKEN&lt;/code&gt; environment variable is required.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h3&gt;
  
  
  System Commands
&lt;/h3&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Name&lt;/th&gt;
&lt;th&gt;Alias&lt;/th&gt;
&lt;th&gt;Description&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;Command&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;/command&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Show the application commands.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;Version&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;/version&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Show the application version.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;Documentation&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;/doc&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Show the documentation.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;Report&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;/report&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Report issues.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;Restart&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;/restart&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Deploy the application. The &lt;code&gt;VERCEL_DEPLOY_HOOK_URL&lt;/code&gt; environment variable is required.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h3&gt;
  
  
  Sum Commands
&lt;/h3&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Name&lt;/th&gt;
&lt;th&gt;Alias&lt;/th&gt;
&lt;th&gt;Description&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;Sum&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;/sum&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Ask AI Assistant to give a "summarize" response&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;Advise&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;/advise&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Ask AI Assistant to give a "advise" response&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;Apologize&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;/apologize&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Ask AI Assistant to give a "apologize" response&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;Blame&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;/blame&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Ask AI Assistant to give a "blame" response&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;Comfort&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;/comfort&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Ask AI Assistant to give a "comfort" response&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;Complain&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;/complain&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Ask AI Assistant to give a "complain" response&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;Laugh&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;/laugh&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Ask AI Assistant to give a "laugh" response&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;Encourage&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;/encourage&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Ask AI Assistant to give a "encourage" response&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h3&gt;
  
  
  Analyze Commands
&lt;/h3&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Name&lt;/th&gt;
&lt;th&gt;Alias&lt;/th&gt;
&lt;th&gt;Description&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;Analyze&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;/analyze&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Ask AI Assistant to analyze&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;Analyze literarily&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;/analyze-literarily&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Ask AI Assistant to analyze literarily&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;Analyze mathematically&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;/analyze-mathematically&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Ask AI Assistant to analyze mathematically&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;Analyze numerologically&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;/analyze-numerologically&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Ask AI Assistant to analyze numerologically&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;Analyze philosophically&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;/analyze-philosophically&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Ask AI Assistant to analyze philosophically&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;Analyze psychologically&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;/analyze-psychologically&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Ask AI Assistant to analyze psychologically&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h3&gt;
  
  
  Translate Commands
&lt;/h3&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Name&lt;/th&gt;
&lt;th&gt;Alias&lt;/th&gt;
&lt;th&gt;Description&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;Translate to English&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;/translate-to-en&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Ask AI Assistant to translate text to English&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;Translate to Japanese&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;/translate-to-ja&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Ask AI Assistant to translate text to Japanese&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h2&gt;
  
  
  Environment Variables
&lt;/h2&gt;

&lt;p&gt;Set environment variables to change program settings.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Name&lt;/th&gt;
&lt;th&gt;Default Value&lt;/th&gt;
&lt;th&gt;Description&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;APP_DEBUG&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;false&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Print prompt to console. The value must be &lt;code&gt;true&lt;/code&gt; of &lt;code&gt;false&lt;/code&gt;.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;APP_WEBHOOK_PATH&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;/webhook&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Custom webhook URL path of application.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;APP_LANG&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;zh&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Application language. The value must be one of &lt;code&gt;zh&lt;/code&gt;, &lt;code&gt;en&lt;/code&gt; or &lt;code&gt;ja&lt;/code&gt;.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;APP_MAX_GROUPS&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;1&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Maximum groups. The &lt;code&gt;VERCEL_ACCESS_TOKEN&lt;/code&gt; environment variable is required.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;APP_MAX_USERS&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;5&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Maximum users. The &lt;code&gt;VERCEL_ACCESS_TOKEN&lt;/code&gt; environment variable is required.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;BOT_NAME&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;AI&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Name of AI Assistant. This is used to call AI Assistant when auto-reply is deactivated.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;VERCEL_PROJECT_NAME&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;gpt-ai-assistant&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Custom Vercel project name. You can use this environment variable when the Vercel project name differs from the GitHub project name.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;VERCEL_ACCESS_TOKEN&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;null&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Vercel &lt;a href="///demo/vercel-access-token.png"&gt;access token&lt;/a&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;VERCEL_DEPLOY_HOOK_URL&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;null&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Vercel &lt;a href="///demo/vercel-deploy-hook-url.png"&gt;deploy hook URL&lt;/a&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;OPENAI_API_KEY&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;null&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;OpenAI &lt;a href="///demo/openai-api-key.png"&gt;API key&lt;/a&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;OPENAI_COMPLETION_MODEL&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;text-davinci-003&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Refer to &lt;a href="https://beta.openai.com/docs/api-reference/completions/create#completions/create-model" rel="noopener noreferrer"&gt;model&lt;/a&gt; parameter for details.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;OPENAI_COMPLETION_TEMPERATURE&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;0.9&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Refer to &lt;a href="https://beta.openai.com/docs/api-reference/completions/create#completions/create-temperature" rel="noopener noreferrer"&gt;temperature&lt;/a&gt; parameter for details.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;OPENAI_COMPLETION_MAX_TOKENS&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;160&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Refer to &lt;a href="https://beta.openai.com/docs/api-reference/completions/create#completions/create-max_tokens" rel="noopener noreferrer"&gt;max_tokens&lt;/a&gt; parameter for details.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;OPENAI_COMPLETION_FREQUENCY_PENALTY&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;0&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Refer to &lt;a href="https://beta.openai.com/docs/api-reference/completions/create#completions/create-frequency_penalty" rel="noopener noreferrer"&gt;frequency_penalty&lt;/a&gt; parameter for details.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;OPENAI_COMPLETION_PRESENCE_PENALTY&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;0.6&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Refer to &lt;a href="https://beta.openai.com/docs/api-reference/completions/create#completions/create-presence_penalty" rel="noopener noreferrer"&gt;presence_penalty&lt;/a&gt; parameter for details.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;OPENAI_IMAGE_GENERATION_SIZE&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;256x256&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Refer to &lt;a href="https://beta.openai.com/docs/api-reference/images/create#images/create-size" rel="noopener noreferrer"&gt;size&lt;/a&gt; parameter for details.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;LINE_CHANNEL_ACCESS_TOKEN&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;null&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;LINE &lt;a href="///demo/line-channel-access-token.png"&gt;channel access token&lt;/a&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;LINE_CHANNEL_SECRET&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;null&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;LINE &lt;a href="///demo/line-channel-secret.png"&gt;channel secret&lt;/a&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Click the "Redeploy" button to redeploy if there are any changes.&lt;/p&gt;

&lt;h2&gt;
  
  
  Debug
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;Check if the environment variables of the project are filled out correctly in the Vercel.&lt;/li&gt;
&lt;li&gt;Click the "Redeploy" button to redeploy if there are any changes.&lt;/li&gt;
&lt;li&gt;If there is still a problem, please go to &lt;a href="https://github.com/memochou1993/gpt-ai-assistant/issues" rel="noopener noreferrer"&gt;Issues&lt;/a&gt; page, describe your problem and attach a screenshot.&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Related Projects
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://github.com/memochou1993/line-bot-node" rel="noopener noreferrer"&gt;line-bot-node&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/memochou1993/openai-cli-node" rel="noopener noreferrer"&gt;openai-cli-node&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>emptystring</category>
    </item>
    <item>
      <title>Nyan Profile: A simple and extensible scaffold for building personal profile website.</title>
      <dc:creator>Memo Chou</dc:creator>
      <pubDate>Sun, 27 Nov 2022 14:10:52 +0000</pubDate>
      <link>https://dev.to/memochou1993/nyan-profile-a-simple-and-extensible-scaffold-for-building-personal-profile-website-4ci</link>
      <guid>https://dev.to/memochou1993/nyan-profile-a-simple-and-extensible-scaffold-for-building-personal-profile-website-4ci</guid>
      <description>&lt;h2&gt;
  
  
  Nyan Profile
&lt;/h2&gt;

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

&lt;h3&gt;
  
  
  About
&lt;/h3&gt;

&lt;p&gt;Nyan Profile is a simple and extensible scaffold for building personal profile website.&lt;/p&gt;

&lt;h3&gt;
  
  
  Demo
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://memochou1993.github.io/nyan-profile/" rel="noopener noreferrer"&gt;https://memochou1993.github.io/nyan-profile/&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Repository
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://github.com/memochou1993/nyan-profile" rel="noopener noreferrer"&gt;https://github.com/memochou1993/nyan-profile&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Features
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Static Generation with Next.js&lt;/li&gt;
&lt;li&gt;Styling with Tailwind CSS&lt;/li&gt;
&lt;li&gt;Configurable Components

&lt;ul&gt;
&lt;li&gt;Profile&lt;/li&gt;
&lt;li&gt;Header&lt;/li&gt;
&lt;li&gt;Theme Switch&lt;/li&gt;
&lt;li&gt;Sidebar&lt;/li&gt;
&lt;li&gt;Footer&lt;/li&gt;
&lt;li&gt;About&lt;/li&gt;
&lt;li&gt;Google Fonts&lt;/li&gt;
&lt;li&gt;Google Analytics&lt;/li&gt;
&lt;li&gt;Project List&lt;/li&gt;
&lt;li&gt;Article List&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;Deploying to GitHub Pages with GitHub Actions&lt;/li&gt;

&lt;/ul&gt;

&lt;h3&gt;
  
  
  Getting Started
&lt;/h3&gt;

&lt;h4&gt;
  
  
  Automatic Setup
&lt;/h4&gt;

&lt;p&gt;Create a new project by running the following command.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npm init @memochou1993/nyan-profile my-profile
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Change directory into project.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;cd &lt;/span&gt;my-profile
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Start the development server.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npm run dev
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h4&gt;
  
  
  Manual Setup
&lt;/h4&gt;

&lt;p&gt;Clone the project.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git clone git@github.com:memochou1993/nyan-profile.git
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Change directory into project.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;cd &lt;/span&gt;nyan-profile
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Initialize a new Git repository.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;rm&lt;/span&gt; &lt;span class="nt"&gt;-rf&lt;/span&gt; .git
git init
git add &lt;span class="nb"&gt;.&lt;/span&gt;
git commit &lt;span class="nt"&gt;-m&lt;/span&gt; &lt;span class="s2"&gt;"Initial commit"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Install dependencies.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npm ci
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Start the development server.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npm run dev
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Learn More
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://github.com/memochou1993/nyan-profile#readme" rel="noopener noreferrer"&gt;https://github.com/memochou1993/nyan-profile#readme&lt;/a&gt;&lt;/p&gt;

</description>
      <category>emptystring</category>
    </item>
  </channel>
</rss>
