from wordpress_xmlrpc import Client, WordPressPost from wordpress_xmlrpc.methods.posts import NewPost from typing import Dict class WordPressHandler: def __init__(self, url: str, username: str, password: str): self.client = Client(url, username, password) def publish_post(self, content: str, metadata: Dict, image_url: str) -> int: post = WordPressPost() post.title = metadata['title'] post.content = f'Cover Image\n{content}' post.slug = metadata['slug'] post.post_status = 'draft' post.terms_names = { 'category': ['Your Category'], 'post_tag': ['Your Tags'] } post.custom_fields = [] post.custom_fields.append({ 'key': '_yoast_wpseo_metadesc', 'value': metadata['meta_description'] }) post_id = self.client.call(NewPost(post)) return post_id