How to play rotation-only animation with calculated positions?

I have an animation for my character that I created in Blender, and I only created keyframes that stored rotation, but when I play the animation in Unity, it crumples the model up. Unity must be assuming the positions of the bones are all 0,0,0 instead of simply calculating them from the rotations.

How can I fix this?

That’s actually not possible. If your initial bone structure / pose is correct and your animation doesn’t have position keyframes, the local positions won’t change. Have you viewed the animation inside Unity’s animation editor? Are you sure there are no position keyframes? Have you checked the bone positions at runtime? You didn’t provide much information in your question.

It seems you might have done something wrong, either in Blender or in Unity but it’s hard to even analyse your problem with the sparse information given.