{"id":22276145,"url":"https://github.com/noud/seo","last_synced_at":"2026-05-09T07:05:49.212Z","repository":{"id":37525783,"uuid":"210137113","full_name":"noud/seo","owner":"noud","description":"SEO conform Google Search and Schema.org in React \u0026 Laravel","archived":false,"fork":false,"pushed_at":"2023-01-05T04:57:20.000Z","size":7129,"stargazers_count":1,"open_issues_count":19,"forks_count":0,"subscribers_count":0,"default_branch":"master","last_synced_at":"2025-06-06T13:44:55.534Z","etag":null,"topics":["eloquent","entity-relationship-diagram","erd","erdiagram","google-search","laravel","laravel-migrations","php","react","schema","schema-org","seo","sql"],"latest_commit_sha":null,"homepage":"","language":"PHP","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/noud.png","metadata":{"files":{"readme":"readme.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2019-09-22T11:39:08.000Z","updated_at":"2021-05-08T15:00:52.000Z","dependencies_parsed_at":"2023-02-03T11:01:11.732Z","dependency_job_id":null,"html_url":"https://github.com/noud/seo","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/noud/seo","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/noud%2Fseo","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/noud%2Fseo/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/noud%2Fseo/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/noud%2Fseo/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/noud","download_url":"https://codeload.github.com/noud/seo/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/noud%2Fseo/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32810382,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-08T08:22:46.396Z","status":"online","status_checked_at":"2026-05-09T02:00:06.633Z","response_time":123,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["eloquent","entity-relationship-diagram","erd","erdiagram","google-search","laravel","laravel-migrations","php","react","schema","schema-org","seo","sql"],"created_at":"2024-12-03T14:13:37.770Z","updated_at":"2026-05-09T07:05:49.183Z","avatar_url":"https://github.com/noud.png","language":"PHP","funding_links":[],"categories":[],"sub_categories":[],"readme":"# [Search engine optimization (SEO)](https://en.wikipedia.org/wiki/Search_engine_optimization)\n\nconform Google Search and Schema.org in Laravel\n\n![SEO](./docs/seo.png?raw=true \"SEO\")\n\nThis app* gives formatted SEO data for searchengines that use\n- [Google Search](https://developers.google.com/search) [Structured data](https://developers.google.com/search/docs/data-types/article)\n- [Schema.org](https://schema.org) [Types](https://schema.org/docs/full.html)\n\nFor instance this is what it does to your date on [Google Search](https://developers.google.com/search): [Explore the search gallery](https://developers.google.com/search/docs/guides/search-gallery)\n\n*This app was inspired by this question and answer: [Schema.org + Laravel = way too complicated?\n](https://stackoverflow.com/questions/33193525/schema-org-laravel-way-too-complicated)\n\n## Start app\n\n## Import data\n\n```\nmysql -u \u003cuser\u003e -p \u003cdbname\u003e \u003c database/data/seo.sql\n```\n\n## Client\n\nSee the output\n\n```chrome view-source: http://seo.localhost/```\n- [Article](https://developers.google.com/search/docs/data-types/article)\n    - [blog_posting/hackathon-tilburg-groot-succes/schema_org](https://raw.githubusercontent.com/noud/seo/master/database/output/blog_posting/hackathon-tilburg-groot-succes.json)\n    - [blog_posting/duodeka-official-meteor-partner/schema_org](https://raw.githubusercontent.com/noud/seo/master/database/output/blog_posting/duodeka-official-meteor-partner.json)\n- [Breadcrumb](https://developers.google.com/search/docs/data-types/breadcrumb)\n    - [breadcrumb/3/schema_org](https://raw.githubusercontent.com/noud/seo/master/database/output/duodeka.breadcrumb.3.json)\n- [Carousel](https://developers.google.com/search/docs/data-types/carousel)\n    - [carousel/1/schema_org](https://raw.githubusercontent.com/noud/seo/master/database/output/blog_posting/duodeka.carousel.blog_posting.json)\n    - [carousel_summary/1/schema_org](https://raw.githubusercontent.com/noud/seo/master/database/output/blog_posting/duodeka.carousel.summary.blog_posting.json)\n- [Job Posting](https://developers.google.com/search/docs/data-types/job-posting)\n    - [job_posting/english-frontend-developer-in-tilburg/schema_org](https://raw.githubusercontent.com/noud/seo/master/database/output/job_posting/english-frontend-developer-in-tilburg.json)\n    - [job_posting/english-full-stack-developer-in-tilburg/schema_org](https://raw.githubusercontent.com/noud/seo/master/database/output/job_posting/english-full-stack-developer-in-tilburg.json)\n- [Local Business Listing](https://developers.google.com/search/docs/data-types/local-business)\n    - [local_business/1/schema_org](https://raw.githubusercontent.com/noud/seo/master/database/output/duodeka.local_business.json)\n    - organization/2/schema_org\n- [Sitelinks Searchbox](https://developers.google.com/search/docs/data-types/sitelinks-searchbox)\n    - [web_site/1/schema_org](https://raw.githubusercontent.com/noud/seo/master/database/output/duodeka.website.json)\n\n- [Organization](https://schema.org/Organization)\n    - [organization/1/schema_org](https://raw.githubusercontent.com/noud/seo/master/database/output/duodeka.organization.json)\n    - organization/2/schema_org\n- [Person](https://schema.org/Person)\n    - organization/1/founders/Koen/schema_org\n    - organization/1/employees/Koen/schema_org\n    - organization/2/employees/Koen/schema_org\n- [PostalAddress](https://schema.org/PostalAddress)\n    - organization/1/postal_address/schema_org\n\nThe output can be validated at [Google Search](https://developers.google.com/search) [Structured data](https://developers.google.com/search/docs/data-types/article) [Testing Tool](https://search.google.com/structured-data/testing-tool)\n\n## Code generation\n\n### [SQL](https://en.wikipedia.org/wiki/SQL) to [Entity-Relationship Diagram](https://en.wikipedia.org/wiki/Entity–relationship_model)\n\n```\nchrome view-source:http://seo.localhost/schema-inspector/schema\n```\n\n### [Entity-Relationship Diagram](https://en.wikipedia.org/wiki/Entity–relationship_model) to [Laravel Migrations](https://laravel.com/docs/master/migrations)\n\n```\nchrome view-source:http://seo.localhost/schema\n```\n\nImport Schema 'database/schema/schema.txt'. Generate Database Migrations and extract them to 'database/migrations/'.\n\n### [Laravel Migrations](https://laravel.com/docs/master/migrations) to [SQL](https://en.wikipedia.org/wiki/SQL)\n\n```\nphp artisan migrate\n```\n\n### [SQL](https://en.wikipedia.org/wiki/SQL) to [Eloquent Models](https://laravel.com/docs/master/eloquent)\n\n```\nphp artisan code:models\n```\n\n## Structured data and Types used\n\n### [Google Search](https://developers.google.com/search) [Structured data](https://developers.google.com/search/docs/data-types/article)\n\n- [Sitelinks Searchbox](https://developers.google.com/search/docs/data-types/sitelinks-searchbox)\n\n### [Google Search](https://developers.google.com/search) [Structured data](https://developers.google.com/search/docs/data-types/article) conform [Schema.org](https://schema.org)\n\n- [Article](https://developers.google.com/search/docs/data-types/article) can be\n    - [Article](https://schema.org/Article)\n    - [NewsArticle](https://schema.org/NewsArticle)\n    - [BlogPosting](https://schema.org/BlogPosting)\n- [Breadcrumb](https://developers.google.com/search/docs/data-types/breadcrumb) consists of\n    - [BreadcrumbList](https://schema.org/BreadcrumbList)\n    - [ListItem](https://schema.org/ListItem)\n- [Carousel](https://developers.google.com/search/docs/data-types/carousel) consists of\n    - [ItemList](https://schema.org/ItemList)\n    - [ListItem](https://schema.org/ListItem)\n- [Job Posting](https://developers.google.com/search/docs/data-types/job-posting) is\n    - [JobPosting](https://schema.org/JobPosting)\n- [Local Business Listing](https://developers.google.com/search/docs/data-types/local-business) is\n    - [LocalBusiness](https://schema.org/LocalBusiness)\n\n### [Schema.org](https://schema.org) [Types](https://schema.org/docs/full.html)\n\n- [Thing](https://schema.org/Thing)\n    - Action\n        - [SearchAction](https://schema.org/SearchAction)\n    - [CreativeWork](https://schema.org/CreativeWork)\n        - [Article](https://schema.org/Article)\n            - SocialMediaPosting\n                - [BlogPosting](https://schema.org/BlogPosting)\n        - [WebSite](https://schema.org/WebSite)\n    - [Organization](https://schema.org/Organization)\n        - [LocalBusiness](https://schema.org/LocalBusiness)\n    - [Person](https://schema.org/Person)\n    - [Place](https://schema.org/Place)\n        - [LocalBusiness](https://schema.org/LocalBusiness)\n    - Intangible\n        - [ItemList](http://schema.org/ItemList)\n            - [BreadcrumbList](https://schema.org/BreadcrumbList)\n        - [JobPosting](https://schema.org/JobPosting)\n        - [ListItem](http://schema.org/ListItem)\n        - [PropertyValueSpecification](https://schema.org/PropertyValueSpecification)\n        - [Role](https://schema.org/Role)\n        - StructuredValue\n            - [ContactPoint](https://schema.org/ContactPoint)\n                - [PostalAddress](https://schema.org/PostalAddress)\n            - [GeoCoordinates](https://schema.org/GeoCoordinates)\n            - [MonetaryAmount](https://schema.org/MonetaryAmount)\n            - [OpeningHoursSpecification](https://schema.org/OpeningHoursSpecification)\n            - [PropertyValue](https://schema.org/PropertyValue)\n            - [QuantitativeValue](https://schema.org/QuantitativeValue)\n\n## [Entity-Relationship Diagram](https://en.wikipedia.org/wiki/Entity–relationship_model)\n\n![Schema.org Entity-Relationship Diagram](./docs/erd.png?raw=true \"Schema.org Entity-Relationship Diagram\")\n\n## Build with\n\n# [React](https://reactjs.org/) \u0026middot; [![GitHub license](https://img.shields.io/badge/license-MIT-blue.svg)](https://github.com/facebook/react/blob/master/LICENSE) [![npm version](https://img.shields.io/npm/v/react.svg?style=flat)](https://www.npmjs.com/package/react) [![CircleCI Status](https://circleci.com/gh/facebook/react.svg?style=shield\u0026circle-token=:circle-token)](https://circleci.com/gh/facebook/react) [![PRs Welcome](https://img.shields.io/badge/PRs-welcome-brightgreen.svg)](https://reactjs.org/docs/how-to-contribute.html#your-first-pull-request)\n\n\u003cp align=\"center\"\u003e\u003cimg src=\"https://laravel.com/assets/img/components/logo-laravel.svg\"\u003e\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n\u003ca href=\"https://travis-ci.org/laravel/framework\"\u003e\u003cimg src=\"https://travis-ci.org/laravel/framework.svg\" alt=\"Build Status\"\u003e\u003c/a\u003e\n\u003ca href=\"https://packagist.org/packages/laravel/framework\"\u003e\u003cimg src=\"https://poser.pugx.org/laravel/framework/d/total.svg\" alt=\"Total Downloads\"\u003e\u003c/a\u003e\n\u003ca href=\"https://packagist.org/packages/laravel/framework\"\u003e\u003cimg src=\"https://poser.pugx.org/laravel/framework/v/stable.svg\" alt=\"Latest Stable Version\"\u003e\u003c/a\u003e\n\u003ca href=\"https://packagist.org/packages/laravel/framework\"\u003e\u003cimg src=\"https://poser.pugx.org/laravel/framework/license.svg\" alt=\"License\"\u003e\u003c/a\u003e\n\u003c/p\u003e","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnoud%2Fseo","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fnoud%2Fseo","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnoud%2Fseo/lists"}