I know how to start a product with a wide spectrum of languages/frameworks/tools, but I don't excel in any. I can make a good native android app with medium functionality, but I don't master the design and layouts. I can make a minimal Ruby on Rails app, but nothing more. I can make a small game in Unity 3D. I'm learning Elm, JS, and ReactJS, but I can't really build anything with them right now.
I usually learn technologies when I need them.
I'm trying to get hired overseas or work on a remote position, but it seems like a bit hard.
Should I just quit applying and focus on learning a narrow set of skills, or do companies hire learners like me?
Most job descriptions want X years of experience in {language or framework}. Unfortunately, they rarely care how many technologies you know. They're looking for years of experience generally, and experience in their tech stack specifically. I'd recommend picking the tech you feel most comfortable with and building out a couple of bigger projects. Maybe put them on GitHub as part of your portfolio.
To be honest, if I were a hiring manager my concern wouldn't be that you don't know Ruby or Elm well enough to build something valuable; it would be that you haven't been deep enough into any one project to understand the pitfalls and roadblocks associated with an enterprise-level, long-running product. I see programming skills as mostly portable from language to language, but you definitely need some kind of specific experience.
If I were you, my goal would be "Jack of all trades, master of one."