geo-platform / src /schema_gen.py
3v324v23's picture
initial: geo-platform full stack
5c429d4
import json
def generate_org_and_faq(org_name, org_url, faqs=None, same_as=None, language='en'):
graph = []
org = {
"@type": "Organization",
"name": org_name,
"url": org_url,
"inLanguage": language,
"sameAs": same_as or [],
# provide alternateName for sites that have Arabic variations
"alternateName": []
}
graph.append(org)
if faqs:
faq_page = {
"@type": "FAQPage",
"mainEntity": faqs
}
graph.append(faq_page)
schema = {
"@context": "https://schema.org",
"@graph": graph
}
return json.dumps(schema, indent=2, ensure_ascii=False)
def generate_arabic_org_schema(org_name_en, org_name_ar, org_url, faqs=None, same_as=None):
"""Generate Organization + FAQ schema with Arabic `inLanguage` and alternateName."""
graph = []
org = {
"@type": "Organization",
"name": org_name_en,
"alternateName": [org_name_ar],
"url": org_url,
"inLanguage": "ar",
"sameAs": same_as or []
}
graph.append(org)
if faqs:
# ensure FAQPage uses inLanguage ar and contains Arabic Q/A
faq_page = {
"@type": "FAQPage",
"inLanguage": "ar",
"mainEntity": faqs
}
graph.append(faq_page)
schema = {"@context": "https://schema.org", "@graph": graph}
return json.dumps(schema, indent=2, ensure_ascii=False)
def make_question_answer(question, answer):
return {
"@type": "Question",
"name": question,
"acceptedAnswer": {
"@type": "Answer",
"text": answer
}
}