SCIX-877 feat(meta_tags): gate Google Scholar tags by doctype, add JSON-LD#2379
Merged
thostetler merged 3 commits intoJul 17, 2026
Merged
Conversation
…ON-LD Google Scholar-compatible citation_* meta tags were emitted on every abstract page. Per SCIX-877 only an allowed whitelist of doctypes should expose them. This also adds a Schema.org ScholarlyArticle JSON-LD block, which BBB previously lacked, emitted for all records. - Added a doctype whitelist and showsGoogleScholarTags predicate (scholar_doctypes.js), matched case-insensitively - Gated the citation_* tags in the template behind showScholarTags - Added a lean JSON-LD builder (jsonld.js) and injected a single idempotent script[data-ads-jsonld] node into the head - Built JSON-LD from the raw record before the widget reshapes author and flattens doi; hardened author handling for reprocessed records - Added doctype to the default fl so it is available for gating - Added mocha coverage for gating and JSON-LD emission
- Derive isAccessibleForFree from the OPENACCESS property instead of always true - Strip ADS -00 placeholders so datePublished is valid ISO 8601 - Remove the stale JSON-LD script on route change alongside the meta tags
Contributor
There was a problem hiding this comment.
Pull request overview
This PR updates the meta-tags widget to (1) restrict Google Scholar-compatible citation_* meta tags to a doctype allowlist and (2) emit Schema.org ScholarlyArticle JSON-LD for all records. This aligns abstract-page metadata with SCIX-877 requirements while adding structured data support.
Changes:
- Added a doctype allowlist + predicate to gate
citation_*tags. - Added a JSON-LD builder and injected a single idempotent
application/ld+jsonblock into<head>. - Expanded widget
flfields to includedoctypeand added mocha coverage for gating + JSON-LD behavior.
Reviewed changes
Copilot reviewed 6 out of 6 changed files in this pull request and generated 1 comment.
Show a summary per file
| File | Description |
|---|---|
src/js/widgets/meta_tags/widget.js |
Adds doctype-based gating and JSON-LD generation/injection in updateMetaTags, plus fetches doctype. |
src/js/widgets/meta_tags/template/metatags.html |
Wraps citation_* meta tags in showScholarTags conditionals. |
src/js/widgets/meta_tags/scholar_doctypes.js |
Introduces the Google Scholar doctype whitelist and case-insensitive predicate. |
src/js/widgets/meta_tags/jsonld.js |
Implements lean Schema.org ScholarlyArticle JSON-LD generation from raw records. |
src/js/components/navigator.js |
Clears JSON-LD head node on navigation alongside existing meta-tag cleanup. |
test/mocha/js/widgets/meta_tags_widget.spec.js |
Adds tests for doctype gating and JSON-LD emission/idempotency. |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
Comment on lines
+143
to
+147
| // Replace any prior JSON-LD node so repeated invocations (search | ||
| // results + abstract display) leave exactly one block, reflecting the | ||
| // most recently displayed record. | ||
| $('head') | ||
| .find('script[type="application/ld+json"][data-ads-jsonld]') |
shinyichen
approved these changes
Jul 17, 2026
Per Copilot review on adsabs#2379: the append-if-absent logic could leave stale citation_* tags in <head> when a later record's doctype omits them. Clear the widget's data-highwire tags before rendering so the current record is authoritative, instead of relying on the navigator's route-change cleanup.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Google Scholar-compatible citation_* meta tags were emitted on every abstract page regardless of doctype. Per SCIX-877 only a defined set of doctypes should expose them; non-scholarly doctypes (proposal, dataset, software, misc, pressrelease, catalog, talk, service, instrument) should not. BBB also lacked any Schema.org structured data.