Automatic work session recordings with OBS Studio + TaskWarrior + TimeWarrior + YouTube

June 3, 2020


Hacker News discussion

Not long ago I read a comment on Hacker News about tips to improve one’s performance as a developer; it recommended a system of recording oneself while working and someone suggested uploading the videos to YouTube (as private or unlisted) for future revision and as a backup.

I liked the idea so I wanted to give it a try myself. Of course, like most of the stuff I do, the practicality of it was not as important as the chance to see how I would implement a system to support such workflow.

I landed with something I’m fairly happy with, because most of the process is automated. These are the ingredients:

  • I’m using Taskwarrior to keep track of what I’m doing right now.
  • I also integrate it with Timewarrior which keeps track of how long I take in each task. This also enabled some nice features in my workflow as we will see.
  • OBS Studio which is a multiplatform, customizable screencast recorder.

The workflow

  • I add task to Taskwarrior.
  • When I run task start TASK_ID it will start recording a screencast automatically (no UI is shown other than a discreet systray icon).
    • It will also call a Timewarrior hook to track the time.
  • When I run task stop TASK_ID it will stop the screen cast and stop tracking time.
  • At the end of the day (or the week, or whenever), I run a program that merges all the videos for a particular day and pushes them to YouTube using the name of the most used Taskwarrior tag, and other metadata. This also deletes the originals when the video upload finishes successfully.

Show me the code

I pushed the code I’m using to Github: . Keep in mind it is tailored to my usecase; I don’t expect it to work for anyone without some tweaking).

These are the things I had to do before I could fully automate this:

End result:


Final thoughts

  • Using Timewarrior enables very interesting use cases:
    • I’m using the export feature to get the tags used for each daily session, so I can rank it and have a sensical title for the video.
    • It should be fairly easy to use tags to filter out stuff you might not want to upload, or to push different videos for each tag, etc.
  • I don’t like the idea of pushing this to YouTube, but whatever. The videos are private and I am pretty much using them as a free storage system.
    • I find it funny that all of the videos have Copyright complaints, because I listen to a lot of music while coding.
  • I would use this if I were a freelancer to track my self and share it with my clients.
  • More ideas:
    • Track which applications I used and add it to the video description.
    • Add all the individual sessions to the description with links to their start time.

© 2017 | Powered by Hugo ♥ | Art by Clip Art ETC