This is a nice easy one liner:
convert original.gif -coalesce -repage 300x175+0-25 -layers optimize resized.gif
-coalesce expands the image into a series of frames while -repage will re-compress them into one image again. No need for temp files or cleanup! The 300×175 specifies the new size for the image, while +0-25 specifies where to pull the segment of the canvas from in the old image. My goal here was to extract x 300×175 animated gif from a 400×230 original.
Update: I also needed to pad the image with more pixels to the left & right, so it would have a particular aspect ratio, and fill the added pixels with a specific color. To get the color from the top left pixel from the original image I used this:
convert 'original.gif[0]' -colorspace rgb -crop 1x1+0+0 text:
Then, used this to pad the image I’d resized previously:
convert reiszed.gif -coalesce -repage 0 -colorspace rgb -background "#1541BA" -extent 700x175-200+0 padded.gif
This resulted in a 700×175 animated GIF, which is the correct aspect I was going for. Then this command to resize it to 800×200, which I needed to match the required spec:
convert padded.gif -coalesce -repage 0 -resize 800x200 800x200.gif