I find it interesting that you mention automated tests.
Here, when discussing the use of sanity and smoke testing, I’m using the definitions defined in the following blog: http://www.softwaretestingstuff.com/2009/12/difference-between-smoke-sanity-testing.html
Smoke testing covers all areas of the software application without getting too deep. As you say, we decide which features to test. The goal is only to check they are working, not exhaustively test these features.
Sanity testing covers a more targeted area of the software, based on changes that have been made to the software.
With this in mind, smoke testing can be done with manual testing or test automation, however sanity testing would be harder to automate. Also, since sanity testing is more targeted to cover recent changes, these tests are unlikely to be required unless another change is made to the exact same area.
Smoke tests need to be repeatable, but sanity tests do not which means there is unlikely to be much value from test automation.