3rd Person Camera - Best way to automatically have it adjust pitch

Use line traces. one ahead of player one behind.
As result you should get 3 points in d3 space: 2 trace hits and one for feet location of player pawn. Get Z values of both trace hits, and player feet location. Calculate both angles: for trace ahead and behind player.

You will have 4 cases:
player goes uphill, player goes downhill - just calculate slope, for eg difference of both hit Z values to where player feet are.
Player is on top of hill - i think default angle.
Player is in hole - pick forward trace Z value to calculate slope, (fake rear with negative Z of forward one).

So when you have those values, do average of forward angle and rear angle. Multiply that by some parameter. An you will have desired rotation of camera.

Now best way to manage camera imo:
add “camera arm” enable some decent angular lag, keep velocity lag low.
Connect camera to that arm.
Remember arm default rotation as some value.
Add your calculated angle (from traces), to camera arm rotation.

And because you enabled lag for camera arm, it should move very smooth.

PS. you can also add a bit of such camera rotation (slightly turn it to sides) for situation when player walks along slope (ie. slope is on left - right direction)