Use core widgets as shortcodes if that makes any sense, make sure you use the right params for each widgets. This lacks of a good UI, would be probably better with some tinymce button