Markers and named keyframes aren’t interchangeable. KeyframeReached is only good for named keyframes and GetMarkerReachedSignal will only fire off for a reached marker. You will not be able to do this without putting in some hard, manual labour - especially if you have many animations and/or keyframes to be changing.
The obvious way to convert is to import your animations via the Animation Editor one by one and use the editor to add markers to named keyframes.
The second way works best with Moon Animation Suite. If you are familiar with MAS (specifically the old version, I don’t have anything for the new) it will export the animation you have created into a KeyframeSequence that you can break down in the workspace. Through this you’ll be able to find your named keyframes as the immediate children of the exported sequence.
The default name of a keyframe, as far as I know from any animation editor, is simply “Keyframe”. Using the above method, we can then instance a KeyframeMarker which represents a marker, then AddMarker on a named keyframe to put the marker on the keyframe. You can reset the keyframe’s name here if you want to just “keyframe”, but for backwards compatibility reasons, best not to.
for _, keyframe in ipairs(exportedSequenceObject:GetChildren()) do
if not (keyframe.Name == "Keyframe") then
local marker = Instance.new("KeyframeMarker")
marker.Name = keyframe.Name
-- Parenting it straight is fine too, AddMarker is for convenience and
-- being clear in why you're putting a marker in a keyframe.
keyframe:AddMarker(marker)
end
end
The above method still requires you to import all animations, break them down into a format that allows you to see their composition in the DataModel, then export them accordingly. You see, while you can automate a part of this, you still can’t get away without breaking your back to do this.
If you ask me, the second option sounds inviting but is much more arduous than the first. That is, unless you also save copies of the exported sequences, which gets rid of a lot of barriers easily and then makes it much more viable than the first.