(Blend file below)
Depending on your animation experience, this might appear somewhat daunting at first glance. Not to worry - animation is all about doing one part at a time, then moving onto the next, tweaking here and there so they intermix, etc. etc.

First up - the Kite...

The kite's paper won't need billowing animation unless your cam is going to be up real close, so "Apply" the resultant shape that suits so it ends up as a hard mesh kite with cross-arm. They can be joined as one mesh. (I forgot to do that. It still has the parent)
Next up - the Path -
Shape it so it ducks and weaves a bit in all 3 axis' .

.

Give it an Empty for a follower and relocate if necessary so it follows the trail properly.
Make sure it doesn't rotate (follow the path's curves) unless you prefer that. Untick the constraint's "Follow curve" box.

With a path you can set & keyframe it's "evaluation" slot values at any frame to make the kite speed up, slow down, and even pause and go backwards at any location.
Physically stretching or shrinking the distance between it's segments (control points) is another way to do that.
For this job, it's all about achieving a mix of eratic and smooth movement. The more recent kite-flying experience you can recall, the better. Mine is a little on the fuzzy side.
In the Blend file the path is keyframed to re-scale at certain times but I'm not sure that's necessary.
-=============-
With the Path Follower working properly you can parent the kite (or it's parent) to that and slide it to the follower's location.
When played, the kite should also follow the path without rotating.
From there you can keyframe it (or the parent) to rotate on any axis and as erratically as you'd like.
With everything working as desired, a control and tail string can be added to the kite. In this case I find curves are easy to control and reshape using hooks at their control points. (see String H 1, and the tail hooks - 'Tail hook 2, 3 & end' in the Outliner.
There a are two cams, one near the ground at the control string, set to 'Look at' (Track-to' constraint), the other is fixed and set at a distance.
-=================-
The Blend file is an older version (2.77a) but should convert in the latter versions. Layers become 'Collections' I believe. Layers 1 & 2 are all that's used here.
Some items are unselectable but can be brought back by clicking on their arrows in the Outliner.
To play the animation, press ALT-A(?)

EDIT - 2nd Aug 2022
It appears your animation experience might be limited so I've added a 2nd Blend file, this one with animated paper.
It's 3am here so forgive the rushed way I've done it. It's a primitive but effective way to shape cloth without fuss and bother.
The kite paper is already subdivided and has been given cloth physics again.
An --> INVISIBLE <-- "Cloth Pusher" is keyframed to push it, concave-fashion, out from the frame eratically.
Note the pusher is a 'child' of the kite's parent so it won't be left behind.

The 'Pusher' itself is simply an oval shaped, flattened sphere, (disc) given "Collision" physics with which to push the paper out from the cross-arm in the same shape as the pusher.
(Don't forget to pin the paper's corners)
When viewed from the ground it doesn't make a lot of difference though and adds unnecessary workload to the computer, plus, adds a glitch at the first few frames when the cloth initialises.
You can experiment with other deforming methods, including shapekeys and get rid of that problem, or keyframe the cloth's physics to extreme stiffness at the start and ease them back a few frames further on. I'll leave that to you. Hope this helps to get you the results you're after...
The 2nd (modified) Blend file -

FURTHER EDIT 22nd Aug 2022 -
The Cloth Initialisation Glitch -
Been toying around with that and - To get rid of it, play the animation right through so the cloth Physics cache records it all.
With that done, go into the cloth's Physics cache and set it's start frame to 5. (the glitch is gone by that frame)
Now when it plays and loops back to frame 1 each time, there's no glitch. Frames 1 to 4 are ignored in the cache. You can start the cache at any frame that suits.