Work with your favorite tools integrates effectively with your favorite tools. For example, to automatically create a meeting when you start a recording with AudioHijack, use this script.

// Open Safari with and start a new meeting
function shellArgEscape (arg) { return `'${arg.replace(/'/g, `'\\''`)}'`; }

let cmd = 'open -b '
let url = '';

cmd += shellArgEscape(url) + ' ';
let [status, stdout, stderr] = app.runShellCommand( cmd );

Seamless integration can automatically upload audio to the most recent meeting and start automatically generating insights into your meetings. You can use this code with AudioHijack to upload recordings when your meeting ends.

// Upload a new meeting by running the python script
function runPythonScript() {
  let scriptPath = "/path/to/scripts/";
  let command = app.shellEscapeArgument(scriptPath);

  let [resultCode, stdout, stderr] = app.runShellCommand(command);
  if (resultCode !== 0) {
    console.dialog("Error running the script. Result code: " + resultCode);
    console.dialog("Error message: " + stderr);
  } else {
    console.dialog("Script successfully executed. Output: " + stdout);


Works with Python

This is the script that you can use to upload the latest audio file to the most recent meeting.

#!/usr/bin/env python

import os
import glob
import requests
import click
from typing import Optional

def find_newest_mp3_in_directory(directory: str) -> Optional[str]:
    mp3_files = glob.glob(f"{directory}/*.mp3")
    if not mp3_files:
        return None
    newest_file = max(mp3_files, key=os.path.getctime)
    return newest_file

def upload_newest_mp3(directory: str, url: str, bearer_token: str) -> None:

    newest_mp3_file = find_newest_mp3_in_directory(directory)

    if newest_mp3_file is None:
        print("No MP3 files found in the specified directory.")

    headers = {
        "Authorization": f"Bearer {bearer_token}",

    with open(newest_mp3_file, "rb") as audio_file:
        files = {"file": (newest_mp3_file, audio_file, "audio/mpeg")}
        response =, headers=headers, files=files)


def pretty_print_response(response: requests.Response) -> None:
    except ValueError:
        print(f"Non-JSON response received. Status code: {response.status_code}, content: {response.text}")

    help="The path to the directory containing the MP3 files.",
    help="Your Bearer token for authenticating with the server.",
def main(directory: str, bearer_token: str):
    url = ""

    expanded_directory = os.path.expanduser(directory)  # Expand directory path to handle tilde
    upload_newest_mp3(expanded_directory, url, bearer_token)

if __name__ == "__main__":