How do you guys deal with similar but slightly different API types from multiple services?

If I am writing a web server to deal with say, GitHub, GitLab and Bitbucket repos, there are Go packages that will return custom types representing the platform-specific object. I’m not sure what’s the best approach to turning these 3rd party package objects into one that has some common properties.

So far, I’ve written an interface, clients that conform to each, and these clients essentially are just a thin wrapper that does a for loop to convert the package object into the shared one. While this is fine, it feels tiresome to maintain. Is there a better approach I’ve missed?