API de imágenes para cuentas oficiales de WeChat
Utiliza exclusivamente la interfaz oficial api.weixin.qq.com para crear y verificar borradores de mensajes de imágenes. No inicia navegadores, no invoca interfaces de publicación, envío masivo o eliminación, ni proporciona una alternativa basada en RPA.
Entorno
Requiere Windows y PowerShell 7.2+. El AppSecret se cifra utilizando DPAPI del usuario actual de Windows y se guarda por defecto en $env:CODEX_HOME\secrets; si no se ha establecido CODEX_HOME, se utiliza $env:USERPROFILE\.codex\secrets. Las solicitudes de red se realizan dentro del proceso de PowerShell, sin pasar el token de acceso a comandos externos.
Entrada y validación fuera de línea
Antes de ejecutar, lea completamente references/package-contract.md. El directorio de materiales debe contener image-post.json y entre 1 y 20 imágenes; el campo account debe estar claramente rellenado y el campo de comentarios no debe quedar vacío.
Primero localice el Skill y luego realice la validación fuera de línea:
$codexHome = if ($env:CODEX_HOME) { $env:CODEX_HOME } else { Join-Path $env:USERPROFILE '.codex' }
$skill = Join-Path $codexHome 'skills\wechat-image-api'
& (Join-Path $skill 'scripts\Test-WeChatImagePackage.ps1') -InputFolder 'D:\DirectorioMaterialesImagenes'
Si necesita un ejemplo completo, genere y valide en un directorio nuevo que aún no contenga archivos de ejemplo:
& (Join-Path $skill 'scripts\New-WeChatImagePackageExample.ps1') -OutputFolder 'D:\EjemploImagenes'
Configuración inicial
Los dos Skills de API de WeChat pueden compartir las mismas credenciales DPAPI. Si las credenciales no existen, no permita que el usuario pegue el AppSecret en el chat; ejecute la configuración interactiva local:
& (Join-Path $skill 'scripts\Set-WeChatOfficialAccountCredential.ps1')
& (Join-Path $skill 'scripts\Test-WeChatOfficialAccountApi.ps1')
El segundo comando verifica el AppID, AppSecret, los permisos de borrador y la lista blanca de IP. El campo account del paquete de materiales debe coincidir estrictamente con el nombre de la cuenta oficial guardado durante la configuración.
Si WeChat devuelve 40164 invalid ip, deténgase inmediatamente, informe al usuario de la IP de salida pública que aparece en el error y recuérdele que la agregue en "Configuración y desarrollo → Gestión de interfaces de desarrollo → Lista blanca de IP". Tras la confirmación del usuario, solo reintente la misma API oficial; está prohibido cambiar a navegador, RPA, Perfil de Cookies u otros canales de publicación.
Crear y verificar el borrador
Ejecute solo después de que el usuario solicite explícitamente escribir el borrador:
& (Join-Path $skill 'scripts\Publish-WeChatImageDraft.ps1') -InputFolder 'D:\DirectorioMaterialesImagenes'
El script sube las imágenes una por una a material/add_material, luego utiliza draft/add para crear el borrador de tipo newspic; la primera imagen la utiliza WeChat como portada. Finalmente, lee de vuelta con draft/get y verifica la cuenta, título, contenido, orden de imágenes, configuración de comentarios y media_id.
Idempotencia y límites de excepción
- Cada directorio de materiales utiliza un bloqueo exclusivo; no se permite la ejecución concurrente en el mismo directorio.
- Los puntos de control solo avanzan después de confirmar la recepción de
media_id; cuando ya se ha registrado un ID de borrador, la ejecución repetida solo realiza la lectura de verificación, sin crear de nuevo. - Si la red o el proceso se interrumpe durante la subida de imágenes o la fase de envío de
draft/add, el resultado puede ser indeterminado. Las ejecuciones posteriores deben detenerse y no reintentar automáticamente; primero verifique manualmente la biblioteca de materiales o la bandeja de borradores, luego continúe con un nuevo directorio. - Si la huella del material cambia pero existen puntos de control antiguos, deténgase sin borrar silenciosamente el estado.
- El estado y los comprobantes se reemplazan atómicamente utilizando archivos temporales en el mismo directorio, evitando dejar JSON incompletos.
- Solo cuando
draft/getlea todos los campos correctamente, se informa "Borrador creado y verificado correctamente"; no debe informarse "Publicado". - El comprobante se escribe en
wechat-image-api-receipt.json. Si falla cualquier API oficial, se informa en el lugar; este Skill no tiene alternativa de navegador/RPA.