code: def generate_blog_post(cursor: evadb.EvaDBCursor):
      """Generates blog post.
  
      Args:
          cursor (EVADBCursor): evadb api cursor.
      """
  
      to_generate = str(
          input(
              "\nWould you like to generate a blog post based on the video?"
              " (yes/no): "
          )
      )
      if to_generate.lower() == "yes" or to_generate.lower() == "y":
          print("⏳ Generating blog post (may take a while)...")
  
          if not os.path.exists(SUMMARY_PATH):
              generate_summary(cursor)
  
          # use llm to generate blog post
          sections = generate_blog_sections(cursor)
  
          title_query = "generate a creative title of a blog post from the transcript"
          generate_title_rel = cursor.query(
              f"SELECT ChatGPT('{title_query}', summary) FROM Summary;"
          )
          blog = "# " + generate_title_rel.df()["chatgpt.response"][
              0
          ].replace('"', "")
  
          i = 1
          for section in sections:
              print(
                  f"--⏳ Generating body ({i}/{len(sections)}) titled"
                  f" {section}..."
              )
              if "introduction" in section.lower():
                  section_query = (
                      f"write a section about {section} from transcript"
                  )
                  section_prompt = (
                      "generate response in markdown format and highlight"
                      " important technical terms with hyperlinks"
                  )
              elif "conclusion" in section.lower():
                  section_query = (
                      "write a creative conclusion from transcript"
                  )
                  section_prompt = (
                      "generate response in markdown format"
                  )
              else:
                  section_query = (
                      "write a single detailed section about"
                      f" {section} from transcript"
                  )
                  section_prompt = (
                      "generate response in markdown format with information"
                      " from the internet"
                  )
  
              generate_section_rel = cursor.query(
                  f"SELECT ChatGPT('{section_query}', summary,"
                  f" '{section_prompt}') FROM Summary;"
              )
  
              generated_section = generate_section_rel.df()[
                  "chatgpt.response"
              ][0]
              print(generated_section)
              blog += "\n" + generated_section + "\n"
              i += 1
  
          source_query = (
              "generate a short list of keywords for the transcript with"
              " hyperlinks"
          )
          source_prompt = "generate response in markdown format"
          print("--⏳ Wrapping up...")
          generate_source_rel = cursor.query(
              f"SELECT ChatGPT('{source_query}', summary,"
              f" '{source_prompt}') FROM Summary;"
          )
          blog += (
              "\n## Sources\n"
              + generate_source_rel.df()["chatgpt.response"][0]
          )
          print(blog)
  
          if os.path.exists(BLOG_PATH):
              os.remove(BLOG_PATH)
  
          with open(BLOG_PATH, "w") as file:
              file.write(blog)
  
          print(
              f"✅ blog post is saved to file {os.path.abspath(BLOG_PATH)}"
          )
  
imports: import os
  import shutil
  from typing import Dict, List
  import pandas
  import evadb
  from pytube import YouTube, extract
  from youtube_transcript_api import YouTubeTranscriptApi
label_desc: Use image node_id 13 for calling a global function with example usage: generate_blog_post(cursor) without return types