Very broadly speaking, there are 4 major categories to accelerate workflows:
- Discoverable features. These are the basic functions your app shows to its users either sometimes or at all times inside the UI, with the specific intent of having the user figure out intuitively what these things do. In some sense, this is the completely unautomated stuff.
- Undiscoverable features. To know how to use them you have to look up a tutorial, the manual or some other database where these things are listed out. Shortcuts go into this category; they're a great tool for people who get more proficient, but they're also completely invisible to the beginners.
- Batch processing features. These things take a series of actions and apply them all at once, without any branching. Examples include the actions panel in Photoshop and Macros in Audacity.
- Full-on scripting. This is where we get into branching and loops, into plugins, addons, addins, extensions and helper programs.
As far as UX goes, discoverable features obviously are the most user friendly, but perhaps surprisingly it doesn't just go downhill from there: Creating batch processes is generally awkward and cumbersome, and creating a script is an entirely new world to most people, but using a script or a plugin isn't necessarily hard. In fact, in many cases it feels to the end user like just another feature which can be downloaded and purchased just like the host software itself.
The latter is extremely commonplace once you recognize it as such: There is an entire industry about VST plugins around DAWs, every visual effects software has a plugin which makes an object explode or shatter, office programs have all sorts of integrations with related productivity software, and browsers are often only worth using if they have support to a decent ad-blocking extension.
As the creator of the host app, the existence of these plugins gives your app a huge value boost and can make or break whether your app is relevant in a particular industry - even if the industry in question is so specialized that it wouldn't be worthwhile for you to create the features they need.
With all of this in mind, my general guideline for the above category goes as thus:
- Nail the UX of discoverable features. Make the app welcoming and easy to use to new users.
- Make your app accessible. Often times, accessibility features are very helpful to power users as well.
- Make it easy for people to create powerful plugins for your app so that your users can build niche functionality for their peers.
- Implement batch processing to the degree that is commonly useful. For example, batch-applying effects to a selection may be commonly useful, having the batch process create new selections and reshuffle data may not be - let your users use plugins for that.
NB: Nobody is stopping you to bundle your own plugins with the program and let users opt-in to more advanced UIs and features.