Voxel engine optimization

Hello everyone,

I’m new to opengl and so to learn it i decided to do a minecraft clone as a first project,
i have something working but now i would like to optimize it.
For the moment i send 6 primitives per face to the vertex shader, is there a way to take advantage of the repetitiveness of the voxels and send only one primitive per face and expand it to 6 in the shader ?
I heard about geometry shaders but i read they are quite slow so is there an other way to do it ?

Thanks !