Погоди.... Phantom.js это несколько другое....
Если тебе просто выкачать сайт нужно сохранив все пути и зависимые файлы, то юзай wget!
wget -r -k -l 7 -p -E -nc http://site.com/
Где
-r—указывает на то, что нужно рекурсивно переходить по ссылкам на сайте, чтобы скачивать страницы.
-k—используется для того, чтобы wget преобразовал все ссылки в скаченных файлах таким образом, чтобы по ним можно было переходить на локальном компьютере (в автономном режиме).
-p—указывает на то, что нужно загрузить все файлы, которые требуются для отображения страниц (изображения, css и т.д.).
-l—определяет максимальную глубину вложенности страниц, которые wget должен скачать (по умолчанию значение равно 5, в примере мы установили 7). В большинстве случаев сайты имеют страницы с большой степенью вложенности и wget может просто «закопаться», скачивая новые страницы. Чтобы этого не произошло можно использовать параметр -l.
-E—добавлять к загруженным файлам расширение .html.
-nc—при использовании данного параметра существующие файлы не будут перезаписаны. Это удобно, когда нужно продолжить загрузку сайта, прерванную в предыдущий раз.
P.S. ты пишешь что это будет сервис, тогда в принципе ничего сложного написать BASH реализацию скрипта. Однако нужно учитывать все тонкости твоей задачи...