Automate YouTube Chapter Markers with Notion Timestamp

Save time by automatically logging YouTube chapter markers during your livestream.

The data will be saved into Notion. This tutorial explains how to conform the Notion data into a format that YouTube can read as Chapter Markers.

Once this connection has been established, you can reliably set-and-forget. Companion will always remember the connection during your livestream logging.

This video tutorial demonstrates the process, and there are written steps below.



1. Connect a Notion “Integration” to a “Parent Page”

  1. Create a free account if you don’t already have one (you can sign up with an email address, or your Google or Apple account)
  2. CREATE AN INTEGRATION: Go to Settings & Members > Connections >” Develop or manage integrations”
  3. Create a new integration
  4. Give the integration any name
  5. Copy the secret key & save to enter into Companion later on
  6. CREATE A PARENT PAGE: Click “New Page” and give it any title:
  7. In the three-dot menu at the top right, choose Add Connection, and select the new integration you just made in the previous step (tip: if it’s not there, try refreshing the page)
  8. Confirm permission for Connection to access the Parent Page and all its child pages.
  9. Copy the last string of characters from the URL of the Parent Page (everything after the page name). Save this to enter into Companion in the next step.

2. Connect Companion to Notion

  1. Open Companion > Connections > Add Connection… search for “notion”, then Add “Notion: Timestamp”
    1. Label: name the connection whatever you like
    2. Notion API Key: Paste the Secret Key from the prior step
    3. Parent Page ID: Paste the last string of characters from the Parent Page’s URL from the prior step.
  2. Save the Connection. The status column should turn to a green checkmark if successful.


3. Create Timestamps during your Livestream (or offline record!)

During your livestream, start a Timestamp session, and capture Notion markers using three different methods:

  1. Manually press a button – create a button and add a Notion marker action. Manually press the button to log that moment. You can download my Free ATEM Switcher profile which contains a MARK button to manually timestamp.
  2. Linked to other Companion actions – markers are created in conjunction with an action. For instance, if you have DJF CUE, each time you advance to the next cue, a marker is automatically created
  3. Automatic Triggers – under the Triggers tab, create a condition whereby if a variable is True, then a Marker is created. For instance, the DJF 4.0 Control profile contains a Trigger that creates a marker every time the H2R Graphics chat variable comes on air, thereby logging when viewer comments are displayed in the livestream.


4. Conform Notion data

Once you have completed your livestream or recording session, and the associated Notion capture session, you need to format the data so YouTube can read it.

  1. In Notion, located the session data (it will be a new child page, under the Parent Page created previously)
  2. Right-click the column header “companionTimeDate” to “Sort Ascending”
  3. Drag the “timestampValue” column to be the first column
  4. Find the first and last marker entries you wish to sync with the YouTube timecode. Click and drag a marquee to select the data in both the “timestampValue” and “message” columns.
  5. Copy the data (Command+C)


4. Re-sync markers in Google Sheets

  1. Open the free read-only Google Sheet DJF CUE 4.0 – Notion Timestamp Conform
  2. Go to File > “Make a copy”… to make an editable copy of the spreadsheet
  3. Paste the Notion data from the previous step into the yellow highlighted box
  4. This is the critical part to sync the Notion timecode to how it appears in YouTube: In your completed livestream on YouTube, move your playhead to find the timecode point that you want to sync with the first selected Notion marker. Make a note of that time in YouTube in H:MM:SS format. In the example below, 0:03:35 is the timecode in YouTube that aligns with the “SHOW START” marker in my Notion log.
  5. Enter that first YouTube timecode duration H:MM:SS into the spreadsheet box with blue text. In the above example, the show started on YouTube at 0:03:35, so this number was used in the blue text box in the spreadsheet.
  6. The yellow fields now show the corrected YouTube timecode. Make any edits you wish to the description field.
  7. Copy the yellow fields (Command+C), and Paste into the YouTube Description field.
  8. Make sure the first entry begins at 0:00:00 (this signifies to YouTube to create chapters)


Grouping Multiple Stream Decks

Multiple Stream Deck XL or Emulator Operation

The DJF 4.0 profile supports up to 4x Stream Deck XL’s (or four iPads running the web browser emulators – however, the Stream Decks are recommended as the most responsive and powerful to operate).

You don’t have to have four Stream Decks to make use of this. It will work with one or two, but three is the sweet spot to display each camera’s three pages (HOME, RECALL, ADJUST) at one time.

The profile ships with 4 Emulators grouped in a QUAD by default. To change this to your physical surfaces, first connect your four Stream Deck XL’s via USB to the computer. (A powered USB 3.0 hub is recommended, unless your computer supports full power to four USB ports).

Under the Surfaces tab, label your Stream Deck XL’s 1, 2, 3, 4. It’s also a good idea to label your physical Stream Deck XL surface 1, 2, 3, 4 to know which order they are in.

Then copy the ID of each emulator ID or Stream Deck ID surface. It will look like:

  • emulator:cbpYBxiS-omuxtJSupMaa
  • streamdeck:CL49E2F01228

On Page 99 (MENU) (shown above) of the Companion profile, button (#8) called SURFACE has 4 Steps. These correspond with the Surfaces operating as a SOLO, DUO, TRIO, or QUAD group.

Paste the IDs in a cascading array like this:


  1. Blank
  2. Blank
  3. Blank
  4. Blank


  1. ID1
  2. ID2
  3. Blank
  4. Blank


  1. ID1
  2. ID2
  3. ID3
  4. Blank


  1. ID1
  2. ID2
  3. ID3
  4. ID4

Now you have a button that can toggle between grouping emulators or decks as SOLO, DUO, TRIO, or QUAD operation.

Keeping all fields blank in Tab 1 (SOLO) will ensure all surfaces operate independently.

Note that you can still use a fifth or even more surfaces independently, but that when using a DUO, TRIO, or QUAD grouping, navigating through the additional surfaces will mirror updates in the group array.

For example, if you had grouped four Stream Deck XL’s into a QUAD, and then generated a new Emulator for use on an iPad, as you select cameras 1-6 on the iPad, the QUAD surfaces will mirror the iPad.

Selecting cameras on the QUAD will not mirror changes on the iPad.

VLC Playback Control User Guide

VLC (3.0.18)

Download VLC

Connect your Computer to your ATEM via HDMI

    • **If you have a Macbook, you may need a USB-C-to-HDMI adapter
    • For the ATEM Mini Pro profiles, use inputs HDMI 3 or HDMI 4
      • **If you are also running H2R v1, it is best to run VLC into HDMI 3, and H2R v1 into HDMI 4
    • For the ATEM Mini Extreme profiles, use inputs HDMI 7 or HDMI 8
      • **If you are also running H2R v1, it is best to run VLC into HDMI 7, and H2R v1 into HDMI 8
    • Connect the HDMI cable from your computer to the ATEM input HDMI 4.
    • Under Mac’s System Preferences > Displays > Arrangement… Uncheck “Mirror Displays”.
    • Under VLC > Video > Full Screen Video Device… Select the appropriate display that is feeding into ATEM’s HDMI 4.


Configure VLC to connect to Companion

    • Preferences > Show All > Interface tab > HTTP Web Interface
      • Enable HTTP web interface
        • Set password to “vlcpassword” (this is the password within the DJF Companion Profile VLC module. If you use a different password in VLC, make sure to update the password within the VLC module in Companion).
    • Preferences > Show All > Interface tab > Show All > interface > main interface
      • Select “Web”
      • Select “Telnet”
    • Preferences > Show All > Interface tab > Show All > interface > main interface > macosx
      • Deselect “use the native fullscreen mode”
      • Deselect “Show fullscreen controller”
    • Preferences > Show All > Interface tab > Show All > Playlist
      • Select “Play and Pause”
    • Preferences > Subtitles/OSD tab > Onscreen display
      • Disable “Enable OSD”


DJF Cue User Guide


What is DJF CUE?

DJF Cue is an innovative Run of Show control sequence designed to streamline and enhance the operation of your livestream.

It benefits from Companion’s ability to integrate a wide range of professional equipment to automate various aspects of the livestream, ensuring a smooth and professional broadcast experience.


DJF 4.0 Cue – Automate your Run of Show


Control Surfaces

There are multiple ways to control your DJF CUE:

  • Stream Deck XL – view and execute all 24 cues
  • Computer web browser – operate remotely on your computer
  • Across the network, or internet via VPN – operate remotely via a different computer
  • iPad/ iPhone – operate wirelessly
  • Logitech r500 clicker – wireless bluetooth remote hand control to execute cues and step backwards
  • Stream Deck Pedal – foot control to execute cues and select forwards/backwards

For simple advances, you can use a Stream Deck Pedal, or Logitech r500 Clicker to execute cues in sequence.

To see all 24 cues on one page, use the other surfaces to jump randomly.

Each time you execute a cue, the highlighted cue automatically advances to the next cue, to indicate what will be triggered next.


Example Show

On Page 5 of your DJF 4.0 profile, you will find 24 buttons available for customization. You could use this for something as simple as advancing a Power Point presentation, or as complex as operating cameras, sound, lighting, switching, and whatever other equipment you can control via Companion.

As an example of how you can adapt this to suit your own needs, we will look at a show prototype with seven cues. The video at the top of this page demonstrates how to build out this Run Of Show sequence.

  1. PRE SHOW: a “first look”. When triggered, this cue will get you ready for your livestream, from camera positions, Program inputs, Keys, muting microphone and starting background music, starting a graphics timer. Everything will be set up for a first look, as a default position so that you can go live before the actual show content begins.
  2. SHOW START: this button will trigger the start of the show by opening up the microphone, lowering the music, switching the presenter’s camera angle on, and beginning the camera movement.
  3. PART 1: this is the first topic, which brings on a graphic and changes the camera to a default presenter position. It also stops the background music.
  4. PART 2: the second topic graphic is brought on screen, as well as the presenter camera angle.
  5. PART 3: the third topic graphic and presenter camera angle is brought on screen
  6. GOODBYE: This triggers a 30-second sequence for the presenter to wrap up the show: the camera slowly widens out, the website call to action graphic is displayed on screen, and the background music fades in. When the presenter is ready to say goodbye,
  7. WRAP: this button mutes the presenter microphone, takes the presenter’s camera angle off air, increases the music volume to full, and shows a graphic call to action. The show is now in a holding pattern like the PRE SHOW cue, whereby you can wait for any latency in the livestream program to finish reaching the audience (ie YouTube’s latency can range 1-25-seconds) before finishing the livestream event.


Time Stamping & Logging Cues in Notion

By default, this DJF profile includes a Notion instance. Once you have connected the instance to your Notion account, the DJF Cue will automatically log each time you trigger a cue.

This is particularly useful metadata to help identify chapter markers for YouTube after a livestream, so on-demand viewers can easily jump to relevant content.

To start a Notion session

  • Press and hold the “START” button for 3-seconds (button #6, the left arrow)
  • The END button turn red to indicate it is running
  • The cue will highlight the first cue #1

To stop a Notion session

  • Press and hold the “END” button for 3-seconds (button #7, the right arrow)
  • The END button will no longer be red and return to grey to indicate the Notion session has stopped.
  • The cue will highlight the last cue #24

Install H2R Graphics for DJF Companion Profile

Install H2R Graphics (2.17) for DJF Companion Profile

Download H2R Graphics

In H2R Graphics version 2, install the “DJF 4 H2R.json” project settings

  • Open H2R Graphics V2
  • Under the Settings > Import/Export, select Import
    • Select the H2R Graphics template that came with the DJF Companion Profile (“H2R-Graphics-DJF4.0-XXXXXX.json”)
    • This is essential to install, as the shortcodes included in this H2R .json profile are linked specifically to the Companion buttons
    • After this is installed, you may modify the text fields and theme look

Set the background color to Green


In Companion, update the H2R Graphics module fields

  • Set Target IP to to control the H2R Graphics on your local computer
  • Set Target Port to 4001
  • Set Project ID to ABCD
  • Click “Save”


Connect your Computer’s HDMI output to the ATEM

  • Connect the HDMI cable from your computer to the ATEM input.
    • If you have a Macbook, you may need a USB-C-to-HDMI adapter.
  • By default, VLC is using ATEM’s Input 4
    • If you are also running VLC on Input 4, it is best to change this to a free input
  • Open Output 1 within H2R, and make the green window full screen on that HDMI output source.
  • In your ATEM’s Upstream Key, select the Chroma palette and key out the green image. The green should disappear and you see the clean program image underneath.
    • Put your Upstream Key On Air
    • Save Startup State to recall this setup when you power the ATEM off and on.
  • Now you effectively have an “invisible” layer over your program that is always active, and any time you trigger H2R graphics, they will appear on screen.

Alternative Output via Network Computer or Raspberry Pi 4

  • H2R is network-based. Therefore, if you have another computer running within your local network, you can open a web browser and direct the URL to H2R’s Output. Depending on your router’s address, it will look something like this (bold parts for emphasis):
      • In this example, “107” refers to the computer that is running the H2R application (likely your local machine), and “ABCD” refers to the specific H2R Project that is open.
  • The advantage of this set up is that your computer/laptop that is running and controlling H2R does not need to be connected via an HDMI cable to your switcher. Instead, you could operate graphics over the local WiFi.

Install Native Elgato Software Stream Deck XL Control for Companion

Install native Elgato Stream Deck Software (6.1.0)

**Note: support for native Elgato Stream Deck Software that was packaged in DJF v3 has been depreciated in DJF v4 to increase native Companion real estate and enable a multi-surface Stream Deck XL workflow. Therefore Elgato software profiles are no longer shipped in DJF v4, and it is recommended to run Stream Deck surfaces native to Companion.

Elgato Stream Deck software is available here

Turn On Elgato Plugin within Companion

  • Within Companion, navigate to Settings > Devices and select the checkbox “Use Elgato Plugin for StreamDeck access (Requires Companion restart)”


  • This will enable Companion to operate via the native Elgato application plugin.


Add the Companion Plugin to your native Elgato Stream Deck software

  • Open the Stream Deck Store
  • Search for “Companion”.
  • Install the Companion plugin.


Back up your own Stream Deck Profiles

  • If you are already using Elgato’s Stream Deck software, make sure you back up your work first!
  • Go to the Stream Deck Icon in the top-right menu bar
  • Select “Preferences” (Command + ,), then “Profiles”.
  • To the right of the “+/-” symbols, select the dropdown menu.
  • Go Backup All > Create Backup…
  • Save the file to a safe folder.


Install the bonus Stream Deck Profiles

  • Go to the Stream Deck Icon in the top-right menu bar
  • Select “Preferences” (Command + “,”), then “Profiles”.
  • To the right of the “+/-” symbols, select the dropdown menu.
  • Go Backup All > Restore From Backup…
  • Select the file ending in “.streamDeckProfilesBackup” to restore a full backup
  • Alternatively, if you don’t want to overwrite your existing setup, you can import individual pages.
  • Go to the Stream Deck Icon in the top-right menu bar
  • Select “Preferences” (Command + “,”), then “Profiles”.
  • To the right of the “+/-” symbols, select the dropdown menu.
  • Select “Import…”
  • Find the individual profile ending with “.streamDeckProfile”
    • Note that when importing individual Stream Deck Profiles, the “profile jump” buttons will need to be manually re-linked to the appropriate profile (by contrast, these links will remain intact if “restoring a full backup” instead).


Creating Companion buttons on your Stream Deck Profile

  • You can also build your own Elgato Stream Deck profile pages in conjunction with Companion.
  • From the right sidebar, again Search “Companion”
  • Drag the “Companion button” to each of the Stream Deck’s keys
  • “Dynamic” vs Static pages/buttons:
    • By default, dragging a Companion button on to Stream Deck will create a Dynamic Button.
    • Not modifying the default Dynamic button is recommended, as it will update the function as you navigate through the Companion Profile, however:
  • “Static” buttons:
    • If you want a dedicated Companion button that does not change when the Companion surface does, choose the specific Page and Button number (as found in your Companion software)


Simultaneously running Elgato Stream Deck software and Companion’s server

  • You can now mix native Stream Deck buttons into your Elgato Stream Deck’s Companion profile page
  • Button #9 in the DJF Companion Profile (the 1st button on the 2nd row of every page) has been reserved across all Companion pages. When running Companion solo, this button will jump between profiles within Companion.
  • However, if you are also running native Stream Deck software, Button #9 will now switch between your Stream Deck profiles (yes- all these names get confusing!!). This is to allow you to create a dedicated Stream Deck button to switch to other native Elgato Stream Deck profiles you may have.
    • If using this option, you’ll have to use Button #22 on the Menu page to switch between different Companion Profiles (i.e. to jump between controlling the ATEM Pro vs Extreme).
  • It’s recommended to leave all other buttons on the profile as the default “Dynamic” state, so that Companion will dynamically update them



  • Note that as of Companion version 2.2.0+, you cannot separate multiple Stream Deck Surfaces when using Elgato’s software. This is because it’s now mandatory under Companion > Settings > Devices to select the checkbox “Use Elgato Plugin for StreamDeck access (Requires Companion restart)” to operate Companion via the native Elgato application. Therefore, all Stream Deck hardware (32-button, 15-button, and Mobile App) is routed through the “plugin” surface in Companion, and a change on one surface will sync changes on the other surfaces.
  • In this instance, if you want to use multiple Stream Decks as independent surfaces, it is best to quit Elgato’s native software entirely, and only run the Stream Decks via the Companion software.

Install ATEM Control for Companion

Install Blackmagic Design ATEM Switchers (9.2.2)

Install ATEM Switcher software

  • Download and install the most recent ATEM Switcher software from Blackmagic Design’s Support page.
  • Each “update” is a full program installation, so the most recent version will suffice to bring your software and firmware up to date.


Set a Static IP Address

  • Connect your computer to the ATEM via USB.
  • When connected via USB (as opposed to ethernet), you will be able to change the IP address of the ATEM within the “ATEM Setup” application.
  • Choosing a static IP address appropriate to your router’s range is recommended.
    • Your settings will likely differ, but for example:
      • Router  
      • Computer
      • ATEM   
  • Within Companion, make sure the ATEM Module’s Target IP has been updated with the new IP Address that was set for the ATEM hardware (as previously mentioned in the Companion setup).


Install DJF Macros in ATEM Software Control

  • Open the “ATEM Software Control” application.
  • Go to File > Restore
  • Choose the “ATEM-macros-DJF4.0-XXXXXX.xml” that came with your DJF Companion Profile and restore Macros.
    • Basic requirement is to install the Macros only.
    • Deselect all options, then select “Macros” only
  • Go to File > Save Startup State to commit the macros to the ATEM hardware.
    • Once you’ve “Saved the Startup State”, the macros (and any other settings) will still be present each time you power on the ATEM. The ATEM can now operate without the need for Blackmagic’s ATEM Software Control application.



  • Companion speaks directly to the ATEM via the Ethernet Network and does not require the ATEM Software Control to be running in order to operate.
  • Note that Companion only speaks to the ATEM via Ethernet, not the USB port. While you can install the ATEM Macros via a USB connection, you will need an Ethernet connection to control the ATEM via Companion.