If you're prepared to run ffmpeg twice (allowing it to analyze the GIF), the quality will be significantly better: https://cassidy.codes/blog/2017/04/25/ffmpeg-frames-to-gif-o...
Basic syntax is
ffmpeg -i video -filter_complex "[0]split[vid][pal];[pal]palettegen[pal];[vid][pal]paletteuse" out.gif
ffmpeg 4.0 and later will automatically insert fifo buffers for the main video while one copy is analyzed to generate the palette.