content: import nbformat
  from nbformat import v4 as nbf
  import ansi2html
  import os
  import argparse
  
  # main code
  parser = argparse.ArgumentParser()
  parser.add_argument("-n", "--notebook", help="Path to the output notebook", default=None, type=str)
  args = parser.parse_args()
  if args.notebook:
      notebook_path = os.path.join(os.getcwd(), args.notebook)
      base, ext = os.path.splitext(notebook_path)
      if ext.lower() != '.ipynb':
          notebook_path += '.ipynb'
      if os.path.exists(notebook_path):
          print(f'File at {notebook_path} already exists. Please choose a different file name.')
          exit()
  
  # Global variable for code cells
  nb = nbf.new_notebook()
  
  
  def ansi_to_html(ansi_text):
      converter = ansi2html.Ansi2HTMLConverter()
      html_text = converter.convert(ansi_text)
      return html_text
  
  
  def write_to_notebook():
      if args.notebook:
          with open(notebook_path, 'w', encoding='utf-8') as f:
              nbformat.write(nb, f)
  
  
  def add_code_cell_to_notebook(code):
      code_cell = nbf.new_code_cell(source=code)
      nb['cells'].append(code_cell)
      write_to_notebook()
  
  
  def add_code_cell_output_to_notebook(output):
      html_content = ansi_to_html(output)
      cell_output = nbf.new_output(output_type='display_data', data={'text/html': html_content})
      nb['cells'][-1]['outputs'].append(cell_output)
      write_to_notebook()
  
  
  def add_code_cell_error_to_notebook(error):
      nbf_error_output = nbf.new_output(
          output_type='error',
          ename='Error',
          evalue='Error message',
          traceback=[error]
      )
      nb['cells'][-1]['outputs'].append(nbf_error_output)
      write_to_notebook()
  
  
  def add_image_to_notebook(image, mime_type):
      image_output = nbf.new_output(output_type='display_data', data={mime_type: image})
      nb['cells'][-1]['outputs'].append(image_output)
      write_to_notebook()
  
  
  def add_markdown_to_notebook(content, title=None):
      if title:
          content = "##### " + title + ":\n" + content
      markdown_cell = nbf.new_markdown_cell(content)
      nb['cells'].append(markdown_cell)
      write_to_notebook()
  