Double run-length encoding
Retina, 162 bytes
+{`((\d)\2*(?!\2)(\d)\3*|\d)(?&lt;1&gt;\1)+
&lt;&lt;$1&gt;&lt;$#1&gt;&gt;
&lt;&lt;([^&lt;&gt;]{1,7})&gt;&lt;2&gt;&gt;
$1$1
&lt;&lt;([^&lt;&gt;]{1,3})&gt;&lt;3&gt;&gt;
$1$1$1
&lt;&lt;([^&lt;&gt;]{1,2})&gt;&lt;4&gt;&gt;
$1$1$1$1
}`&lt;&lt;(.)&gt;&lt;(\d+)&gt;&gt;
$1($2)
T`&lt;&gt;`()

Try it online!