department-of-veterans-affairs / va.gov-cms

Editor-centered management for Veteran-centered content.
https://prod.cms.va.gov
GNU General Public License v2.0
98 stars 69 forks source link

BCMH: add schema.org info to content model plan spreadsheet #12731

Closed jilladams closed 1 year ago

jilladams commented 1 year ago

Description

12423 created a field map (VA Benefit Content type spec (google sheet)) for the Benefits Detail Page content model hardening project.

We now need to document in that sheet how fields connect to schema.org markup in the presentation layer (see #10240)

Goal is a thorough first pass with pretty high confidence that our suggestions are a good idea, that we can present to Dave C & Danielle for feedback.

User story

AS A Veteran I WANT benefit content to utilize schema.org/micro-schema SO THAT internet search tools (including Google and Alexa) provide more detailed information before I even visit VAgov.

AS A Drupal engineer, I WANT the content design of the Benefit content model (BCM) to include micro-schema requirements SO THAT there is nothing ambiguous about the implementation requirements.

AS A VA Product Owner I WANT the BCM to be designed to maximize schema.org SO THAT we learn and potentially model use of micro-schema within the VAgov ecosystem

Engineering notes / background

Acceptance criteria

Team

Please check the team(s) that will do this work.

chri5tia commented 1 year ago

From https://github.com/department-of-veterans-affairs/va.gov-cms/issues/10240#issuecomment-1228727561: Properties of interest: https://schema.org/jurisdiction https://schema.org/serviceOperator https://schema.org/areaServed https://schema.org/audience https://schema.org/provider https://schema.org/category https://schema.org/offers https://schema.org/hoursAvailable https://schema.org/isRelatedTo https://schema.org/isSimilarTo https://schema.org/logo https://schema.org/serviceType https://schema.org/governmentBenefitsInfo

chri5tia commented 1 year ago

Observations and Notes

Doc: https://www.drupal.org/docs/contributed-modules/schemaorg-metatag Basic usage: https://www.drupal.org/docs/contributed-modules/schemaorg-metatag/basic-usage Example PR to see this in action: [TBD]

Sidebar schema.org implementation notes in order to have experienced feedback in the spreadsheet for this ticket's ACs. https://va-gov-cms.ddev.site/admin/config/search/metatag to configure content types to use it.

List of submodules:

va.gov-cms: ddev drush pml |grep schema                                                                            11:41
  SEO                               Schema.org Article (schema_article)                          Disabled   8.x-2.4         
  SEO                               Schema.org Metatag Example (schema_article_example)          Disabled   8.x-2.4         
  SEO                               Schema.org Book (schema_book)                                Disabled   8.x-2.4         
  SEO                               Schema.org Course (schema_course)                            Disabled   8.x-2.4         
  SEO                               Schema.org Event (schema_event)                              Disabled   8.x-2.4         
  SEO                               Schema.org HowTo (schema_how_to)                             Disabled   8.x-2.4         
  SEO                               Schema.org Image Object (schema_image_object)                Disabled   8.x-2.4         
  SEO                               Schema.org ItemList (schema_item_list)                       Disabled   8.x-2.4         
  SEO                               Schema.org JobPosting (schema_job_posting)                   Disabled   8.x-2.4         
  SEO                               Schema.org Metatag (schema_metatag)                          Enabled    8.x-2.4         
  SEO                               Schema.org Movie, Series, Season, Episode (schema_movie)     Disabled   8.x-2.4         
  SEO                               Schema.org Organization (schema_organization)                Disabled   8.x-2.4         
  SEO                               Schema.org Person (schema_person)                            Disabled   8.x-2.4         
  SEO                               Schema.org Place (schema_place)                              Disabled   8.x-2.4         
  SEO                               Schema.org Product (schema_product)                          Disabled   8.x-2.4         
  SEO                               Schema.org QAPage and FAQPage (schema_qa_page)               Disabled   8.x-2.4         
  SEO                               Schema.org Recipe (schema_recipe)                            Disabled   8.x-2.4         
  SEO                               Schema.org Review (schema_review)                            Disabled   8.x-2.4         
  SEO                               Schema.org Service (schema_service)                          Disabled   8.x-2.4         
                                    (schema_special_announcement)                                                           
  SEO                               Schema.org Video Object (schema_video_object)                Disabled   8.x-2.4         
  SEO                               Schema.org WebPage (schema_web_page)                         Disabled   8.x-2.4         
  SEO                               Schema.org WebSite (schema_web_site)                         Enabled    8.x-2.4        

As an example with existing benefit hub content type:

Seems that the web_site sub module isn't the one we need. Looking at schema_organization and schema_qa_page.

Screenshot 2023-02-23 at 12 00 29 PM Screenshot 2023-02-23 at 12 05 28 PM

Looks like we need to implement:

So far it's looking like all of this happens as backend drupal configuration without the input of editors, using tokens, not on a per-field basis. This is not something I necessarily remembered from last year's exploration.

chri5tia commented 1 year ago

Here are instructions for adding other schemas (goverment organiztion is needed) to this module, which is what I think we will need to do and am working on specs for that: https://www.drupal.org/docs/contributed-modules/schemaorg-metatag/developer-instructions-for-82-branch

swirtSJW commented 1 year ago

Please keep in mind that schema_metatag alters the headers of Drupal pages and would need to be validated that it is available to graphql so it could be used on the FE. Also FE pages are often composed of more than one Drupal node, so this implementation may not work directly.

chri5tia commented 1 year ago

This needs further exploration and discussion but after talking to Dave Picket, this isn't something that we can use for this piece of work. When we do the benefit detail page hardening, we can discuss if there's value in adding the schema meta tags or if it makes more sense to write it in to the FE templating.

chri5tia commented 1 year ago

Browser tab dump for this project.

https://www.drupal.org/project/schema_metatag https://www.drupal.org/docs/contributed-modules/schemaorg-metatag/basic-usage https://va-gov-cms.ddev.site/admin/content-models/content https://github.com/department-of-veterans-affairs/va.gov-cms/issues/10240 https://schema.org/docs/full.html https://schema.org/GovernmentOrganization https://github.com/department-of-veterans-affairs/va.gov-cms/issues/12423 https://github.com/department-of-veterans-affairs/va.gov-team/blob/master/teams/vsa/design/getting-started-with-va.gov-forms.md https://docs.google.com/document/d/1viOAMVIJBaA8SLUmPXX_ue4Zx6C1AS69zeX6M78tcY4/edit#heading=h.6pjtpf65zekx https://github.com/department-of-veterans-affairs/va.gov-cms/issues/12408 https://github.com/department-of-veterans-affairs/va.gov-cms/issues/12423#issuecomment-1442298889 https://www.drupal.org/node/1351226 https://www.drupal.org/docs/contributed-modules/schemaorg-metatag/developer-instructions-for-82-branch https://docs.google.com/spreadsheets/d/1gP6x-QLFRrJlLWdCEE1COAZXU-kRRmFKSc0sIlc_tyM/edit#gid=0 https://github.com/department-of-veterans-affairs/va.gov-cms/pull/12775 https://app.mural.co/t/vagov6717/m/vagov6717/1658937741729/88cc653ce1bed251e60940c147867eb061496070?sender=24bf1cd3-f133-422b-9bcd-4a63bcc29386 https://app.mural.co/t/vagov6717/m/vagov6717/1658937741729/88cc653ce1bed251e60940c147867eb061496070?sender=1da96bd6-48ea-4c90-b661-1e71111b18a8 https://app.mural.co/t/vagov6717/m/vagov6717/1658937741729/88cc653ce1bed251e60940c147867eb061496070?wid=0-1677268614480&outline=open&sender=1826f255-c819-4936-88db-4c3ab3efdbbf

jilladams commented 1 year ago

Talked to Christia today.

Contributions: Both schema.org and the Drupal module are set up such that we can contribute. So: if they don't contain what we need today, and we think there's value in using this construct (for either search engine or Chatbot, tbd user story updates), then: we can identify what metadata are important to push out, and build those schemas out for both schema.org and the module. LIke: do we want to add Government Healthcare Agency, or Govt Healthcare Coverage Provider or something. So: to an extent we need to be able to identify ourselves which fields are important to push out in this way metadata-wise, regardless of what's already available. (Or: say that this is only opportunistic and we'll only do it if we can tap into existing schemas.)

GraphQL: She's going to re-review how much of the schema.org data from the Drupal module can be pushed through GraphQL for the front-end, to Steve's point above. Timeboxing this to an hour to verify.

Once we know if the answer is yes, schema.org module metadata can go through GraphQL: then, we need to regroup with @chri5tia @swirtSJW and @wesrowe (and maybe Josh), to just confirm next steps and how much to pull into our content model sheet right now.

User stories The mud here is highlighting that the user stories don't really get at the actual use case for why we care about schema.org from Chatbot or end user perspective. I think the Veteran user story should actually be something like: I want better / more accurate search results from Google / Bing, etc. for VA.gov content. And also: what's the Chatbot point. @wesrowe do you have a sense of that? Like: the end goal is to have front-end metatags wrapped around content in VA.gov so that the Chatbot can more effectively scrape the front-end? Or, the goal is to have metadata pushed from Drupal through a someday-content API that Chatbot can read from?

wesrowe commented 1 year ago

I updated the user stories. I don't know about VA Chatbot, but Alexa would probably use micro-schema to better answer questions the same way Google would.

chri5tia commented 1 year ago

I updated the user stories. I don't know about VA Chatbot, but Alexa would probably use micro-schema to better answer questions the same way Google would.

@wesrowe Can you tell me what you mean by microschema and in the same way as Google would? My SEO skills and knowledge are vastly outdated. Schema.org is a Google project.

By microschema, do you mean drilled down like Thing > Organization > GovernmentOrganization and then the schema specifically related to GovernmentOrganization here? In this case we would need to extend what would go here on schema.org and then on the drupal module.

chri5tia commented 1 year ago

There may be other ways we want to accomplish the user story, such as using JSON-LD mark up instead of the schema_metadata module.

Search Engine support status (as of July 2018) Google recommends JSON-LD over Microdata and RDFa - https://developers.google.com/search/docs/guides/sd-policies Bing supports JSON-LD markup since Fabrice Canel's announcement at SMX Advanced fair on the 12th June 2018. Bing has implemented this feature in the Bing Webmaster Tools interface and in the Bing Markup Validator Tool. Yandex is fine with JSON-LD, they have a validator at https://webmaster.yandex.com/tools/microtest/ Baidu uncertain - https://cloud.baidu.com/product/kg/schema implies yes, search results imply no.

Wait. I remember from last time that the drupal schema module covers all this:

JSON LD adds the data within the head element. RDFa and Microdata add this data directly within the code of the content. JSON LD duplicates data but is most commonly used because Google recommends JSON LD.

Source

https://www.drupal.org/docs/8/modules/schemaorg-metatag/json-ld-microdata-or-rdfa

Schema.org article about microdata: https://schema.org/docs/gs.html

chri5tia commented 1 year ago

Summarizing how to configure the schema.org metadata Drupal module:

  1. Composer require the schema metadata module. I used v 8.x-2.4
  2. Enable the schema_metatag and other submodules; I did schema_organization, schema_article, and schema_qa_page to play around
  3. Go to Configuration > Search and metadata > Metatag > Settings and choose which types of content to apply the schema.org metatags to; I selected Q&A single and the existing Benefit Hub content types for the purpose of this test
  4. Enable metatag advanced form for Benefit Hub content type in the form settings.
  5. Go to an existing node for Q&A single and the benefit hub and put some stuff in the metatag fields for schema.org stuff: https://va-gov-cms.ddev.site/test-data-consequatur-amet-a-id-quidem (node 52881). This wouldn't be a good editor experience at this point. I added some tokens but can't save because there is some required fields that are not obvious, needs more configuration. This feels like a way bigger structural change to the site over all than just a feature to add to a new content type and it should be handled by the team that does SEO, is that us? I can't seem to add a screenshot.
chri5tia commented 1 year ago

Timeboxing the GraphQL part of this ticket from last sprint has gone over. I think more brains will need to work together on this on a foundational level if we wanted to use it but I don't see the value at this point in any way. If we pursue schema.org further, we should look at our options for alternatives to achieve a similar user story. I don't see what a veteran would care if it's schema.org or another method to add meta tags and SEO components. The module needs work. More conversations needed.

jilladams commented 1 year ago

Per backend refinement: schema.org is in use on some Facilities, in the front-end, to help search engines do a better job surfacing some facilities data.

We all agree: best used on the frontend, rather than in Drupal. With that, closing this ticket. We will create add'l tickets for front-end for the hardening of the Benefit Detail Page.

wesrowe commented 1 year ago

Just a note: I added a schema.org item to the ACs in the epic