Emojicode, 263 bytes
🏁🍇🔤🔤➡️🖍🆕s🔂b📇🆕🔡👂🏼❗️❗️🍇🍪s🔪🔡🔢b❗️➕128 2❗️1 7❗️🍪➡️🖍s🍉🔤?🔤➡️🖍🆕p🔂b s🍇↪️b����p🍇👄🔤0🔤❗️🍉🙅🍇👄🔤1🔤❗️🍉b➡️🖍p🍉🍉
Try it online here.
Ungolfed:
🏁 🍇 💭 Main code block
🔤🔤 ➡️ 🖍 🆕 s 💭 Start with s as the empty string
🔂 b 📇 🆕 🔡 👂🏼 💭 For each byte b in the input ...
❗️ ❗️ 🍇
🍪 s 💭 ... append ...
🔪 🔡 🔢 b ❗️ ➕ 128 💭 ... the b + 128 (this gives the leading zero(s) in case the binary representation of b is a shorter than 7 digits) ...
2 💭 ... in binary ...
❗️
1 7 💭 ... without the leading one ...
❗️
🍪
➡️ 🖍 s 💭 ... to s
🍉
🔤?🔤 ➡️ 🖍 🆕 p 💭 This will be used as the previous character, by assigning it neither 0 nor 1 we assure the first bit output is always a one
🔂 b s 🍇 💭 For each character in s:
↪️ b 🙌 p 🍇 💭 If it is the same as the previous character ...
👄 🔤0🔤 ❗️ 💭 ... output a zero ...
🍉 🙅 🍇 💭 ... else ...
👄 🔤1🔤 ❗️ 💭 ... output a one
🍉
b ➡️ 🖍 p 💭 And the current character becomes the new previous character.
🍉
🍉