{"id":3156,"date":"2026-09-05T05:58:34","date_gmt":"2026-09-05T05:58:34","guid":{"rendered":"https:\/\/digitalbridgehub.com\/acrossysdigital\/?page_id=3156"},"modified":"2026-09-09T08:16:01","modified_gmt":"2026-09-09T08:16:01","slug":"schema-markup-generator","status":"publish","type":"page","link":"https:\/\/digitalbridgehub.com\/acrossysdigital\/tools\/schema-markup-generator\/","title":{"rendered":"Schema Markup Generator"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-page\" data-elementor-id=\"3156\" class=\"elementor elementor-3156\" data-elementor-post-type=\"page\">\n\t\t\t\t<div class=\"elementor-element elementor-element-04d1995 e-flex e-con-boxed qodef-elementor-content-no e-con e-parent\" data-id=\"04d1995\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-b961758 elementor-widget elementor-widget-shortcode\" data-id=\"b961758\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"shortcode.default\">\n\t\t\t\t\t\t\t<div class=\"elementor-shortcode\">\r\n<div class=\"aitool-wrapper\">\r\n    <div class=\"aitool-header\">\r\n        <h2>Schema Markup Generator<\/h2>\r\n        <p>Generate clean, valid JSON-LD structured data to qualify for Google rich search results<\/p>\r\n    <\/div>\r\n\r\n    <div class=\"aitool-body\">\r\n        <div class=\"aitool-calc-grid\">\r\n            <!-- Left Column: Schema Form -->\r\n            <div class=\"aitool-card\">\r\n                <div class=\"aitool-card-header\">\r\n                    <span class=\"aitool-card-title\">Structured Data Setup<\/span>\r\n                    <span class=\"aitool-card-badge\" id=\"sg-active-type-badge\">Article<\/span>\r\n                <\/div>\r\n                <div class=\"aitool-card-body\">\r\n                    <!-- Schema Type Grid -->\r\n                    <div class=\"aitool-row\" style=\"margin-bottom: 20px;\">\r\n                        <label>Select Schema Type<\/label>\r\n                        <div class=\"serp-chip-row\" id=\"sg-type-selector\">\r\n                            <button type=\"button\" class=\"aitool-mode-tab active\" data-type=\"article\">Article<\/button>\r\n                            <button type=\"button\" class=\"aitool-mode-tab\" data-type=\"product\">Product<\/button>\r\n                            <button type=\"button\" class=\"aitool-mode-tab\" data-type=\"local-business\">Local Business<\/button>\r\n                            <button type=\"button\" class=\"aitool-mode-tab\" data-type=\"organization\">Organization<\/button>\r\n                            <button type=\"button\" class=\"aitool-mode-tab\" data-type=\"person\">Person<\/button>\r\n                            <button type=\"button\" class=\"aitool-mode-tab\" data-type=\"faq\">FAQ Page<\/button>\r\n                            <button type=\"button\" class=\"aitool-mode-tab\" data-type=\"review\">Review<\/button>\r\n                            <button type=\"button\" class=\"aitool-mode-tab\" data-type=\"event\">Event<\/button>\r\n                            <button type=\"button\" class=\"aitool-mode-tab\" data-type=\"recipe\">Recipe<\/button>\r\n                            <button type=\"button\" class=\"aitool-mode-tab\" data-type=\"course\">Course<\/button>\r\n                            <button type=\"button\" class=\"aitool-mode-tab\" data-type=\"job-posting\">Job Posting<\/button>\r\n                            <button type=\"button\" class=\"aitool-mode-tab\" data-type=\"video\">Video<\/button>\r\n                        <\/div>\r\n                    <\/div>\r\n\r\n                    <!-- 1. ARTICLE -->\r\n                    <div class=\"sg-fields\" id=\"sg-fields-article\">\r\n                        <div class=\"aitool-row\">\r\n                            <label for=\"art-headline\">Headline *<\/label>\r\n                            <input type=\"text\" id=\"art-headline\" placeholder=\"Article title\">\r\n                        <\/div>\r\n                        <div class=\"aitool-row\">\r\n                            <label for=\"art-url\">Article Canonical URL<\/label>\r\n                            <input type=\"url\" id=\"art-url\" placeholder=\"https:\/\/example.com\/article\">\r\n                        <\/div>\r\n                        <div class=\"aitool-row\">\r\n                            <label for=\"art-desc\">Description<\/label>\r\n                            <textarea id=\"art-desc\" rows=\"3\" placeholder=\"Brief summary of the article content\"><\/textarea>\r\n                        <\/div>\r\n                        <div style=\"display: grid; grid-template-columns: 1fr 1fr; gap: 12px;\">\r\n                            <div class=\"aitool-row\">\r\n                                <label for=\"art-pub\">Date Published<\/label>\r\n                                <input type=\"date\" id=\"art-pub\">\r\n                            <\/div>\r\n                            <div class=\"aitool-row\">\r\n                                <label for=\"art-mod\">Date Modified<\/label>\r\n                                <input type=\"date\" id=\"art-mod\">\r\n                            <\/div>\r\n                        <\/div>\r\n                        <div style=\"display: grid; grid-template-columns: 1fr 1fr; gap: 12px;\">\r\n                            <div class=\"aitool-row\">\r\n                                <label for=\"art-author\">Author Name<\/label>\r\n                                <input type=\"text\" id=\"art-author\" placeholder=\"Author name\">\r\n                            <\/div>\r\n                            <div class=\"aitool-row\">\r\n                                <label for=\"art-author-url\">Author Profile URL<\/label>\r\n                                <input type=\"url\" id=\"art-author-url\" placeholder=\"https:\/\/example.com\/author\">\r\n                            <\/div>\r\n                        <\/div>\r\n                        <div class=\"aitool-row\">\r\n                            <label for=\"art-publisher\">Publisher Organization Name<\/label>\r\n                            <input type=\"text\" id=\"art-publisher\" placeholder=\"Publisher name\">\r\n                        <\/div>\r\n                        <div class=\"aitool-row\">\r\n                            <label for=\"art-image\">Featured Image URL<\/label>\r\n                            <input type=\"url\" id=\"art-image\" placeholder=\"https:\/\/example.com\/image.jpg\">\r\n                        <\/div>\r\n                    <\/div>\r\n\r\n                    <!-- 2. PRODUCT -->\r\n                    <div class=\"sg-fields\" id=\"sg-fields-product\" style=\"display: none;\">\r\n                        <div class=\"aitool-row\">\r\n                            <label for=\"prod-name\">Product Name *<\/label>\r\n                            <input type=\"text\" id=\"prod-name\" placeholder=\"Item name\">\r\n                        <\/div>\r\n                        <div class=\"aitool-row\">\r\n                            <label for=\"prod-url\">Product URL<\/label>\r\n                            <input type=\"url\" id=\"prod-url\" placeholder=\"https:\/\/example.com\/product\">\r\n                        <\/div>\r\n                        <div class=\"aitool-row\">\r\n                            <label for=\"prod-desc\">Description<\/label>\r\n                            <textarea id=\"prod-desc\" rows=\"3\" placeholder=\"Item specifications and features\"><\/textarea>\r\n                        <\/div>\r\n                        <div style=\"display: grid; grid-template-columns: 1fr 1fr; gap: 12px;\">\r\n                            <div class=\"aitool-row\">\r\n                                <label for=\"prod-brand\">Brand<\/label>\r\n                                <input type=\"text\" id=\"prod-brand\" placeholder=\"Brand name\">\r\n                            <\/div>\r\n                            <div class=\"aitool-row\">\r\n                                <label for=\"prod-sku\">SKU<\/label>\r\n                                <input type=\"text\" id=\"prod-sku\" placeholder=\"SKU-001\">\r\n                            <\/div>\r\n                        <\/div>\r\n                        <div style=\"display: grid; grid-template-columns: 1fr 1fr 1fr; gap: 10px;\">\r\n                            <div class=\"aitool-row\">\r\n                                <label for=\"prod-price\">Price *<\/label>\r\n                                <input type=\"text\" id=\"prod-price\" placeholder=\"49.99\">\r\n                            <\/div>\r\n                            <div class=\"aitool-row\">\r\n                                <label for=\"prod-currency\">Currency<\/label>\r\n                                <select id=\"prod-currency\">\r\n                                    <option value=\"USD\">USD<\/option>\r\n                                    <option value=\"EUR\">EUR<\/option>\r\n                                    <option value=\"GBP\">GBP<\/option>\r\n                                    <option value=\"INR\" selected>INR<\/option>\r\n                                    <option value=\"AUD\">AUD<\/option>\r\n                                    <option value=\"CAD\">CAD<\/option>\r\n                                <\/select>\r\n                            <\/div>\r\n                            <div class=\"aitool-row\">\r\n                                <label for=\"prod-avail\">Availability<\/label>\r\n                                <select id=\"prod-avail\">\r\n                                    <option value=\"InStock\" selected>In Stock<\/option>\r\n                                    <option value=\"OutOfStock\">Out of Stock<\/option>\r\n                                    <option value=\"PreOrder\">Pre-order<\/option>\r\n                                    <option value=\"BackOrder\">Backorder<\/option>\r\n                                <\/select>\r\n                            <\/div>\r\n                        <\/div>\r\n                        <div style=\"display: grid; grid-template-columns: 1fr 1fr; gap: 12px;\">\r\n                            <div class=\"aitool-row\">\r\n                                <label for=\"prod-rating\">Rating (1 to 5)<\/label>\r\n                                <input type=\"number\" id=\"prod-rating\" min=\"1\" max=\"5\" step=\"0.1\" value=\"4.8\">\r\n                            <\/div>\r\n                            <div class=\"aitool-row\">\r\n                                <label for=\"prod-review-count\">Review Count<\/label>\r\n                                <input type=\"number\" id=\"prod-review-count\" placeholder=\"128\" value=\"128\">\r\n                            <\/div>\r\n                        <\/div>\r\n                        <div class=\"aitool-row\">\r\n                            <label for=\"prod-image\">Image URL<\/label>\r\n                            <input type=\"url\" id=\"prod-image\" placeholder=\"https:\/\/example.com\/product.jpg\">\r\n                        <\/div>\r\n                    <\/div>\r\n\r\n                    <!-- 3. LOCAL BUSINESS -->\r\n                    <div class=\"sg-fields\" id=\"sg-fields-local-business\" style=\"display: none;\">\r\n                        <div class=\"aitool-row\">\r\n                            <label for=\"biz-name\">Business Name *<\/label>\r\n                            <input type=\"text\" id=\"biz-name\" placeholder=\"Business name\">\r\n                        <\/div>\r\n                        <div style=\"display: grid; grid-template-columns: 1fr 1fr; gap: 12px;\">\r\n                            <div class=\"aitool-row\">\r\n                                <label for=\"biz-url\">Website URL<\/label>\r\n                                <input type=\"url\" id=\"biz-url\" placeholder=\"https:\/\/example.com\">\r\n                            <\/div>\r\n                            <div class=\"aitool-row\">\r\n                                <label for=\"biz-phone\">Telephone<\/label>\r\n                                <input type=\"text\" id=\"biz-phone\" placeholder=\"+1 555 123 4567\">\r\n                            <\/div>\r\n                        <\/div>\r\n                        <div class=\"aitool-row\">\r\n                            <label for=\"biz-street\">Street Address<\/label>\r\n                            <input type=\"text\" id=\"biz-street\" placeholder=\"123 Main Street\">\r\n                        <\/div>\r\n                        <div style=\"display: grid; grid-template-columns: 1fr 1fr; gap: 12px;\">\r\n                            <div class=\"aitool-row\">\r\n                                <label for=\"biz-city\">City<\/label>\r\n                                <input type=\"text\" id=\"biz-city\" placeholder=\"City name\">\r\n                            <\/div>\r\n                            <div class=\"aitool-row\">\r\n                                <label for=\"biz-state\">State \/ Region<\/label>\r\n                                <input type=\"text\" id=\"biz-state\" placeholder=\"State code or name\">\r\n                            <\/div>\r\n                        <\/div>\r\n                        <div style=\"display: grid; grid-template-columns: 1fr 1fr; gap: 12px;\">\r\n                            <div class=\"aitool-row\">\r\n                                <label for=\"biz-zip\">Postal Code<\/label>\r\n                                <input type=\"text\" id=\"biz-zip\" placeholder=\"Postal code\">\r\n                            <\/div>\r\n                            <div class=\"aitool-row\">\r\n                                <label for=\"biz-country\">Country Code<\/label>\r\n                                <input type=\"text\" id=\"biz-country\" placeholder=\"US, IN, UK\">\r\n                            <\/div>\r\n                        <\/div>\r\n                        <div style=\"display: grid; grid-template-columns: 1fr 1fr; gap: 12px;\">\r\n                            <div class=\"aitool-row\">\r\n                                <label for=\"biz-price\">Price Range<\/label>\r\n                                <input type=\"text\" id=\"biz-price\" placeholder=\"$$\">\r\n                            <\/div>\r\n                            <div class=\"aitool-row\">\r\n                                <label for=\"biz-type\">Business Type<\/label>\r\n                                <input type=\"text\" id=\"biz-type\" placeholder=\"Restaurant, Store, ProfessionalService\">\r\n                            <\/div>\r\n                        <\/div>\r\n                        <div class=\"aitool-row\">\r\n                            <label for=\"biz-hours\">Opening Hours (e.g. Mo-Fr 09:00-18:00)<\/label>\r\n                            <input type=\"text\" id=\"biz-hours\" placeholder=\"Mo-Fr 09:00-18:00\">\r\n                        <\/div>\r\n                    <\/div>\r\n\r\n                    <!-- 4. ORGANIZATION -->\r\n                    <div class=\"sg-fields\" id=\"sg-fields-organization\" style=\"display: none;\">\r\n                        <div class=\"aitool-row\">\r\n                            <label for=\"org-name\">Organization Name *<\/label>\r\n                            <input type=\"text\" id=\"org-name\" placeholder=\"Company name\">\r\n                        <\/div>\r\n                        <div style=\"display: grid; grid-template-columns: 1fr 1fr; gap: 12px;\">\r\n                            <div class=\"aitool-row\">\r\n                                <label for=\"org-url\">Website URL<\/label>\r\n                                <input type=\"url\" id=\"org-url\" placeholder=\"https:\/\/example.com\">\r\n                            <\/div>\r\n                            <div class=\"aitool-row\">\r\n                                <label for=\"org-logo\">Logo URL<\/label>\r\n                                <input type=\"url\" id=\"org-logo\" placeholder=\"https:\/\/example.com\/logo.png\">\r\n                            <\/div>\r\n                        <\/div>\r\n                        <div class=\"aitool-row\">\r\n                            <label for=\"org-desc\">Description<\/label>\r\n                            <textarea id=\"org-desc\" rows=\"3\" placeholder=\"Summary of organizational scope and operations\"><\/textarea>\r\n                        <\/div>\r\n                        <div style=\"display: grid; grid-template-columns: 1fr 1fr; gap: 12px;\">\r\n                            <div class=\"aitool-row\">\r\n                                <label for=\"org-email\">Contact Email<\/label>\r\n                                <input type=\"email\" id=\"org-email\" placeholder=\"contact@example.com\">\r\n                            <\/div>\r\n                            <div class=\"aitool-row\">\r\n                                <label for=\"org-phone\">Contact Telephone<\/label>\r\n                                <input type=\"text\" id=\"org-phone\" placeholder=\"+1 555 123 4567\">\r\n                            <\/div>\r\n                        <\/div>\r\n                        <div style=\"display: grid; grid-template-columns: 1fr 1fr; gap: 12px;\">\r\n                            <div class=\"aitool-row\">\r\n                                <label for=\"org-founded\">Founded Year<\/label>\r\n                                <input type=\"text\" id=\"org-founded\" placeholder=\"2018\">\r\n                            <\/div>\r\n                            <div class=\"aitool-row\">\r\n                                <label for=\"org-employees\">Employee Count<\/label>\r\n                                <input type=\"number\" id=\"org-employees\" placeholder=\"50\">\r\n                            <\/div>\r\n                        <\/div>\r\n                        <div class=\"aitool-row\">\r\n                            <label for=\"org-social\">Social Media Profile URLs (Comma-separated)<\/label>\r\n                            <input type=\"text\" id=\"org-social\" placeholder=\"https:\/\/linkedin.com\/company\/example, https:\/\/x.com\/example\">\r\n                        <\/div>\r\n                    <\/div>\r\n\r\n                    <!-- 5. PERSON -->\r\n                    <div class=\"sg-fields\" id=\"sg-fields-person\" style=\"display: none;\">\r\n                        <div style=\"display: grid; grid-template-columns: 1fr 1fr; gap: 12px;\">\r\n                            <div class=\"aitool-row\">\r\n                                <label for=\"per-name\">Full Name *<\/label>\r\n                                <input type=\"text\" id=\"per-name\" placeholder=\"Full name\">\r\n                            <\/div>\r\n                            <div class=\"aitool-row\">\r\n                                <label for=\"per-job\">Job Title<\/label>\r\n                                <input type=\"text\" id=\"per-job\" placeholder=\"Professional title\">\r\n                            <\/div>\r\n                        <\/div>\r\n                        <div class=\"aitool-row\">\r\n                            <label for=\"per-url\">Profile \/ Website URL<\/label>\r\n                            <input type=\"url\" id=\"per-url\" placeholder=\"https:\/\/example.com\/profile\">\r\n                        <\/div>\r\n                        <div class=\"aitool-row\">\r\n                            <label for=\"per-desc\">Biography<\/label>\r\n                            <textarea id=\"per-desc\" rows=\"3\" placeholder=\"Professional overview\"><\/textarea>\r\n                        <\/div>\r\n                        <div style=\"display: grid; grid-template-columns: 1fr 1fr; gap: 12px;\">\r\n                            <div class=\"aitool-row\">\r\n                                <label for=\"per-email\">Email Address<\/label>\r\n                                <input type=\"email\" id=\"per-email\" placeholder=\"name@example.com\">\r\n                            <\/div>\r\n                            <div class=\"aitool-row\">\r\n                                <label for=\"per-image\">Image URL<\/label>\r\n                                <input type=\"url\" id=\"per-image\" placeholder=\"https:\/\/example.com\/photo.jpg\">\r\n                            <\/div>\r\n                        <\/div>\r\n                        <div class=\"aitool-row\">\r\n                            <label for=\"per-org\">Affiliated Organization<\/label>\r\n                            <input type=\"text\" id=\"per-org\" placeholder=\"Employer or company name\">\r\n                        <\/div>\r\n                        <div class=\"aitool-row\">\r\n                            <label for=\"per-social\">Social Profiles (Comma-separated URLs)<\/label>\r\n                            <input type=\"text\" id=\"per-social\" placeholder=\"https:\/\/linkedin.com\/in\/name, https:\/\/x.com\/name\">\r\n                        <\/div>\r\n                    <\/div>\r\n\r\n                    <!-- 6. FAQ -->\r\n                    <div class=\"sg-fields\" id=\"sg-fields-faq\" style=\"display: none;\">\r\n                        <div class=\"aitool-row\">\r\n                            <label for=\"faq-url\">Page URL<\/label>\r\n                            <input type=\"url\" id=\"faq-url\" placeholder=\"https:\/\/example.com\/faq\">\r\n                        <\/div>\r\n                        <div id=\"sg-faq-container\" style=\"display: flex; flex-direction: column; gap: 12px; margin-bottom: 14px;\"><\/div>\r\n                        <button type=\"button\" id=\"sg-faq-add-btn\" class=\"aitool-action-btn\" style=\"width: 100%; text-align: center; justify-content: center; padding: 10px;\">Add Question<\/button>\r\n                    <\/div>\r\n\r\n                    <!-- 7. REVIEW -->\r\n                    <div class=\"sg-fields\" id=\"sg-fields-review\" style=\"display: none;\">\r\n                        <div class=\"aitool-row\">\r\n                            <label for=\"rev-item\">Reviewed Item Name *<\/label>\r\n                            <input type=\"text\" id=\"rev-item\" placeholder=\"Product or service name\">\r\n                        <\/div>\r\n                        <div class=\"aitool-row\">\r\n                            <label for=\"rev-body\">Review Content *<\/label>\r\n                            <textarea id=\"rev-body\" rows=\"3\" placeholder=\"Full review assessment text\"><\/textarea>\r\n                        <\/div>\r\n                        <div style=\"display: grid; grid-template-columns: 1fr 1fr; gap: 12px;\">\r\n                            <div class=\"aitool-row\">\r\n                                <label for=\"rev-author\">Reviewer Name<\/label>\r\n                                <input type=\"text\" id=\"rev-author\" placeholder=\"Reviewer name\">\r\n                            <\/div>\r\n                            <div class=\"aitool-row\">\r\n                                <label for=\"rev-date\">Review Date<\/label>\r\n                                <input type=\"date\" id=\"rev-date\">\r\n                            <\/div>\r\n                        <\/div>\r\n                        <div style=\"display: grid; grid-template-columns: 1fr 1fr; gap: 12px;\">\r\n                            <div class=\"aitool-row\">\r\n                                <label for=\"rev-rating\">Assigned Rating (1 to 5)<\/label>\r\n                                <input type=\"number\" id=\"rev-rating\" min=\"1\" max=\"5\" step=\"0.1\" value=\"5\">\r\n                            <\/div>\r\n                            <div class=\"aitool-row\">\r\n                                <label for=\"rev-url\">Item URL<\/label>\r\n                                <input type=\"url\" id=\"rev-url\" placeholder=\"https:\/\/example.com\/item\">\r\n                            <\/div>\r\n                        <\/div>\r\n                    <\/div>\r\n\r\n                    <!-- 8. EVENT -->\r\n                    <div class=\"sg-fields\" id=\"sg-fields-event\" style=\"display: none;\">\r\n                        <div class=\"aitool-row\">\r\n                            <label for=\"evt-name\">Event Name *<\/label>\r\n                            <input type=\"text\" id=\"evt-name\" placeholder=\"Event title\">\r\n                        <\/div>\r\n                        <div class=\"aitool-row\">\r\n                            <label for=\"evt-url\">Event Page URL<\/label>\r\n                            <input type=\"url\" id=\"evt-url\" placeholder=\"https:\/\/example.com\/event\">\r\n                        <\/div>\r\n                        <div class=\"aitool-row\">\r\n                            <label for=\"evt-desc\">Event Summary<\/label>\r\n                            <textarea id=\"evt-desc\" rows=\"3\" placeholder=\"Agenda and attendance details\"><\/textarea>\r\n                        <\/div>\r\n                        <div style=\"display: grid; grid-template-columns: 1fr 1fr; gap: 12px;\">\r\n                            <div class=\"aitool-row\">\r\n                                <label for=\"evt-start\">Start Date &amp; Time<\/label>\r\n                                <input type=\"datetime-local\" id=\"evt-start\">\r\n                            <\/div>\r\n                            <div class=\"aitool-row\">\r\n                                <label for=\"evt-end\">End Date &amp; Time<\/label>\r\n                                <input type=\"datetime-local\" id=\"evt-end\">\r\n                            <\/div>\r\n                        <\/div>\r\n                        <div class=\"aitool-row\">\r\n                            <label for=\"evt-venue\">Venue Name<\/label>\r\n                            <input type=\"text\" id=\"evt-venue\" placeholder=\"Conference center or platform\">\r\n                        <\/div>\r\n                        <div style=\"display: grid; grid-template-columns: 1fr 1fr; gap: 12px;\">\r\n                            <div class=\"aitool-row\">\r\n                                <label for=\"evt-city\">Location \/ City<\/label>\r\n                                <input type=\"text\" id=\"evt-city\" placeholder=\"Location\">\r\n                            <\/div>\r\n                            <div class=\"aitool-row\">\r\n                                <label for=\"evt-mode\">Attendance Mode<\/label>\r\n                                <select id=\"evt-mode\">\r\n                                    <option value=\"OfflineEventAttendanceMode\">In-Person<\/option>\r\n                                    <option value=\"OnlineEventAttendanceMode\">Online \/ Virtual<\/option>\r\n                                    <option value=\"MixedEventAttendanceMode\">Mixed \/ Hybrid<\/option>\r\n                                <\/select>\r\n                            <\/div>\r\n                        <\/div>\r\n                        <div style=\"display: grid; grid-template-columns: 1fr 1fr 1fr; gap: 10px;\">\r\n                            <div class=\"aitool-row\">\r\n                                <label for=\"evt-price\">Ticket Price<\/label>\r\n                                <input type=\"text\" id=\"evt-price\" placeholder=\"0 or 99.00\">\r\n                            <\/div>\r\n                            <div class=\"aitool-row\">\r\n                                <label for=\"evt-currency\">Currency<\/label>\r\n                                <input type=\"text\" id=\"evt-currency\" placeholder=\"USD\" value=\"USD\">\r\n                            <\/div>\r\n                            <div class=\"aitool-row\">\r\n                                <label for=\"evt-organizer\">Organizer<\/label>\r\n                                <input type=\"text\" id=\"evt-organizer\" placeholder=\"Organizer name\">\r\n                            <\/div>\r\n                        <\/div>\r\n                    <\/div>\r\n\r\n                    <!-- 9. RECIPE -->\r\n                    <div class=\"sg-fields\" id=\"sg-fields-recipe\" style=\"display: none;\">\r\n                        <div class=\"aitool-row\">\r\n                            <label for=\"rec-name\">Recipe Title *<\/label>\r\n                            <input type=\"text\" id=\"rec-name\" placeholder=\"Dish name\">\r\n                        <\/div>\r\n                        <div class=\"aitool-row\">\r\n                            <label for=\"rec-desc\">Description<\/label>\r\n                            <textarea id=\"rec-desc\" rows=\"2\" placeholder=\"Overview of flavor and preparation\"><\/textarea>\r\n                        <\/div>\r\n                        <div class=\"aitool-row\">\r\n                            <label for=\"rec-image\">Image URL<\/label>\r\n                            <input type=\"url\" id=\"rec-image\" placeholder=\"https:\/\/example.com\/recipe.jpg\">\r\n                        <\/div>\r\n                        <div style=\"display: grid; grid-template-columns: 1fr 1fr 1fr; gap: 10px;\">\r\n                            <div class=\"aitool-row\">\r\n                                <label for=\"rec-prep\">Prep (Mins)<\/label>\r\n                                <input type=\"number\" id=\"rec-prep\" placeholder=\"15\">\r\n                            <\/div>\r\n                            <div class=\"aitool-row\">\r\n                                <label for=\"rec-cook\">Cook (Mins)<\/label>\r\n                                <input type=\"number\" id=\"rec-cook\" placeholder=\"30\">\r\n                            <\/div>\r\n                            <div class=\"aitool-row\">\r\n                                <label for=\"rec-serves\">Servings<\/label>\r\n                                <input type=\"text\" id=\"rec-serves\" placeholder=\"4\">\r\n                            <\/div>\r\n                        <\/div>\r\n                        <div class=\"aitool-row\">\r\n                            <label for=\"rec-ingredients\">Ingredients (One item per line)<\/label>\r\n                            <textarea id=\"rec-ingredients\" rows=\"4\" placeholder=\"1 cup olive oil&#10;2 cloves garlic\"><\/textarea>\r\n                        <\/div>\r\n                        <div class=\"aitool-row\">\r\n                            <label for=\"rec-steps\">Instructions (One step per line)<\/label>\r\n                            <textarea id=\"rec-steps\" rows=\"4\" placeholder=\"Heat skillet over medium heat&#10;Add garlic and saute\"><\/textarea>\r\n                        <\/div>\r\n                    <\/div>\r\n\r\n                    <!-- 10. COURSE -->\r\n                    <div class=\"sg-fields\" id=\"sg-fields-course\" style=\"display: none;\">\r\n                        <div class=\"aitool-row\">\r\n                            <label for=\"crs-name\">Course Title *<\/label>\r\n                            <input type=\"text\" id=\"crs-name\" placeholder=\"Course name\">\r\n                        <\/div>\r\n                        <div class=\"aitool-row\">\r\n                            <label for=\"crs-url\">Course URL<\/label>\r\n                            <input type=\"url\" id=\"crs-url\" placeholder=\"https:\/\/example.com\/course\">\r\n                        <\/div>\r\n                        <div class=\"aitool-row\">\r\n                            <label for=\"crs-desc\">Curriculum Overview<\/label>\r\n                            <textarea id=\"crs-desc\" rows=\"3\" placeholder=\"Summary of learning modules\"><\/textarea>\r\n                        <\/div>\r\n                        <div style=\"display: grid; grid-template-columns: 1fr 1fr; gap: 12px;\">\r\n                            <div class=\"aitool-row\">\r\n                                <label for=\"crs-provider\">Provider Name<\/label>\r\n                                <input type=\"text\" id=\"crs-provider\" placeholder=\"Organization or university\">\r\n                            <\/div>\r\n                            <div class=\"aitool-row\">\r\n                                <label for=\"crs-price\">Enrollment Price<\/label>\r\n                                <input type=\"text\" id=\"crs-price\" placeholder=\"Free or 199.00\">\r\n                            <\/div>\r\n                        <\/div>\r\n                    <\/div>\r\n\r\n                    <!-- 11. JOB POSTING -->\r\n                    <div class=\"sg-fields\" id=\"sg-fields-job-posting\" style=\"display: none;\">\r\n                        <div class=\"aitool-row\">\r\n                            <label for=\"job-title\">Job Title *<\/label>\r\n                            <input type=\"text\" id=\"job-title\" placeholder=\"Job title\">\r\n                        <\/div>\r\n                        <div class=\"aitool-row\">\r\n                            <label for=\"job-org\">Hiring Organization *<\/label>\r\n                            <input type=\"text\" id=\"job-org\" placeholder=\"Employer name\">\r\n                        <\/div>\r\n                        <div class=\"aitool-row\">\r\n                            <label for=\"job-desc\">Job Description<\/label>\r\n                            <textarea id=\"job-desc\" rows=\"3\" placeholder=\"Key responsibilities and qualifications\"><\/textarea>\r\n                        <\/div>\r\n                        <div style=\"display: grid; grid-template-columns: 1fr 1fr; gap: 12px;\">\r\n                            <div class=\"aitool-row\">\r\n                                <label for=\"job-date\">Date Posted<\/label>\r\n                                <input type=\"date\" id=\"job-date\">\r\n                            <\/div>\r\n                            <div class=\"aitool-row\">\r\n                                <label for=\"job-location\">Location \/ Remote Status<\/label>\r\n                                <input type=\"text\" id=\"job-location\" placeholder=\"Remote \/ City, State\">\r\n                            <\/div>\r\n                        <\/div>\r\n                        <div style=\"display: grid; grid-template-columns: 1fr 1fr; gap: 12px;\">\r\n                            <div class=\"aitool-row\">\r\n                                <label for=\"job-type\">Employment Type<\/label>\r\n                                <select id=\"job-type\">\r\n                                    <option value=\"FULL_TIME\" selected>Full-Time<\/option>\r\n                                    <option value=\"PART_TIME\">Part-Time<\/option>\r\n                                    <option value=\"CONTRACTOR\">Contractor<\/option>\r\n                                    <option value=\"INTERN\">Intern<\/option>\r\n                                <\/select>\r\n                            <\/div>\r\n                            <div class=\"aitool-row\">\r\n                                <label for=\"job-salary\">Base Salary (Range or Figure)<\/label>\r\n                                <input type=\"text\" id=\"job-salary\" placeholder=\"80000 - 100000\">\r\n                            <\/div>\r\n                        <\/div>\r\n                    <\/div>\r\n\r\n                    <!-- 12. VIDEO -->\r\n                    <div class=\"sg-fields\" id=\"sg-fields-video\" style=\"display: none;\">\r\n                        <div class=\"aitool-row\">\r\n                            <label for=\"vid-name\">Video Title *<\/label>\r\n                            <input type=\"text\" id=\"vid-name\" placeholder=\"Video headline\">\r\n                        <\/div>\r\n                        <div class=\"aitool-row\">\r\n                            <label for=\"vid-desc\">Description *<\/label>\r\n                            <textarea id=\"vid-desc\" rows=\"3\" placeholder=\"Summary of video topic\"><\/textarea>\r\n                        <\/div>\r\n                        <div class=\"aitool-row\">\r\n                            <label for=\"vid-thumb\">Thumbnail Image URL *<\/label>\r\n                            <input type=\"url\" id=\"vid-thumb\" placeholder=\"https:\/\/example.com\/thumb.jpg\">\r\n                        <\/div>\r\n                        <div style=\"display: grid; grid-template-columns: 1fr 1fr; gap: 12px;\">\r\n                            <div class=\"aitool-row\">\r\n                                <label for=\"vid-date\">Upload Date<\/label>\r\n                                <input type=\"date\" id=\"vid-date\">\r\n                            <\/div>\r\n                            <div class=\"aitool-row\">\r\n                                <label for=\"vid-duration\">Duration (ISO 8601, e.g. PT5M30S)<\/label>\r\n                                <input type=\"text\" id=\"vid-duration\" placeholder=\"PT5M30S\">\r\n                            <\/div>\r\n                        <\/div>\r\n                        <div class=\"aitool-row\">\r\n                            <label for=\"vid-embed\">Embed URL<\/label>\r\n                            <input type=\"url\" id=\"vid-embed\" placeholder=\"https:\/\/www.youtube.com\/embed\/...\">\r\n                        <\/div>\r\n                    <\/div>\r\n\r\n                    <div class=\"aitool-buttons\" style=\"margin-top: 20px;\">\r\n                        <button type=\"button\" id=\"sg-generate-btn\" class=\"aitool-btn aitool-btn-primary\">Generate Schema<\/button>\r\n                        <button type=\"button\" id=\"sg-clear-btn\" class=\"aitool-btn aitool-btn-secondary\">Clear Input<\/button>\r\n                    <\/div>\r\n                <\/div>\r\n            <\/div>\r\n\r\n            <!-- Right Column: Schema Code and Validation -->\r\n            <div class=\"aitool-sticky-panel\">\r\n                <div class=\"aitool-card\">\r\n                    <div class=\"aitool-card-header\">\r\n                        <span class=\"aitool-card-title\">Structured Output<\/span>\r\n                        <span class=\"aitool-card-badge\" id=\"sg-status-badge\">Awaiting Generation<\/span>\r\n                    <\/div>\r\n                    <div class=\"aitool-card-body\">\r\n                        <!-- Output View Tabs -->\r\n                        <div class=\"aitool-mode-tabs\" style=\"justify-content: flex-start; margin-bottom: 16px;\">\r\n                            <button type=\"button\" class=\"aitool-mode-tab active\" data-tab=\"json\">JSON-LD<\/button>\r\n                            <button type=\"button\" class=\"aitool-mode-tab\" data-tab=\"script\">HTML Script Tag<\/button>\r\n                            <button type=\"button\" class=\"aitool-mode-tab\" data-tab=\"audit\">Validation Audit<\/button>\r\n                        <\/div>\r\n\r\n                        <!-- JSON-LD View -->\r\n                        <div id=\"sg-view-json\" class=\"sg-code-view\">\r\n                            <pre id=\"sg-json-out\" style=\"background: var(--BodyBGColor); border: 1px solid rgba(214,214,214,0.1); border-radius: var(--Radius_Small); padding: 14px; font-family: monospace; font-size: 12px; color: #86efac; max-height: 380px; overflow: auto; white-space: pre-wrap; word-break: break-all; margin: 0;\"><\/pre>\r\n                        <\/div>\r\n\r\n                        <!-- Script Tag View -->\r\n                        <div id=\"sg-view-script\" class=\"sg-code-view\" style=\"display: none;\">\r\n                            <pre id=\"sg-script-out\" style=\"background: var(--BodyBGColor); border: 1px solid rgba(214,214,214,0.1); border-radius: var(--Radius_Small); padding: 14px; font-family: monospace; font-size: 12px; color: #7dd3fc; max-height: 380px; overflow: auto; white-space: pre-wrap; word-break: break-all; margin: 0;\"><\/pre>\r\n                        <\/div>\r\n\r\n                        <!-- Validation Audit View -->\r\n                        <div id=\"sg-view-audit\" class=\"sg-code-view\" style=\"display: none;\">\r\n                            <div id=\"sg-audit-list\" style=\"display: flex; flex-direction: column; gap: 8px;\"><\/div>\r\n                        <\/div>\r\n\r\n                        <div class=\"aitool-actions\" id=\"sg-output-actions\" style=\"display: none; margin-top: 15px;\">\r\n                            <button type=\"button\" id=\"sg-copy-active-btn\" class=\"aitool-action-btn\">Copy JSON-LD<\/button>\r\n                            <button type=\"button\" id=\"sg-download-btn\" class=\"aitool-action-btn\">Download .json<\/button>\r\n                        <\/div>\r\n                    <\/div>\r\n                <\/div>\r\n            <\/div>\r\n        <\/div>\r\n\r\n        <div class=\"aitool-info-box\" style=\"margin-top: 25px;\">\r\n            <strong>Implementation Checklist:<\/strong>\r\n            <ul style=\"margin: 10px 0 0 20px; line-height: 1.7;\">\r\n                <li>Place the generated <code>&lt;script type=\"application\/ld+json\"&gt;<\/code> block directly within the document <code>&lt;head&gt;<\/code> or at the end of the body.<\/li>\r\n                <li>Verify your markup using the <a href=\"https:\/\/search.google.com\/test\/rich-results\" target=\"_blank\" rel=\"noopener noreferrer\" style=\"color: var(--PrimaryColor); font-weight: 600;\">Google Rich Results Test<\/a> or Schema.org Validator prior to production deployment.<\/li>\r\n                <li>Ensure all data embedded in the structured schema corresponds accurately to the visible, crawlable content on the page to prevent manual action flags.<\/li>\r\n            <\/ul>\r\n        <\/div>\r\n    <\/div>\r\n<\/div>\r\n\r\n<script>\r\njQuery(document).ready(function ($) {\r\n    var activeType = 'article';\r\n    var generatedSchema = null;\r\n    var activeTab = 'json';\r\n\r\n    var typeTitles = {\r\n        'article': 'Article',\r\n        'product': 'Product',\r\n        'local-business': 'Local Business',\r\n        'organization': 'Organization',\r\n        'person': 'Person',\r\n        'faq': 'FAQ Page',\r\n        'review': 'Review',\r\n        'event': 'Event',\r\n        'recipe': 'Recipe',\r\n        'course': 'Course',\r\n        'job-posting': 'Job Posting',\r\n        'video': 'Video'\r\n    };\r\n\r\n    function v(id) {\r\n        var el = document.getElementById(id);\r\n        return el ? el.value.trim() : '';\r\n    }\r\n\r\n    function cleanObj(obj) {\r\n        if (Array.isArray(obj)) {\r\n            return obj.map(cleanObj).filter(function (x) {\r\n                return x !== null && x !== undefined && x !== '';\r\n            });\r\n        }\r\n        if (obj !== null && typeof obj === 'object') {\r\n            var res = {};\r\n            for (var k in obj) {\r\n                if (!obj.hasOwnProperty(k)) continue;\r\n                var val = cleanObj(obj[k]);\r\n                var isEmpty = val === null || val === undefined || val === '' ||\r\n                    (Array.isArray(val) && val.length === 0) ||\r\n                    (typeof val === 'object' && !Array.isArray(val) && Object.keys(val).length === 0);\r\n                if (!isEmpty) res[k] = val;\r\n            }\r\n            return res;\r\n        }\r\n        return obj;\r\n    }\r\n\r\n    \/\/ Switch Schema Type Form\r\n    $('#sg-type-selector').on('click', '.aitool-mode-tab', function () {\r\n        $('#sg-type-selector .aitool-mode-tab').removeClass('active');\r\n        $(this).addClass('active');\r\n\r\n        activeType = $(this).data('type');\r\n        $('#sg-active-type-badge').text(typeTitles[activeType] || 'Schema');\r\n\r\n        $('.sg-fields').hide();\r\n        $('#sg-fields-' + activeType).show();\r\n\r\n        resetOutputState();\r\n    });\r\n\r\n    \/\/ FAQ Dynamic Question Rows\r\n    function addFaqRow() {\r\n        var count = $('#sg-faq-container .sg-faq-row').length + 1;\r\n        var html = '<div class=\"sg-faq-row aitool-card-highlight\" style=\"background:var(--BodyBGColor); border-left-color:var(--PrimaryColor); margin-bottom:0;\">' +\r\n            '<div style=\"display:flex; justify-content:space-between; align-items:center; margin-bottom:6px;\">' +\r\n            '<span style=\"font-size:12px; font-weight:600; color:var(--AccentTxtColor);\">Question ' + count + '<\/span>' +\r\n            '<button type=\"button\" class=\"sg-remove-faq aitool-action-btn\" style=\"padding:2px 8px; font-size:11px;\">Remove<\/button>' +\r\n            '<\/div>' +\r\n            '<div class=\"aitool-row\" style=\"margin-bottom:8px;\">' +\r\n            '<input type=\"text\" class=\"sg-faq-q\" placeholder=\"Enter question\">' +\r\n            '<\/div>' +\r\n            '<div class=\"aitool-row\" style=\"margin-bottom:0;\">' +\r\n            '<textarea class=\"sg-faq-a\" rows=\"2\" placeholder=\"Enter answer\"><\/textarea>' +\r\n            '<\/div>' +\r\n            '<\/div>';\r\n        $('#sg-faq-container').append(html);\r\n    }\r\n\r\n    $('#sg-faq-add-btn').on('click', addFaqRow);\r\n\r\n    $('#sg-faq-container').on('click', '.sg-remove-faq', function () {\r\n        $(this).closest('.sg-faq-row').remove();\r\n        $('#sg-faq-container .sg-faq-row').each(function (i) {\r\n            $(this).find('span').text('Question ' + (i + 1));\r\n        });\r\n    });\r\n\r\n    addFaqRow();\r\n    addFaqRow();\r\n\r\n    \/\/ Build JSON-LD Object\r\n    function buildSchema() {\r\n        var s = {};\r\n\r\n        if (activeType === 'article') {\r\n            s = {\r\n                \"@context\": \"https:\/\/schema.org\",\r\n                \"@type\": \"Article\",\r\n                \"headline\": v('art-headline'),\r\n                \"url\": v('art-url'),\r\n                \"description\": v('art-desc'),\r\n                \"datePublished\": v('art-pub'),\r\n                \"dateModified\": v('art-mod') || v('art-pub'),\r\n                \"author\": { \"@type\": \"Person\", \"name\": v('art-author'), \"url\": v('art-author-url') },\r\n                \"publisher\": { \"@type\": \"Organization\", \"name\": v('art-publisher') },\r\n                \"image\": v('art-image')\r\n            };\r\n        } else if (activeType === 'product') {\r\n            s = {\r\n                \"@context\": \"https:\/\/schema.org\",\r\n                \"@type\": \"Product\",\r\n                \"name\": v('prod-name'),\r\n                \"url\": v('prod-url'),\r\n                \"description\": v('prod-desc'),\r\n                \"sku\": v('prod-sku'),\r\n                \"image\": v('prod-image'),\r\n                \"brand\": { \"@type\": \"Brand\", \"name\": v('prod-brand') },\r\n                \"offers\": {\r\n                    \"@type\": \"Offer\",\r\n                    \"price\": v('prod-price'),\r\n                    \"priceCurrency\": v('prod-currency'),\r\n                    \"availability\": \"https:\/\/schema.org\/\" + v('prod-avail')\r\n                },\r\n                \"aggregateRating\": v('prod-rating') ? {\r\n                    \"@type\": \"AggregateRating\",\r\n                    \"ratingValue\": v('prod-rating'),\r\n                    \"reviewCount\": v('prod-review-count') || \"1\"\r\n                } : undefined\r\n            };\r\n        } else if (activeType === 'local-business') {\r\n            s = {\r\n                \"@context\": \"https:\/\/schema.org\",\r\n                \"@type\": v('biz-type') || \"LocalBusiness\",\r\n                \"name\": v('biz-name'),\r\n                \"url\": v('biz-url'),\r\n                \"telephone\": v('biz-phone'),\r\n                \"priceRange\": v('biz-price'),\r\n                \"address\": {\r\n                    \"@type\": \"PostalAddress\",\r\n                    \"streetAddress\": v('biz-street'),\r\n                    \"addressLocality\": v('biz-city'),\r\n                    \"addressRegion\": v('biz-state'),\r\n                    \"postalCode\": v('biz-zip'),\r\n                    \"addressCountry\": v('biz-country')\r\n                },\r\n                \"openingHours\": v('biz-hours')\r\n            };\r\n        } else if (activeType === 'organization') {\r\n            var socials = v('org-social').split(',').map(function (s) { return s.trim(); }).filter(Boolean);\r\n            s = {\r\n                \"@context\": \"https:\/\/schema.org\",\r\n                \"@type\": \"Organization\",\r\n                \"name\": v('org-name'),\r\n                \"url\": v('org-url'),\r\n                \"logo\": v('org-logo'),\r\n                \"description\": v('org-desc'),\r\n                \"email\": v('org-email'),\r\n                \"telephone\": v('org-phone'),\r\n                \"foundingDate\": v('org-founded'),\r\n                \"numberOfEmployees\": v('org-employees') ? { \"@type\": \"QuantitativeValue\", \"value\": parseInt(v('org-employees'), 10) } : undefined,\r\n                \"sameAs\": socials.length ? socials : undefined\r\n            };\r\n        } else if (activeType === 'person') {\r\n            var pSocials = v('per-social').split(',').map(function (s) { return s.trim(); }).filter(Boolean);\r\n            s = {\r\n                \"@context\": \"https:\/\/schema.org\",\r\n                \"@type\": \"Person\",\r\n                \"name\": v('per-name'),\r\n                \"url\": v('per-url'),\r\n                \"description\": v('per-desc'),\r\n                \"jobTitle\": v('per-job'),\r\n                \"email\": v('per-email'),\r\n                \"image\": v('per-image'),\r\n                \"worksFor\": v('per-org') ? { \"@type\": \"Organization\", \"name\": v('per-org') } : undefined,\r\n                \"sameAs\": pSocials.length ? pSocials : undefined\r\n            };\r\n        } else if (activeType === 'faq') {\r\n            var items = [];\r\n            $('#sg-faq-container .sg-faq-row').each(function () {\r\n                var q = $(this).find('.sg-faq-q').val().trim();\r\n                var a = $(this).find('.sg-faq-a').val().trim();\r\n                if (q && a) {\r\n                    items.push({\r\n                        \"@type\": \"Question\",\r\n                        \"name\": q,\r\n                        \"acceptedAnswer\": { \"@type\": \"Answer\", \"text\": a }\r\n                    });\r\n                }\r\n            });\r\n            s = {\r\n                \"@context\": \"https:\/\/schema.org\",\r\n                \"@type\": \"FAQPage\",\r\n                \"url\": v('faq-url'),\r\n                \"mainEntity\": items\r\n            };\r\n        } else if (activeType === 'review') {\r\n            s = {\r\n                \"@context\": \"https:\/\/schema.org\",\r\n                \"@type\": \"Review\",\r\n                \"itemReviewed\": { \"@type\": \"Thing\", \"name\": v('rev-item'), \"url\": v('rev-url') },\r\n                \"reviewBody\": v('rev-body'),\r\n                \"datePublished\": v('rev-date'),\r\n                \"author\": { \"@type\": \"Person\", \"name\": v('rev-author') },\r\n                \"reviewRating\": {\r\n                    \"@type\": \"Rating\",\r\n                    \"ratingValue\": v('rev-rating'),\r\n                    \"bestRating\": \"5\",\r\n                    \"worstRating\": \"1\"\r\n                }\r\n            };\r\n        } else if (activeType === 'event') {\r\n            s = {\r\n                \"@context\": \"https:\/\/schema.org\",\r\n                \"@type\": \"Event\",\r\n                \"name\": v('evt-name'),\r\n                \"url\": v('evt-url'),\r\n                \"description\": v('evt-desc'),\r\n                \"startDate\": v('evt-start'),\r\n                \"endDate\": v('evt-end'),\r\n                \"eventAttendanceMode\": \"https:\/\/schema.org\/\" + v('evt-mode'),\r\n                \"location\": {\r\n                    \"@type\": v('evt-mode') === 'OnlineEventAttendanceMode' ? \"VirtualLocation\" : \"Place\",\r\n                    \"name\": v('evt-venue'),\r\n                    \"address\": v('evt-city')\r\n                },\r\n                \"offers\": v('evt-price') ? { \"@type\": \"Offer\", \"price\": v('evt-price'), \"priceCurrency\": v('evt-currency') || \"USD\" } : undefined,\r\n                \"organizer\": v('evt-organizer') ? { \"@type\": \"Organization\", \"name\": v('evt-organizer') } : undefined\r\n            };\r\n        } else if (activeType === 'recipe') {\r\n            var ings = v('rec-ingredients').split(\/\\r?\\n\/).map(function (s) { return s.trim(); }).filter(Boolean);\r\n            var steps = v('rec-steps').split(\/\\r?\\n\/).map(function (s, i) {\r\n                return s.trim() ? { \"@type\": \"HowToStep\", \"text\": s.trim(), \"position\": i + 1 } : null;\r\n            }).filter(Boolean);\r\n\r\n            s = {\r\n                \"@context\": \"https:\/\/schema.org\",\r\n                \"@type\": \"Recipe\",\r\n                \"name\": v('rec-name'),\r\n                \"description\": v('rec-desc'),\r\n                \"image\": v('rec-image'),\r\n                \"prepTime\": v('rec-prep') ? \"PT\" + v('rec-prep') + \"M\" : undefined,\r\n                \"cookTime\": v('rec-cook') ? \"PT\" + v('rec-cook') + \"M\" : undefined,\r\n                \"recipeYield\": v('rec-serves'),\r\n                \"recipeIngredient\": ings.length ? ings : undefined,\r\n                \"recipeInstructions\": steps.length ? steps : undefined\r\n            };\r\n        } else if (activeType === 'course') {\r\n            s = {\r\n                \"@context\": \"https:\/\/schema.org\",\r\n                \"@type\": \"Course\",\r\n                \"name\": v('crs-name'),\r\n                \"url\": v('crs-url'),\r\n                \"description\": v('crs-desc'),\r\n                \"provider\": { \"@type\": \"Organization\", \"name\": v('crs-provider') },\r\n                \"offers\": v('crs-price') ? { \"@type\": \"Offer\", \"price\": v('crs-price'), \"priceCurrency\": \"USD\" } : undefined\r\n            };\r\n        } else if (activeType === 'job-posting') {\r\n            s = {\r\n                \"@context\": \"https:\/\/schema.org\",\r\n                \"@type\": \"JobPosting\",\r\n                \"title\": v('job-title'),\r\n                \"hiringOrganization\": { \"@type\": \"Organization\", \"name\": v('job-org') },\r\n                \"description\": v('job-desc'),\r\n                \"datePosted\": v('job-date'),\r\n                \"jobLocation\": { \"@type\": \"Place\", \"address\": v('job-location') },\r\n                \"employmentType\": v('job-type'),\r\n                \"baseSalary\": v('job-salary') ? {\r\n                    \"@type\": \"MonetaryAmount\",\r\n                    \"currency\": \"USD\",\r\n                    \"value\": { \"@type\": \"QuantitativeValue\", \"value\": v('job-salary'), \"unitText\": \"YEAR\" }\r\n                } : undefined\r\n            };\r\n        } else if (activeType === 'video') {\r\n            s = {\r\n                \"@context\": \"https:\/\/schema.org\",\r\n                \"@type\": \"VideoObject\",\r\n                \"name\": v('vid-name'),\r\n                \"description\": v('vid-desc'),\r\n                \"thumbnailUrl\": v('vid-thumb'),\r\n                \"uploadDate\": v('vid-date'),\r\n                \"duration\": v('vid-duration'),\r\n                \"embedUrl\": v('vid-embed')\r\n            };\r\n        }\r\n\r\n        return cleanObj(s);\r\n    }\r\n\r\n    \/\/ Validation Audit Checks\r\n    function auditSchema(schema) {\r\n        var reqFields = {\r\n            'article': ['headline'],\r\n            'product': ['name', 'offers'],\r\n            'local-business': ['name'],\r\n            'organization': ['name'],\r\n            'person': ['name'],\r\n            'faq': ['mainEntity'],\r\n            'review': ['itemReviewed', 'reviewRating'],\r\n            'event': ['name', 'startDate'],\r\n            'recipe': ['name'],\r\n            'course': ['name'],\r\n            'job-posting': ['title', 'hiringOrganization'],\r\n            'video': ['name', 'description', 'thumbnailUrl']\r\n        };\r\n\r\n        var checks = [];\r\n        var required = reqFields[activeType] || [];\r\n\r\n        checks.push({ status: 'ok', msg: '@context is verified: https:\/\/schema.org' });\r\n        checks.push({ status: 'ok', msg: '@type recognized as: ' + schema['@type'] });\r\n\r\n        required.forEach(function (field) {\r\n            if (schema[field]) {\r\n                checks.push({ status: 'ok', msg: 'Required property present: ' + field });\r\n            } else {\r\n                checks.push({ status: 'fail', msg: 'Missing required property: ' + field });\r\n            }\r\n        });\r\n\r\n        if (!schema.url && activeType !== 'recipe' && activeType !== 'review') {\r\n            checks.push({ status: 'warn', msg: 'Recommended property omitted: url (helps search engines uniquely identify the canonical entity)' });\r\n        }\r\n\r\n        return checks;\r\n    }\r\n\r\n    function resetOutputState() {\r\n        generatedSchema = null;\r\n        $('#sg-status-badge').text('Awaiting Generation').css('color', 'var(--BodyTxtColor)');\r\n        $('#sg-json-out').text('Select Generate Schema to build JSON-LD payload.');\r\n        $('#sg-script-out').text('<!-- Script tag output will populate here -->');\r\n        $('#sg-audit-list').html('<div style=\"font-size:13px; color:var(--BodyTxtColor);\">Run generation to perform field validation checks.<\/div>');\r\n        $('#sg-output-actions').hide();\r\n    }\r\n\r\n    \/\/ Generate Execution\r\n    $('#sg-generate-btn').on('click', function () {\r\n        var schema = buildSchema();\r\n\r\n        if (!schema['@type'] || Object.keys(schema).length <= 2) {\r\n            alert('Please supply the mandatory fields (marked with *) before generating structured data.');\r\n            return;\r\n        }\r\n\r\n        generatedSchema = schema;\r\n        var prettyJson = JSON.stringify(schema, null, 2);\r\n        var scriptTag = '<script type=\"application\/ld+json\">\\n' + prettyJson + '\\n<\\\/script>';\r\n\r\n        $('#sg-json-out').text(prettyJson);\r\n        $('#sg-script-out').text(scriptTag);\r\n\r\n        \/\/ Run validation\r\n        var checks = auditSchema(schema);\r\n        var auditHtml = '';\r\n        var hasFailure = false;\r\n\r\n        checks.forEach(function (c) {\r\n            var color = '#22c55e';\r\n            var mark = 'Pass';\r\n            if (c.status === 'warn') {\r\n                color = 'var(--PrimaryColor)';\r\n                mark = 'Notice';\r\n            } else if (c.status === 'fail') {\r\n                color = '#ef4444';\r\n                mark = 'Missing';\r\n                hasFailure = true;\r\n            }\r\n\r\n            auditHtml += '<div class=\"aitool-card-highlight\" style=\"background:var(--BodyBGColor); border-left-color:' + color + '; margin-bottom:0;\">' +\r\n                '<div style=\"display:flex; justify-content:space-between; align-items:center;\">' +\r\n                '<span style=\"font-size:12.5px; color:var(--AccentTxtColor);\">' + c.msg + '<\/span>' +\r\n                '<span class=\"aitool-card-badge\" style=\"color:' + color + '; border-color:' + color + '; font-size:11px; padding:2px 8px;\">' + mark + '<\/span>' +\r\n                '<\/div>' +\r\n                '<\/div>';\r\n        });\r\n\r\n        $('#sg-audit-list').html(auditHtml);\r\n\r\n        if (hasFailure) {\r\n            $('#sg-status-badge').text('Incomplete').css('color', '#ef4444');\r\n        } else {\r\n            $('#sg-status-badge').text('Valid JSON-LD').css('color', '#22c55e');\r\n        }\r\n\r\n        $('#sg-output-actions').show();\r\n    });\r\n\r\n    \/\/ View Switching Tabs\r\n    $('.sg-code-view').hide();\r\n    $('#sg-view-json').show();\r\n\r\n    $('[data-tab]').on('click', function () {\r\n        $('.aitool-mode-tabs [data-tab]').removeClass('active');\r\n        $(this).addClass('active');\r\n\r\n        activeTab = $(this).data('tab');\r\n        $('.sg-code-view').hide();\r\n        $('#sg-view-' + activeTab).show();\r\n\r\n        if (activeTab === 'script') {\r\n            $('#sg-copy-active-btn').text('Copy <script> Tag');\r\n        } else {\r\n            $('#sg-copy-active-btn').text('Copy JSON-LD');\r\n        }\r\n    });\r\n\r\n    \/\/ Copy Handler\r\n    $('#sg-copy-active-btn').on('click', function () {\r\n        if (!generatedSchema) return;\r\n        var text = (activeTab === 'script') ?\r\n            '<script type=\"application\/ld+json\">\\n' + JSON.stringify(generatedSchema, null, 2) + '\\n<\\\/script>' :\r\n            JSON.stringify(generatedSchema, null, 2);\r\n\r\n        var $btn = $(this);\r\n        navigator.clipboard.writeText(text).then(function () {\r\n            $btn.text('Copied to Clipboard');\r\n            setTimeout(function () {\r\n                $btn.text(activeTab === 'script' ? 'Copy <script> Tag' : 'Copy JSON-LD');\r\n            }, 1800);\r\n        });\r\n    });\r\n\r\n    \/\/ Download Handler\r\n    $('#sg-download-btn').on('click', function () {\r\n        if (!generatedSchema) return;\r\n        var blob = new Blob([JSON.stringify(generatedSchema, null, 2)], { type: 'application\/json' });\r\n        var url = URL.createObjectURL(blob);\r\n        var a = document.createElement('a');\r\n        a.href = url;\r\n        a.download = activeType + '-schema.json';\r\n        document.body.appendChild(a);\r\n        a.click();\r\n        document.body.removeChild(a);\r\n        URL.revokeObjectURL(url);\r\n    });\r\n\r\n    \/\/ Clear Handler\r\n    $('#sg-clear-btn').on('click', function () {\r\n        $('.aitool-wrapper input, .aitool-wrapper textarea').val('');\r\n        $('.aitool-wrapper select').prop('selectedIndex', 0);\r\n        resetOutputState();\r\n    });\r\n\r\n    resetOutputState();\r\n});\r\n<\/script><\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t","protected":false},"excerpt":{"rendered":"","protected":false},"author":1,"featured_media":0,"parent":3234,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"elementor_header_footer","meta":{"site-sidebar-layout":"no-sidebar","site-content-layout":"","ast-site-content-layout":"full-width-container","site-content-style":"default","site-sidebar-style":"default","ast-global-header-display":"","ast-banner-title-visibility":"","ast-main-header-display":"","ast-hfb-above-header-display":"","ast-hfb-below-header-display":"","ast-hfb-mobile-header-display":"","site-post-title":"","ast-breadcrumbs-content":"","ast-featured-img":"disabled","footer-sml-layout":"","ast-disable-related-posts":"","theme-transparent-header-meta":"","adv-header-id-meta":"","stick-header-meta":"","header-above-stick-meta":"","header-main-stick-meta":"","header-below-stick-meta":"","astra-migrate-meta-layouts":"default","ast-page-background-enabled":"default","ast-page-background-meta":{"desktop":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"ast-content-background-meta":{"desktop":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"footnotes":""},"class_list":["post-3156","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/digitalbridgehub.com\/acrossysdigital\/wp-json\/wp\/v2\/pages\/3156","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/digitalbridgehub.com\/acrossysdigital\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/digitalbridgehub.com\/acrossysdigital\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/digitalbridgehub.com\/acrossysdigital\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/digitalbridgehub.com\/acrossysdigital\/wp-json\/wp\/v2\/comments?post=3156"}],"version-history":[{"count":4,"href":"https:\/\/digitalbridgehub.com\/acrossysdigital\/wp-json\/wp\/v2\/pages\/3156\/revisions"}],"predecessor-version":[{"id":3160,"href":"https:\/\/digitalbridgehub.com\/acrossysdigital\/wp-json\/wp\/v2\/pages\/3156\/revisions\/3160"}],"up":[{"embeddable":true,"href":"https:\/\/digitalbridgehub.com\/acrossysdigital\/wp-json\/wp\/v2\/pages\/3234"}],"wp:attachment":[{"href":"https:\/\/digitalbridgehub.com\/acrossysdigital\/wp-json\/wp\/v2\/media?parent=3156"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}