The pair hit 102 and 101 respectively, adding to Gary Ballance’s 111 on day one, as the White Rose advanced from 282 for three overnight to reach 520 at tea.
Somerset’s reply started with 31 overs of the day remaining, and they closed on 76 for four.
Yorkshire posted 500 in a Championship innings at Headingley for the first time since 2016, the same season they last had three centurions in an innings - Adam Lyth, Jonny Bairstow and Liam Plunkett against Hampshire.
South African Test spinner Keshav Maharaj also added a more aggressive 72 off 81 balls.
He benefitted from being dropped on eight at deep mid-wicket by George Bartlett off Dom Bess - four for 130 from 42 overs of off-spin against the county he will rejoin on loan later this week for T20.
Maharaj led a partnership of 105 for the eighth wicket with Brook through the afternoon as they advanced the score from 398 for seven.
He slog-swept Bess for six over mid-wicket and allowed Brook to calmly advance at the other end.
Brook, 20-years-old, is playing only his second game back in Yorkshire’s team having been dropped for four games following a poor start to the summer at the top of their order in the Championship.
He indicated to the Yorkshire hierarchy that he preferred to bat in the middle order.
Here, on a good batting pitch, he came in at number six behind nightwatchman Josh Shaw and reached his century off 127 balls with 11 fours shortly before being last man out on the cusp of tea as he holed out to long-off against Tom Abell’s medium pacers.
The day started with Tim Groenewald bowling Shaw off the inside-edge, the first of three morning wickets as Yorkshire reached lunch at 386 for six.
Kohler-Cadmore reached his century off 204 balls with 16 fours and fell two balls later, caught at second slip by Jamie Overton off twin brother Craig.
Jonny Tattersall then also fell caught at second slip, but having gloved a sharply rising delivery from Jack Brooks.
Matthew Fisher was caught at short-leg off Bess shortly after lunch, bringing Brook and Maharaj together for their entertaining 20-over alliance as Yorkshire topped 500.
Maharaj backed up a swashbuckling 85 in the second innings of the defeat against Essex last week before holing out to wide long-on against Bess, who then had Steve Patterson caught behind (506 for nine in the 152nd over).
At that stage, Brook was on 91 with only last man Duanne Olivier for company.
What followed was a near 10-over period of him turning down singles and farming the strike as he edged through the nineties.
Somerset started their reply immediately after tea and were soon under significantly more pressure at 49 for four in the 19th over.
Fisher had Abell caught at third slip by Brook in the fifth before Lyth held on at second to get rid of Azhar Ali eight overs later against Olivier, who also had Bartlett caught at mid-on by Patterson following a miscue.
Sandwiched in between Olivier’s wickets, fellow South African Maharaj struck with only his fourth ball when he had Tom Banton caught behind. All four batsmen had fallen for single-figure scores.
James Hildreth finished the day unbeaten on 36 with Steve Davies on 12.
A delighted Kohler-Cadmore hoped his innings had put the hosts into a winning position.
“I’m delighted to contribute in this game more than I have in recent weeks,” he said. “But the main thing is getting a score for the team, and we’re now in a good position to win the game.
“I didn’t change anything (from earlier in the season), I just stayed out there for longer. All year, I’ve just found ways to get out, but I was watchful, and, thankfully this time, I got through.
“The pitch determined the way I played. They bowled quite nicely at me and I left more balls than normal. We’d have taken that position at the start of the day. If we can get a couple of early wickets and put them under the pump, we can keep driving it.”