I also use the following approach
from livereload import Server, shell
server = Server()
server.watch('content/**/*.scrbl', shell('raco tr build'))
server.serve(root='_build', port=8000)
Code is very simple (because the work of livereload module), we simply watch scribble files in content/ directory, and serve at port 8000.