Strike a moving ball first time with accuracy under fatigue, and give sets the striker can attack without breaking stride.
Full goal with a keeper, target striker on the edge of the box with his back to goal, shooters queued at two cones 20-25m out. First shooter passes firmly into the target's feet and sprints; the target sets first time into the shooter's path, alternating sides each rep; the shooter strikes first time. Keeper plays every restart to the next shooter in the queue. Rotate the target every six reps.
In a shooting circuit the set is harder than the shot, and it is the job nobody coaches. A lay-off that is behind the runner, or too firm, or square rather than into his path, ruins the repetition for both players, and the shooter gets the blame for a strike that was never available. Making the set an explicitly coached role changes the quality of the whole exercise.
A good set is one touch, into the path of the arriving player, weighted so he never breaks stride. That last part is the standard worth stating: if the shooter has to shorten his steps or reach, the set was wrong regardless of how neat it looked.
The circuit design carries the rest of the value. Sprinting immediately after passing, rather than jogging to rejoin, means shots are struck with a raised heart rate, which is how they occur in matches and almost never how they are practised. Players who only shoot fresh have a technique that disappears in the seventy-fifth minute.
Volume is what a circuit is for, so it should keep flowing. Two balls in rotation, players moving between roles, and no queue longer than three is roughly the target.
One caution: this is a technique-under-fatigue drill, not a decision-making one. There is no defender and no choice being made, so it should sit alongside opposed finishing rather than replacing it. A striker who is excellent here and has never finished with someone closing has practised only the easy half.
Save it to your private drills, then change the animation, adjust positions, swap equipment, or drop it into a session block. Or start from a blank pitch and build your own.