What you're showing looks like it can be accomplished with conventional "skeletal' or "skinned mesh" animation.
To do this, we do not export a completely separate model file for every animation frame, analogous to rendering out individual sprites of a spritesheet animation.
Instead, our outputs are:
the vertex positions/normals/etc & triangle indices for the model in a single pose, often called a "bind pose" or "T-pose."
a hierarchy of bones corresponding to this pose. Each bone has a local position & orientation and a parent, establishing the structure of the moving parts.
skinning weights for each vertex, identifying a set of bones that influence that vertex's position, and how much effect each of those bones should have.
animation data, in the form of position & orientation keyframes for each bone.
When we want to show a particular frame of the animation in-game, we transform the bone hierarchy according to the skeletal animation for that frame, then transform each vertex position/normal according to the skinning weights that link it to those bones. The model is reshaped into a new pose on the fly.
Because we store the animation of just the bones, not every vertex, we get a massive savings in the amount of data that needs to be stored, and we can continue re-using the same triangle mesh for every frame.
We can even re-use this same animation data for other models that use the same bone skeleton but different triangle mesh & skinning data, or to animate swappable equipment & attachments on characters so it follows their movements without each piece needing its own custom animations.
We get further data savings by storing just the keyframes rather than every frame of the sequence. When displaying a frame that lands between two keyframes, their poses can be interpolated at runtime, allowing us to play animations at different speeds, or even blend & layer multiple animations.
These animation sampling and skinning calculations can be performed very efficiently, even offloaded to the GPU, so you can still render a large number of animated models despite more calculations happening at runtime.
I hope this clarifies the high-level strategy. As I'm not an animator or animation programmer myself, I'll have to defer to other answers to provide more specific direction in how to export skeletal animation data from the particular tools you're using, and how to implement sampling, skinning, & rendering the animation in-game.
You should find lots of existing resources to get you started if you search for the terms laid out above. This is probably the most common way to do animations in 3D games, so there are lots of guides.