Replace stock or missing chat card images with your real job photos
Finds the ChatGPT Ads cards with weak images, shortlists real team and job photos from your Business Profile and WordPress media library, and swaps only the image after your approval.
When to use it
When your ChatGPT Ads cards look generic, have no image or crop badly, and you want real photos of your team and jobs instead.
What you get
A table matching each flagged card to a real photo with a reason, plus image-only update previews you approve before anything changes.
Does it change anything in my account?
Only with your approval. The assistant first shows a preview of every change and waits for your go-ahead.
List every ad in ChatGPT Ads campaign [ChatGPT Ads campaign] with chatgpt_ads_insights (scoped to the campaign, level ad, include_zero true). For each ad, read the creative with chatgpt_ads_details and render it with chatgpt_ads_ad_preview. Flag each card that has no image, a generic stock-style image, or an image that crops badly in the card.
Then collect real photos from two sources: Business Profile location [business location] with gbp_list_photos, and the media library of WordPress site [WordPress site] with wordpress_media. Use file names, alt text, Business Profile categories (TEAM, AT_WORK, EXTERIOR and so on) and dimensions to shortlist photos that show our team, our vehicle, our tools or a finished job. Open a WordPress candidate with media_id to get its real size, and use return_image to look at it when you can. Skip these:
- low-resolution files,
- photos with text overlays,
- collages,
- anything that shows a customer's face or a house number.
If you cannot actually see a photo, do not assume it is clean. Mark it "needs my visual check" in the table, so I can look at it before I approve.
For each flagged card, pick the photo that best fits the service the card promotes. Explain each choice in one line. Show me a table with these columns: card, current image problem, chosen photo (source and URL), size, visual check (done by you / needs my check), and reason.
Convert the chosen photos into public image URLs with upload_image (source_url). Then prepare an update_chatgpt_ads_ad call for each card that changes the image only. Do not touch the title, body or destination. Remind me that a new image starts a new OpenAI review and the ad stops serving until it passes. Show the updates as a preview (confirm=false) and wait for my approval. After the changes are applied, render the cards again and report their review status so I can check them.
Reads every enabled RSA in a campaign, matches each final URL to its WordPress page (Elementor included) and rates whether the page repeats the ad's keyword, offer and CTA. Proposes the smallest fix and applies nothing without approval.
When to use itWhen people click your ads but the WordPress landing page does not repeat what the ad promised, hurting conversions or Quality Score.
Lists disapproved and limited RSAs with Google's policy reason and evidence, rewrites only the assets Google flags, and edits the existing ad after a before and after preview. Flags issues that text changes cannot fix.
When to use itWhen some of your Google Ads are disapproved or running with limited serving and you need to fix the wording that Google flagged.
A list of fatigued Meta ads by frequency, CTR and cost thresholds, with two replacement copy versions for each and a safe in-place swap after approval.
When to use itWhen your Meta ads have been running a long time and results are slipping while frequency climbs.