Legal blog posts are the content AI actually cites. When a law firm publishes articles on legal topics, structured data tells AI who wrote it, when it was published, what practice area it covers, and which firm stands behind it — turning a page of legal analysis into a quotable, attributable source.
Legal blog posts are the pages AI cites most often when answering questions about law. When someone asks an AI about a legal topic your firm has written about, these are the signals it looks for before quoting or linking your article:
BlogPosting as the @type so AI recognizes the page as authored editorial content rather than a generic web page.headline gives AI the title to cite. The articleSection (e.g., "Personal Injury," "Family Law") tells AI which practice area the post belongs to.Person node with name, jobTitle, and sameAs links tells AI exactly which attorney wrote the content and whether they have relevant credentials.publisher field links the article to your firm so AI can attribute the content to an institution, not just an individual attorney.Without these fields, AI may read your legal blog post but have no way to confirm who wrote it, when it was written, or which firm published it — so it skips the citation entirely.
Each field in the template below serves a specific role in how AI systems discover, classify, and recommend your business.
Researched and tested by Minnesota AI
headlinedescriptiondatePublisheddateModifiedauthorpublisherimagenamejobTitleurlsameAsnameurllogoCopy this prompt and paste it into Claude, ChatGPT, Cursor, or any AI coding tool. It will ask for your business details and generate ready-to-use JSON-LD schema for your page.
You are implementing AIFDS-compliant JSON-LD structured data for a Legal Service Blog page. AIFDS (AI-Friendly Data Structure) is a schema framework built on research into which structured data fields AI systems actually read, parse, and use when deciding whether to cite a page. Documentation at aifds.org. Before generating any code, ask me for the following information in a single numbered list. Do not generate schema until I have answered every required field. REQUIRED — do not proceed without these: 1. Attorney name 2. Attorney slug 3. Domain 4. Faq answer 5. Faq question 6. Featured image 7. Firm name 8. Job title 9. Linkedin 10. Logo 11. Modified date 12. Post description 13. Post slug 14. Post title 15. Practice area 16. Publish date 17. State bar profile url 18. Word count OPTIONAL — ask for these but proceed if I skip them: 1. Any additional details not covered above Once I provide the information, output a complete JSON-LD script block ready to paste into the <head> of my HTML page. Output requirements: - Valid JSON-LD wrapped in <script type="application/ld+json"> tags - schema.org vocabulary only - Every AIFDS-required field for this industry and page type included - Include this data attribute on the script tag: data-aifds="aifds.org Legal Service Blog" - No placeholder text — omit missing optional fields rather than fill with examples - After the code block, list any optional fields skipped that would strengthen AI citation
Generated schema follows the AIFDS framework. Fields were selected based on research into AI crawler behavior. View the research at minnesota.ai
Copy the template below and replace every YOUR_* value with your own data. This template covers a single blog post page on a legal service website.
{
"@context": "https://schema.org",
"@graph": [
{
"@type": "BlogPosting",
"@id": "https://YOUR_DOMAIN.com/blog/YOUR_POST_SLUG/#article",
"headline": "YOUR_POST_TITLE",
"description": "YOUR_POST_DESCRIPTION",
"datePublished": "YOUR_PUBLISH_DATE",
"dateModified": "YOUR_MODIFIED_DATE",
"author": {
"@id": "https://YOUR_DOMAIN.com/#author"
},
"publisher": {
"@id": "https://YOUR_DOMAIN.com/#organization"
},
"image": "https://YOUR_DOMAIN.com/YOUR_FEATURED_IMAGE.jpg",
"articleSection": "YOUR_PRACTICE_AREA",
"wordCount": YOUR_WORD_COUNT
},
{
"@type": "Person",
"@id": "https://YOUR_DOMAIN.com/#author",
"name": "YOUR_ATTORNEY_NAME",
"jobTitle": "YOUR_JOB_TITLE",
"url": "https://YOUR_DOMAIN.com/attorneys/YOUR_ATTORNEY_SLUG/",
"sameAs": [
"https://www.linkedin.com/in/YOUR_LINKEDIN",
"https://YOUR_STATE_BAR_PROFILE_URL"
]
},
{
"@type": "Organization",
"@id": "https://YOUR_DOMAIN.com/#organization",
"name": "YOUR_FIRM_NAME",
"url": "https://YOUR_DOMAIN.com",
"logo": "https://YOUR_DOMAIN.com/YOUR_LOGO.png"
},
{
"@type": "WebPage",
"@id": "https://YOUR_DOMAIN.com/blog/YOUR_POST_SLUG/",
"isPartOf": {
"@id": "https://YOUR_DOMAIN.com/#website"
},
"breadcrumb": {
"@id": "https://YOUR_DOMAIN.com/blog/YOUR_POST_SLUG/#breadcrumb"
}
},
{
"@type": "BreadcrumbList",
"@id": "https://YOUR_DOMAIN.com/blog/YOUR_POST_SLUG/#breadcrumb",
"itemListElement": [
{
"@type": "ListItem",
"position": 1,
"name": "Home",
"item": "https://YOUR_DOMAIN.com/"
},
{
"@type": "ListItem",
"position": 2,
"name": "Blog",
"item": "https://YOUR_DOMAIN.com/blog/"
},
{
"@type": "ListItem",
"position": 3,
"name": "YOUR_POST_TITLE",
"item": "https://YOUR_DOMAIN.com/blog/YOUR_POST_SLUG/"
}
]
},
{
"@type": "FAQPage",
"mainEntity": [
{
"@type": "Question",
"name": "YOUR_FAQ_QUESTION_1",
"acceptedAnswer": {
"@type": "Answer",
"text": "YOUR_FAQ_ANSWER_1"
}
},
{
"@type": "Question",
"name": "YOUR_FAQ_QUESTION_2",
"acceptedAnswer": {
"@type": "Answer",
"text": "YOUR_FAQ_ANSWER_2"
}
},
{
"@type": "Question",
"name": "YOUR_FAQ_QUESTION_3",
"acceptedAnswer": {
"@type": "Answer",
"text": "YOUR_FAQ_ANSWER_3"
}
}
]
}
]
}
Schema.org does not have a dedicated bar-number property, but you can include a link to the attorney's state bar profile in the sameAs array. This gives AI a verifiable credential link without inventing a custom field. The bar profile URL is more useful to AI than a raw number because it can be followed and validated.
Use the practice area the post relates to, such as "Personal Injury," "Estate Planning," "Criminal Defense," or "Employment Law." This tells AI which area of law the article covers so it can match the post to relevant queries. Avoid vague labels like "Legal News" — specificity is what makes the field useful.
Yes, and this is especially important for legal content. Laws change, court rulings shift precedent, and AI systems weight freshness heavily when citing legal information. datePublished tells AI when the article first appeared, and dateModified tells it whether the content has been updated to reflect current law. If you have never updated the post, set both to the same date.