All Aboard the ASCII Train
JavaScript (ES6), 149 144 bytes

s=&gt;`    o O Oa   ___  
   o     a  | $&amp; | 
  TS__[O]a  |___| 
 {======|a_|"""""|
./o--000'a"\`-0-0-'`.replace(/a(.*)/g,(_,c)=&gt;s.replace(/./g,c))


I don't think the engine itself can be compressed, but perhaps it's possible.

Test snippet



let f =

s=&gt;`    o O Oa   ___  
   o     a  | $&amp; | 
  TS__[O]a  |___| 
 {======|a_|"""""|
./o--000'a"\`-0-0-'`.replace(/a(.*)/g,(_,c)=&gt;s.replace(/./g,c))

O.innerHTML = f("CODE GOLF")
&lt;input value="CODE GOLF" oninput="O.innerHTML=f(this.value.replace(/\n/g,'&amp;lt;br&amp;gt;'))"&gt;&lt;br&gt;
&lt;pre id=O&gt;&lt;/pre&gt;