#!/usr/bin/env python3
"""
生成微信公众号可用的 Markdown 文档
从母版草稿提取正文，剥离内部元数据（合规标注、填写状态、Key Takeaways等）
输出干净的发布用 MD 文件
"""
import sys
import re
from pathlib import Path

def extract_wechat_md(input_path: str, output_path: str):
    with open(input_path, 'r', encoding='utf-8') as f:
        content = f.read()

    # 去掉文件头部元数据块（> **填写状态** ... 到 --- 之间的全部内容）
    content = re.sub(
        r'^# 【母版】.*?\n\n>(.*?\n)*?---\n\n',
        '',
        content,
        flags=re.MULTILINE
    )

    # 去掉 ## 基本信息 整节
    content = re.sub(
        r'\n## 基本信息\n\n\|.*?\n',
        '\n',
        content,
        flags=re.DOTALL
    )

    # 去掉 ## 标题候选 整节（保留正文标题）
    content = re.sub(
        r'\n## 标题候选\n\n\*\*A.*?\n\n',
        '\n',
        content,
        flags=re.DOTALL
    )

    # 去掉 ## SEO 关键词 整节
    content = re.sub(
        r'\n## SEO 关键词\n+\n```[\s\S]*?```\n',
        '\n',
        content
    )

    # 去掉 ## 配图需求 整节
    content = re.sub(
        r'\n## 配图需求\n+> \*\*描述\*\*.*?(?=\n## |\n### Key Takeaways|$)',
        '',
        content,
        flags=re.DOTALL
    )

    # 去掉 ## Key Takeaways 整节
    content = re.sub(
        r'\n## Key Takeaways.*?(?=## 合规|$)',
        '',
        content,
        flags=re.DOTALL
    )

    # 去掉 ## 合规自检记录 整节
    content = re.sub(
        r'\n## 合规自检记录\n\n.*',
        '',
        content,
        flags=re.DOTALL
    )

    # 把 H2 标题（###）统一为 ## （公众号风格）
    content = re.sub(r'^### (.+)$', r'## \1', content, flags=re.MULTILINE)

    # 去掉残留的空行（超过2个连续换行的压缩为2个）
    content = re.sub(r'\n{3,}', '\n\n', content)

    # 去掉末尾多余空白
    content = content.rstrip() + '\n'

    with open(output_path, 'w', encoding='utf-8') as f:
        f.write(content)

    print(f"✅ 生成完成：{output_path}")
    return output_path

if __name__ == '__main__':
    if len(sys.argv) < 2:
        # 默认处理今天的母版
        drafts_dir = Path('/home/node/.openclaw/workspace/drafts')
        files = sorted(drafts_dir.glob('*master*_v2.md'))
        if files:
            input_file = str(files[-1])
            output_file = input_file.replace('_v2.md', '_公众号版.md')
        else:
            print("未找到母版文件")
            sys.exit(1)
    else:
        input_file = sys.argv[1]
        output_file = sys.argv[2] if len(sys.argv) > 2 else input_file.replace('.md', '_公众号版.md')

    extract_wechat_md(input_file, output_file)
