GFX Sync: A Python Script to Manage & Sync Type TimelineFX

Hello Logik Forum Friends!

Following the fantastic Logik Live from earlier today (those who attended the June 2026 Toronto User Group got a sneak peek a month early!) I’ve just published GFX Sync to my Github, and I’ll be chatting with @MikeV soon to figure out the process for getting it onto the Logik Portal.

TLDR

  • Generate a Registry of graphics by analyzing all timelines within a specified scope.
  • Adjust the text whenever you need, and Sync those changes to every registered graphic at once without adjusting each segment’s layout.
  • Easily create Segment Connections across multiple Gap Type Timeline FX that share layout (position / scale / format), and then can sync them using Flame’s sync connected segment tools.

Text and layout are managed independently — change one without disturbing the other.

Disclaimer

This is my first python script and I would not consider myself a developer. I was careful when I made it, but I also don’t have a ton of experience with python scripts. I’m also just one person with one workflow, so right now I can’t promise it will work perfectly in every workflow. So if you do try it out for yourself, be careful, check every step of the way, and backup often.

Preface

This tool was geared toward people who type their legal disclaimers inside of Flame using the Type Node introduced in 2026. Ever since upgrading to 2026 I’d started using the Type node instead of Photoshop to type up my legal disclaimers (because it’s probably appropriate for the person making the videos on the Type node to actually use the Type node right?) and regardless of what tool I use, I would often run into scenarios where the 16x9 disclaimer needs to be in a different position than the 9x16 disclaimer. Sometimes the 16x9 disclaimer would work in the 1x1, but sometimes it would need to be a different set of line breaks. You can build this out in Photoshop or Flame, but at the end of the day, once a change comes in, it’s a hassle to update each of the instances of the text in all of its different formats. I wished there was a way to separate the “text” from the “layout”. And that is where GFX Sync was born.

How it Works

Definitely take a look at my Logik Live linked above. I’m hoping the link should jump you to 33:59 but if not, jump there and take a peek at what I did. The Segments tab lists all of the segments with Type TimelineFX within a Scope set in the upper left corner, following the criteria set in the Settings tab for which designates a detected “GFX” segment. You are able to “Register” a singular GFX from the Segments tab, or all GFX if you Group all like-text. From that point on, the GFX Sync GUI will “own” the text part of your Type segments, and modifying them in the Registry tab will allow you to Sync those changes to every registered instance of the text. Finally, the Connections tab is the last piece to the puzzle, creating a simple way to connect multiple Gap Type FX across multiple sequences, making syncing the text that shares an aspect very easy. There are automated ways of doing all of these things, and there are also manual ways of doing these things, which should hopefully fit every workflow.

Advanced Info

The Settings tab gives the user the option to point to a directory to save a “Registry Folder” but by default it’s located in the current project’s setups folder and it’s really just to store a singular .JSON file that holds the actual text that gets synced across the project.

Under the hood, the Connections tab is the one part of all this where things got complicated. For each segment being connected, the tool measures the destination type segment’s position and duration, copies what the user picks or what the tool randomly assigns as a “master” Gap Type TimelineFX to a reel, trims that copy to the destination’s length so it can’t spill past its slot, and overwrites it into place. Not easy!

Next Steps

If you choose to use this on your end, firstly thank you! Please give me feedback on what is working or what is not working. I’m excited to continue to develop this tool. If you want to do it better, the tools are available to everyone in the world of LLMs! I have no ego on needing to own this space, but I, like many others, just sought to solve a problem I was having, and if it helps others in the process, that’s great.

During the show I was asked if I could expand this tool to include more than just graphics, as a way to help manage sources and source segment connections with some more control. For the last several weeks I’ve been working on what I am calling a “Connected Conform Manager” that does exactly that and possibly more: working on ways to visualize segment connections, assist in various connected conform checking processes, and help act as a one stop shop for managing publishing. As I took that experiment further and further, it became clear that THAT tool is quite different from THIS tool, and I wanted to keep them separate. CCM is not yet complete, and unfortunately I have run into one potential Python API show-stopper that I’ve submitted a Flame General Improvement request for, so if you feel like supporting potential future development, go give that a +1!

Otherwise, thanks for reading and hope this helps!

I get a hard crash back to login when I drop it into my python folder.
Rocky 9.5. Flame 2026.2

The Script loaded for me on Mac. I played around a little bit and it looks great.

One question - It seems like the tool can only see one layer in the type effect. Is that correct? I was hoping to have it recognize the ‘date’ layer in my slates for updating but I only see one ‘text’ field in the UI.

And now you are a developer taking feedback!

Bryan! Thanks for trying it out!

Glad to know it works on your Mac-- I’m working with Tim on the side to figure out what the dealio is there but right now we’re thinking it may have been a one-off unrelated incident.

You’re right that I didn’t make it easy to work with multiple layers, mostly because that wasn’t a use-case I had in mind or spent much time focusing on during development. I do have some minimal support for multiple layers in the Text part of the Registry tab; my note says you use a line of — to separate type layers, which allows you to see multiple layers and edit them to change what they say, but the long and short of it is that it definitely would need more testing before I felt confident talking about layers. I can think of a few ways to make some changes & additions to make working with multiple layers more visible, BUT I can think of a handful of reasons why the way this tool is currently built makes it very difficult to manage slates in any meaningful way.

Right now, when two different Type layers have different text contents, they are treated as separate registry entries. If your goal is to update the date on 50 slates, with the way GFX Sync currently works, you will still have to click through all 50 slate registry entries to do so. Granted, it’s nice to have it inside a singular centralized interface and it’s better to click through a handful of lines rather than jumping into & out of a handful of Type nodes across a Desktop.

But this has got me thinking about how I could expand GFX Sync to accommodate slates, because that is clearly one of the more prominent Type node use-cases that comes up. I’ll have to give it a bit of a think to flesh out just how to execute that. I have a few thoughts right out of the gate. We’ll have to find a way to differentiate Type nodes on Slates vs Type nodes on Gaps that my tool is already set up to handle. I think an easy way to do that is that if a Type node is on a segment with the word slate in it, then the tool can flag that GFX as a slate. Then, I can probably put Slate GFX in their own tab, and that tab would work differently from the Registry tab. I still have to figure out just how to work with multiple layers inside a Type node, but here’s to hoping I can get something that might be useful!

No worries Jeff - I use Mike V’s slate maker and it has an update feature. I was just curious on your tool. It already does a great job at what you showed on the Logik Live.

I figured it out. It’s the same issue I often have with fonts. I often get a hidden folder called .DS_store. In linux I can do a ls -a and see it, and get rid of it. On mac it doesn’t reveal itself even if I do a ShiftCommand . When I looked at the folder on a terminal I saw it , got rid of it and now it loads. This thing looks cool.