what i do for my generated geonodes with random colors, is i store named attributes with the geometry, and pull that info in the shader tab. could even generate multiple rands, if say, i want to also have each have different roughness/metallicy/etc.
a simpler example:
you can see i’m storing a random value on each point, which then gets populated among the instance generated on that point (that parts automatic). and at the end, i output that attribute, where in the N panel, it’s renamed to Rnd. then:
i pull that into the shader to set the hue. of course, it can be made far more complex than this, so you could store a value that determines the twist factor, if that’s controlled by your shader instead of geometry, etc etc