diff --git a/gateway/scripts/wechat_agent.py b/gateway/scripts/wechat_agent.py
index 5935a36..e56f3b1 100644
--- a/gateway/scripts/wechat_agent.py
+++ b/gateway/scripts/wechat_agent.py
@@ -636,12 +636,16 @@ def process_msg(raw_data):
if not urls:
urls = re.findall(r'(https?://mp\.weixin\.qq\.com[^<]+)', ct)
url = urls[0] if urls else None
+ # Decode HTML entities (& → &) — WeChat XML uses & in URLs
+ if url:
+ import html as _html
+ url = _html.unescape(url)
# Extract title from XML
titles = re.findall(r'
(.*?)', ct)
- title = titles[0] if titles else ""
+ title = _html.unescape(titles[0]) if titles else ""
# Extract description
descs = re.findall(r'(.*?)', ct)
- desc = descs[0] if descs else ""
+ desc = _html.unescape(descs[0]) if descs else ""
if url:
log(f"ARTICLE URL: {url}")