{"id":328771,"date":"2026-06-19T23:50:47","date_gmt":"2026-06-19T23:50:47","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/engineeredai-relaycard-inline-related-post-cards\/"},"modified":"2026-06-20T00:56:17","modified_gmt":"2026-06-20T00:56:17","slug":"relaycard-in-content-related-cards","status":"publish","type":"plugin","link":"https:\/\/wordpress.org\/plugins\/relaycard-in-content-related-cards\/","author":23519458,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"1.0.2","stable_tag":"1.0.2","tested":"7.0","requires":"6.0","requires_php":"8.0","requires_plugins":null,"header_name":"RelayCard \u2014 Inline Related Post Cards","header_author":"EngineeredAI","header_description":"Inline post cards that read like ads, link like content. Image-dominant related post cards injected automatically into your content \u2014 heading-aware, config-driven, AI hook title generation optional.","assets_banners_color":"131727","last_updated":"2026-06-20 00:56:17","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"https:\/\/engineeredai.net\/relaycard","header_author_uri":"https:\/\/engineeredai.net","rating":0,"author_block_rating":0,"active_installs":0,"downloads":38,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"1.0.2":{"tag":"1.0.2","author":"jarencudilla","date":"2026-06-20 00:56:17"}},"upgrade_notice":{"1.0.0":"<p>Initial release.<\/p>","1.0.1":"<p>Relaycard Stable<\/p>"},"ratings":[],"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3579489,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3579489,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3579489,"resolution":"1544x500","location":"assets","locale":"","width":1544,"height":500},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3579489,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["1.0.2"],"block_files":[],"assets_screenshots":[],"screenshots":{"1":"Split style card \u2014 image left, text right, inside post content","2":"Overlay style card \u2014 full bleed with gradient and title overlay","3":"Cinematic style card \u2014 wide image with centered title","4":"Minimal style card \u2014 no image, accent border, clean text","5":"Story style card \u2014 vertical layout, image top","6":"Admin settings page with live preview panel","7":"Style picker with visual card thumbnails"}},"plugin_section":[],"plugin_tags":[268006,37026,19933,234621,1089],"plugin_category":[],"plugin_contributors":[268007],"plugin_business_model":[],"class_list":["post-328771","plugin","type-plugin","status-publish","hentry","plugin_tags-content-cards","plugin_tags-inline-related-posts","plugin_tags-internal-linking","plugin_tags-post-cards","plugin_tags-related-posts","plugin_contributors-jarencudilla","plugin_committers-jarencudilla"],"banners":{"banner":"https:\/\/ps.w.org\/relaycard-in-content-related-cards\/assets\/banner-772x250.png?rev=3579489","banner_2x":"https:\/\/ps.w.org\/relaycard-in-content-related-cards\/assets\/banner-1544x500.png?rev=3579489","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/relaycard-in-content-related-cards\/assets\/icon-128x128.png?rev=3579489","icon_2x":"https:\/\/ps.w.org\/relaycard-in-content-related-cards\/assets\/icon-256x256.png?rev=3579489","generated":false},"screenshots":[],"raw_content":"<!--section=description-->\n<p><strong>RelayCard<\/strong> automatically injects image-dominant related post cards inside your content \u2014 heading-aware, config-driven, and designed to look like premium editorial ad units.<\/p>\n\n<p>RelayCard places cards <em>inside<\/em> your content at heading boundaries \u2014 after enough context has been built, before the next section begins. Cards only fire when a post has a featured image, keeping quality consistent.<\/p>\n\n<p><strong>Features:<\/strong><\/p>\n\n<ul>\n<li><strong>Image-dominant by design<\/strong> \u2014 the image stops the scroll, the title closes the click<\/li>\n<li><strong>Heading-aware injection<\/strong> \u2014 counts H2\/H3\/H4s and scales card placement automatically. Short posts get 1 card, long posts get 2. Nothing gets forced.<\/li>\n<li><strong>5 card styles<\/strong> \u2014 Split, Overlay, Cinematic, Minimal, Story<\/li>\n<li><strong>3 font categories<\/strong> \u2014 Sans-serif, Monospace, Script<\/li>\n<li><strong>3 image ratio presets<\/strong> \u2014 50\/50, 60\/40, 70\/30<\/li>\n<li><strong>AI hook title generation<\/strong> \u2014 optional BYOK (Gemini, ChatGPT, Claude). Rewrites post titles into punchy hook titles automatically.<\/li>\n<li><strong>Card title custom field<\/strong> \u2014 override the title per post with your own hook<\/li>\n<li><strong>SEO plugin aware<\/strong> \u2014 detects RankMath, Yoast, AIOSEO titles automatically<\/li>\n<li><strong>Live admin preview<\/strong> \u2014 see your card render in real time before saving<\/li>\n<li><strong>Zero setup friction<\/strong> \u2014 CSS auto-enqueues on activation, no shortcodes needed<\/li>\n<li><strong>Featured images required<\/strong> \u2014 cards only fire when a post has a featured image, keeping quality high<\/li>\n<\/ul>\n\n<p><strong>Card Title Priority Stack:<\/strong>\n1. <code>card_title<\/code> custom field (manual override)\n2. SEO plugin title (RankMath \u2192 Yoast \u2192 AIOSEO)\n3. AI generated hook title (optional, BYOK)\n4. Post title (always available fallback)<\/p>\n\n<p><strong>Card Styles:<\/strong>\n* <strong>Split<\/strong> \u2014 image left, text right. Classic editorial card.\n* <strong>Overlay<\/strong> \u2014 full bleed image with gradient overlay and title on top. High visual impact.\n* <strong>Cinematic<\/strong> \u2014 wide image, centered title overlay. Maximum eye candy.\n* <strong>Minimal<\/strong> \u2014 no image, styled text card with accent border. Clean and fast.\n* <strong>Story<\/strong> \u2014 image top, text below. Mobile-first vertical layout.<\/p>\n\n<p><strong>AI Hook Title Generation (optional):<\/strong>\nBring your own API key from any of these providers:\n* Gemini (Google AI Studio \u2014 free tier available)\n* ChatGPT (OpenAI)\n* Claude (Anthropic)<\/p>\n\n<p>No key required. Cards work without AI. AI just makes the titles punchier.<\/p>\n\n<h3>External Services<\/h3>\n\n<p>This plugin optionally connects to third-party AI providers to generate suggested card titles. This feature is only activated when you enter an API key in the plugin settings and manually trigger title generation. No data is sent automatically.<\/p>\n\n<h4>Anthropic (Claude)<\/h4>\n\n<p>Used for AI title generation when an Anthropic API key is provided.\nData sent: post title, post excerpt.\n* Service: https:\/\/www.anthropic.com\n* Terms of Service: https:\/\/www.anthropic.com\/legal\/consumer-terms\n* Privacy Policy: https:\/\/www.anthropic.com\/legal\/privacy<\/p>\n\n<h4>OpenAI (ChatGPT)<\/h4>\n\n<p>Used for AI title generation when an OpenAI API key is provided.\nData sent: post title, post excerpt.\n* Service: https:\/\/openai.com\n* Terms of Service: https:\/\/openai.com\/policies\/terms-of-use\n* Privacy Policy: https:\/\/openai.com\/policies\/privacy-policy<\/p>\n\n<h4>Google Gemini<\/h4>\n\n<p>Used for AI title generation when a Google Gemini API key is provided.\nData sent: post title, post excerpt.\n* Service: https:\/\/ai.google.dev\n* Terms of Service: https:\/\/ai.google.dev\/gemini-api\/terms\n* Privacy Policy: https:\/\/policies.google.com\/privacy<\/p>\n\n<!--section=installation-->\n<ol>\n<li>Upload the <code>relaycard<\/code> folder to <code>\/wp-content\/plugins\/<\/code><\/li>\n<li>Activate the plugin through the Plugins screen in WordPress<\/li>\n<li>Go to <strong>Settings \u2192 RelayCard<\/strong> to configure your card style, colors, and optional AI title generation<\/li>\n<li>Cards will automatically appear in single posts with 4 or more headings and featured images<\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id=\"does%20relaycard%20work%20without%20ai%3F\"><h3>Does RelayCard work without AI?<\/h3><\/dt>\n<dd><p>Yes. AI hook title generation is completely optional. Cards fire on all qualifying posts using the post title (or SEO title if a plugin is detected) as the card title.<\/p><\/dd>\n<dt id=\"what%20counts%20as%20a%20qualifying%20post%3F\"><h3>What counts as a qualifying post?<\/h3><\/dt>\n<dd><p>A post must have at least 4 headings (H2, H3, or H4) and a featured image for cards to fire. Posts with fewer headings or no featured image are skipped.<\/p><\/dd>\n<dt id=\"how%20many%20cards%20appear%20per%20post%3F\"><h3>How many cards appear per post?<\/h3><\/dt>\n<dd><p>Posts with 4-5 headings get 1 card. Posts with 6 or more headings get 2 cards. The plugin scales automatically \u2014 nothing is hardcoded.<\/p><\/dd>\n<dt id=\"where%20exactly%20do%20the%20cards%20inject%3F\"><h3>Where exactly do the cards inject?<\/h3><\/dt>\n<dd><p>Cards inject <em>before<\/em> trigger headings \u2014 not after them. This means the card acts as a visual break between sections, not a disruption right after a heading. Mid-content, between sections, exactly where a reader pauses.<\/p><\/dd>\n<dt id=\"can%20i%20set%20a%20custom%20title%20per%20card%3F\"><h3>Can I set a custom title per card?<\/h3><\/dt>\n<dd><p>Yes. Add a custom field named <code>card_title<\/code> to any post. That value takes priority over everything else including AI generation.<\/p><\/dd>\n<dt id=\"which%20seo%20plugins%20does%20relaycard%20detect%3F\"><h3>Which SEO plugins does RelayCard detect?<\/h3><\/dt>\n<dd><p>RankMath, Yoast SEO, and All in One SEO (AIOSEO) \u2014 checked in that order.<\/p><\/dd>\n<dt id=\"will%20relaycard%20slow%20down%20my%20site%3F\"><h3>Will RelayCard slow down my site?<\/h3><\/dt>\n<dd><p>No. The related posts query uses <code>no_found_rows<\/code> and <code>ignore_sticky_posts<\/code> for performance. CSS is only enqueued on single post pages. AI title generation uses a short 8-second timeout and fails gracefully with no impact on page load.<\/p><\/dd>\n<dt id=\"does%20relaycard%20add%20nofollow%20to%20links%3F\"><h3>Does RelayCard add nofollow to links?<\/h3><\/dt>\n<dd><p>Cards link to your own posts \u2014 these are internal links and do not need nofollow. The attribution link to engineeredai.net is a standard dofollow link.<\/p><\/dd>\n<dt id=\"can%20i%20remove%20the%20attribution%3F\"><h3>Can I remove the attribution?<\/h3><\/dt>\n<dd><p>The attribution (<code>\/\/ built with RelayCard \u2014 engineeredai.net<\/code>) is present on the free version and cannot be removed. It is minimal, monospace, and low-opacity \u2014 most readers won't notice it. A premium version with attribution removal may be available in the future.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>1.0.0<\/h4>\n\n<ul>\n<li>Initial release<\/li>\n<li>5 card styles: Split, Overlay, Cinematic, Minimal, Story<\/li>\n<li>Heading-aware automatic injection (H2\/H3\/H4)<\/li>\n<li>Dynamic card count: 1 card for 4-5 headings, 2 cards for 6+<\/li>\n<li>Card title priority stack: custom field \u2192 SEO plugin \u2192 AI \u2192 post title<\/li>\n<li>AI hook title generation: Gemini, ChatGPT, Claude (BYOK)<\/li>\n<li>3 font categories: Sans-serif, Monospace, Script<\/li>\n<li>3 image ratio presets: 50\/50, 60\/40, 70\/30<\/li>\n<li>Accent color picker<\/li>\n<li>Live admin preview panel<\/li>\n<li>CSS auto-enqueued on single posts only<\/li>\n<li>SEO plugin detection: RankMath, Yoast, AIOSEO<\/li>\n<li>Attribution: \/\/ built with RelayCard \u2014 engineeredai.net<\/li>\n<\/ul>\n\n<h4>1.0.1<\/h4>\n\n<ul>\n<li>Updated enqueue styles<\/li>\n<\/ul>","raw_excerpt":"Inline post cards that read like ads, link like content. Image-dominant related post cards injected automatically into your content.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/328771","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=328771"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/jarencudilla"}],"wp:attachment":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=328771"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=328771"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=328771"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=328771"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=328771"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=328771"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}