API de brouillon d'articles avec images pour WeChat
Utilise uniquement l'interface officielle api.weixin.qq.com pour créer et vérifier des brouillons d'articles avec images. Ne lance pas de navigateur, n'appelle pas les interfaces de publication, d'envoi groupé ou de suppression, et ne fournit pas de solution de repli par RPA.
Environnement
Nécessite Windows et PowerShell 7.2+. L'AppSecret est chiffré à l'aide du DPAPI de l'utilisateur Windows actuel et enregistré par défaut dans $env:CODEX_HOME\secrets ; si CODEX_HOME n'est pas défini, le chemin utilisé est $env:USERPROFILE\.codex\secrets. Les requêtes réseau sont effectuées dans le processus PowerShell, sans transmettre le token d'accès à des commandes externes.
Entrée et validation hors ligne
Avant l'exécution, lisez intégralement le fichier references/package-contract.md. Le répertoire des ressources doit contenir un fichier image-post.json et 1 à 20 images ; le champ account doit être explicitement renseigné, et le champ des commentaires ne doit pas être omis.
Localisez d'abord la compétence, puis effectuez la validation hors ligne :
$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:\dossier_ressources_images'
Si vous avez besoin d'un exemple complet, générez-le dans un nouveau répertoire ne contenant pas encore de fichier d'exemple, puis validez-le :
& (Join-Path $skill 'scripts\New-WeChatImagePackageExample.ps1') -OutputFolder 'D:\exemple_image'
Configuration initiale
Les deux compétences API WeChat peuvent partager les mêmes identifiants DPAPI. Si les identifiants n'existent pas, ne demandez pas à l'utilisateur de coller l'AppSecret dans la conversation ; exécutez la configuration interactive locale :
& (Join-Path $skill 'scripts\Set-WeChatOfficialAccountCredential.ps1')
& (Join-Path $skill 'scripts\Test-WeChatOfficialAccountApi.ps1')
La deuxième commande vérifie l'AppID, l'AppSecret, les droits de brouillon et la liste blanche IP. Le champ account du dossier de ressources doit correspondre strictement au nom du compte officiel enregistré lors de la configuration.
Si WeChat renvoie 40164 invalid ip, arrêtez immédiatement et communiquez à l'utilisateur l'adresse IP de sortie publique figurant dans l'erreur, en lui rappelant d'ajouter cette IP via la section "Paramètres et développement → Gestion des interfaces de développement → Liste blanche IP". Une fois l'utilisateur confirmé, ne réessayez que la même API officielle ; il est interdit de passer par un navigateur, RPA, profil de cookie ou tout autre canal de publication.
Création et vérification du brouillon
N'exécutez cette étape que si l'utilisateur demande explicitement la création d'un brouillon :
& (Join-Path $skill 'scripts\Publish-WeChatImageDraft.ps1') -InputFolder 'D:\dossier_ressources_images'
Le script télécharge les images une par une vers material/add_material, puis crée un brouillon de type newspic via draft/add ; la première image sert de couverture. Enfin, il relit le brouillon via draft/get et vérifie le compte, le titre, le corps, l'ordre des images, les paramètres de commentaires et le media_id.
Idempotence et limites des exceptions
- Chaque dossier de ressources est verrouillé de manière exclusive ; aucune exécution concurrente n'est autorisée sur le même dossier.
- Les points de contrôle ne sont avancés qu'après réception confirmée du
media_id; si un ID de brouillon a déjà été enregistré, une exécution répétée ne fait que relire et vérifier, sans recréer le brouillon. - Si la réseau ou le processus est interrompu pendant le téléchargement des images ou la soumission via
draft/add, le résultat peut être indéterminé. Toute exécution ultérieure doit être arrêtée ; aucune relance automatique n'est autorisée. L'utilisateur doit d'abord vérifier manuellement la bibliothèque de ressources ou la boîte à brouillons, puis continuer avec un nouveau dossier. - Si les empreintes des ressources changent mais qu'un point de contrôle ancien existe, l'exécution s'arrête sans effacer silencieusement l'état.
- L'état et les accusés de réception sont enregistrés via un remplacement atomique de fichier temporaire dans le même dossier, afin d'éviter de laisser un JSON tronqué.
- Ce n'est qu'après que
draft/geta vérifié tous les champs que le script peut rapporter "Brouillon créé et vérifié avec succès" ; il ne doit jamais rapporter "Publié". - L'accusé de réception est écrit dans
wechat-image-api-receipt.json. En cas d'échec d'une API officielle, le rapport est généré sur place ; cette compétence ne dispose d'aucun repli par navigateur ou RPA.