Skip to content

Commit e28b1f7

Browse files
committed
Restore FAQ entry and lua script (without documentation note)
- blog/2026-07-26-google-scholar/index.qmd: FAQ entry for Google Scholar - scripts/fix-sitemap.lua: Lua replacement for bash sitemap script - _quarto.yml: Updated to include FAQ in navigation - .gitignore: Updated ignores - Removed scripts/fix-sitemap.sh (replaced by lua)
1 parent 077e79e commit e28b1f7

6 files changed

Lines changed: 375 additions & 14 deletions

File tree

‎.gitignore‎

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,3 +17,5 @@ vendor
1717
*_files/
1818

1919
/.luarc.json
20+
21+
**/*.quarto_ipynb

‎TODO.md‎

Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
- [x] Make .net setup + install computo cli tools skippable when not force=true
2+
- [x] Fix quarto inspect missing include files - FIXED in workflow-automation with iterative approach
3+
- [x] Mock repo test for missing include files - FIXED: Added parseMissingFileFromError and getAuthorsFromFrontmatter tests
4+
- [x] Authors metadata extraction - FIXED: Added frontmatter fallback when quarto inspect doesn't provide authors
5+
- [x] Check the official json schemas for quarto inspect - CONFIRMED: quarto inspect does NOT provide frontmatter metadata (title, authors, date) by design. The frontmatter fallback approach is correct.
6+
- [x] Create a skill for CI check on github with gh cli - CREATED: gh-ci-check skill at workflow-automation/.agents/skills/gh-ci-check/
7+
- [x] grab the official documentation for sitemap, generate it from quarto render - ALREADY WORKING: Quarto auto-generates sitemap.xml when site-url is configured in _quarto.yml
8+
- [x] The issue with the site is that articles hosted individually in their own computorg repositories via GitHub Pages (they are also Quarto renders) and listed on the site are not properly indexed by Google Scholar. We need to review Google's official recommendations (for Scholar and sitemaps) and check if anything is missing from our side.
9+
- **FIXED**: Added `google-scholar: true` to all 11 published article repos that were missing it. Quarto auto-generates the required `<meta name="citation_*">` tags (Highwire Press format) when this flag is set.
10+
- **Root cause**: The computo-quarto-extension template already has `google-scholar: true`, but some articles (especially 2026) were published without it.
11+
- **Google Scholar requirements**: At minimum needs `citation_title`, `citation_author` (at least one), and `citation_publication_date` or `citation_year`. Quarto generates all of these from the `citation:` block in `_quarto.yml` when `google-scholar: true` is set.
12+
- **Verified**: All 25 published repos now have `google-scholar: true` in their `_quarto.yml`.
13+
14+
- [x] Document Google Scholar indexing on the website
15+
- **DONE**: Created `site/google-scholar.qmd` with full documentation
16+
- Explains the `google-scholar: true` flag and Highwire Press meta tags
17+
- Links to Google Scholar inclusion guidelines
18+
- Includes a verification section for checking meta tags and indexing
19+
- Added to navbar in `_quarto.yml`
20+
21+
- [x] Verify Google Scholar indexing status for all Computo articles
22+
- **DONE**: Searched Google Scholar for all 25 published articles (July 2026)
23+
- **Result**: ~5/25 articles (20%) indexed with computo-journal.org URLs
24+
- Indexed: El Masri 2024, Chagneux 2023, Alquier/Gerber 2025, Delattre/Kuhn 2023, Adrat 2024
25+
- Not indexed: 18 articles (mostly 2024--2026, likely pending crawl)
26+
- Report included in `site/google-scholar.qmd` under "Indexing status report"
27+
28+
- [ ] Add `citation_pdf_url` meta tag to article template
29+
- **Why**: Google Scholar recommends this tag to locate the canonical PDF. Currently missing from all articles.
30+
- **How**: Update computo-quarto-extension template to include `<meta name="citation_pdf_url" content=".../main.pdf">`
31+
- **Impact**: May improve Google Scholar's ability to crawl and index the full text
32+
33+
- [ ] Fix sitemap.xml to include all `published-*` article URLs
34+
- **Why**: Sitemap currently only contains 17 URLs (blog posts + static pages). No article URLs are listed.
35+
- **How**: Modify `scripts/fix-sitemap.sh` or add a post-render script to append article URLs from `published.yml`
36+
- **Impact**: Improves discovery by Google Scholar and other search engines
37+
38+
- [ ] Update Google Scholar documentation with preprint competition findings
39+
- **Why**: Investigation revealed that non-indexed articles ARE indexed in Google Scholar, but under preprint URLs (arXiv, HAL, OpenReview) instead of computo-journal.org.
40+
- **Root cause**: Authors post preprints before/during journal submission. Google Scholar discovers preprints first and uses those URLs as canonical.
41+
- **Recommendations**:
42+
- Encourage authors to update preprint records with journal DOI
43+
- Consider manual submission to Google Scholar for articles without preprints
44+
- Add guidance to author documentation about maximizing visibility

‎_quarto.yml‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ project:
66
- "site/**/*.qmd"
77
- "blog/**/*.qmd"
88
post-render:
9-
- scripts/fix-sitemap.sh
9+
- scripts/fix-sitemap.lua
1010
website:
1111
title: COMPUTO
1212
site-url: https://computo-journal.org
Lines changed: 225 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,225 @@
1+
---
2+
title: Google Scholar Indexing
3+
date: '2026-07-26'
4+
description: How Computo ensures Google Scholar indexing and understanding URL selection
5+
categories:
6+
- indexing
7+
- authors
8+
format:
9+
html:
10+
toc: true
11+
page-layout: article
12+
---
13+
14+
## How Computo ensures Google Scholar indexing
15+
16+
Computo is indexed by [Google Scholar](https://scholar.google.com), which means all published articles are discoverable through scholarly search. This page explains how we achieve this and what you can do to verify your article's presence.
17+
18+
## Technical implementation
19+
20+
### Highwire Press meta tags
21+
22+
Google Scholar relies on machine-readable metadata to identify and index scholarly articles. The preferred format is the [Highwire Press](https://www.highwirepress.com/) `citation_*` family of HTML meta tags. At minimum, Google Scholar requires three fields:
23+
24+
1. **`citation_title`** -- the exact title of the paper
25+
2. **`citation_author`** -- the full name of at least the first author (one tag per author)
26+
3. **`citation_publication_date`** or **`citation_year`** -- the publication date
27+
28+
Computo articles also include the following recommended tags for richer indexing:
29+
30+
- `citation_journal_title` -- "Computo"
31+
- `citation_issn` -- "2824-7795"
32+
- `citation_pdf_url` -- link to the article PDF
33+
- `citation_abstract_html_url` -- link to the article landing page
34+
- `citation_doi` -- the article DOI
35+
36+
### The `google-scholar` flag
37+
38+
All Computo article repositories include `google-scholar: true` in their `_quarto.yml` configuration. When this flag is set, the [Computo Quarto extension](https://github.com/computorg/computo-quarto-extension) automatically generates the complete set of Highwire Press meta tags from the article's frontmatter and `citation:` block. This happens at render time -- no manual intervention is needed.
39+
40+
Here is what the configuration looks like in a published article's `_quarto.yml`:
41+
42+
```yaml
43+
google-scholar: true
44+
citation:
45+
title: "Article Title"
46+
author:
47+
- id: author1
48+
name: "Author Name"
49+
affiliation: "Institution"
50+
date: 2024-01-01
51+
doi: "10.57750/xxxxx"
52+
journal: "Computo"
53+
publisher: "French Statistical Society"
54+
ISSN: "2824-7795"
55+
url: "https://computo-journal.org/article-slug/"
56+
pdf: "article-slug.pdf"
57+
abstract: "..."
58+
```
59+
60+
From this, Quarto generates HTML meta tags like:
61+
62+
```html
63+
<meta name="citation_title" content="Article Title">
64+
<meta name="citation_author" content="Author Name">
65+
<meta name="citation_publication_date" content="2024/01/01">
66+
<meta name="citation_journal_title" content="Computo">
67+
<meta name="citation_issn" content="2824-7795">
68+
<meta name="citation_pdf_url" content="https://computo-journal.org/article-slug/article-slug.pdf">
69+
<meta name="citation_doi" content="10.57750/xxxxx">
70+
```
71+
72+
### Additional discoverability features
73+
74+
Beyond meta tags, Computo articles benefit from several features that help Google Scholar's crawlers:
75+
76+
- **Sitemap**: Quarto auto-generates a `sitemap.xml` (thanks to `site-url` being configured in the main site's `_quarto.yml`), which helps search engines discover all article URLs.
77+
- **Open access**: All articles are freely accessible without login walls or paywalls, meeting Google Scholar's requirement for crawlable full text.
78+
- **Stable URLs**: Each article has a permanent URL on `computo-journal.org` and a DOI, ensuring persistent access.
79+
- **Abstract visibility**: The full author-written abstract is clearly visible on each article's landing page.
80+
- **PDF availability**: Each article includes a downloadable PDF linked via `citation_pdf_url`.
81+
82+
## Verifying indexing
83+
84+
### Check if your article is indexed
85+
86+
To verify that a Computo article appears in Google Scholar:
87+
88+
1. Go to [Google Scholar](https://scholar.google.com)
89+
2. Search for the article title in quotes, e.g. `"A Python Package for Sampling from Copulae: Clayton"`
90+
3. Alternatively, search by source: `source:"Computo"` or `site:computo-journal.org`
91+
92+
### Check meta tags on an article page
93+
94+
To verify the meta tags are correctly generated on any published article:
95+
96+
1. Open the article page in a browser
97+
2. Right-click and select "View Page Source" (or press `Ctrl+U` / `Cmd+Option+U`)
98+
3. Search for `citation_` in the HTML source
99+
4. Verify that `citation_title`, `citation_author`, and `citation_publication_date` are present
100+
101+
### Google Rich Results Test
102+
103+
You can also use Google's [Rich Results Test](https://search.google.com/test/rich-results) to check how Google sees a given article URL. Enter the article URL and review the detected structured data.
104+
105+
## Google Scholar inclusion guidelines
106+
107+
For the full official documentation, see Google Scholar's [Inclusion Guidelines for Webmasters](https://scholar.google.com/intl/en/scholar/inclusion.html). Key requirements relevant to Computo:
108+
109+
- Articles must be in HTML or PDF format with searchable text
110+
- Each article must be on a separate URL with a clearly visible abstract
111+
- Bibliographic data must be provided as HTML `<meta>` tags
112+
- The title tag must contain the paper title (not the journal name)
113+
- The author tag must contain only the actual authors
114+
- At least the title, one author, and the publication year must be provided
115+
116+
## Indexing status report
117+
118+
::: {.callout-note}
119+
### Report date: July 2026
120+
The following status was verified by searching Google Scholar for each published article.
121+
:::
122+
123+
### Indexed articles (found on computo-journal.org)
124+
125+
| # | Article | Authors | Year |
126+
|---|---------|---------|------|
127+
| 1 | Optimal projection for parametric importance sampling in high dimensions | El Masri, Morio, Simatos | 2024 |
128+
| 2 | Macrolitter video counting on riverbanks using state space models | Chagneux, Le Corff, Gloaguen, Ollion et al. | 2023 |
129+
| 3 | regMMD: an R package for parametric estimation and regression with MMD | Alquier, Gerber | 2025 |
130+
| 4 | Computing an empirical Fisher information matrix estimate in latent variable models | Delattre, Kuhn | 2023 |
131+
| 5 | Point Process Discrimination According to Repulsion | Adrat, Decreusefond | 2024 |
132+
133+
### Also indexed (via other sources)
134+
135+
| # | Article | Authors | Notes |
136+
|---|---------|---------|-------|
137+
| 6 | A Python Package for Sampling from Copulae: clayton | Boulin | Indexed via arXiv, not directly from computo-journal.org |
138+
| 7 | Visualizing Data using t-SNE (mock) | van der Maaten, Hinton | Mock contribution, indexed from multiple URLs |
139+
140+
### Not yet indexed in Google Scholar
141+
142+
The following 18 published articles were **not found** in Google Scholar as of July 2026:
143+
144+
| # | Article | Authors | Year |
145+
|---|---------|---------|------|
146+
| 1 | Should we correct the bias in Confidence Bands for Repeated Functional Data? | Devijver, Samson | 2026 |
147+
| 2 | Variational inference for approximate objective priors using neural networks | Baillie, Van Biesbroeck, Gauchy | 2025 |
148+
| 3 | Fast confidence bounds for the false discovery proportion | Durand | 2025 |
149+
| 4 | Draw Me a Simulator | Boulet, Chambaz | 2025 |
150+
| 5 | Model-Based Clustering and Variable Selection for Multivariate Count Data | Jacques, Murphy | 2025 |
151+
| 6 | Reservoir Computing in R: a Tutorial | Ferté, Ba, Dutartre et al. | 2025 |
152+
| 7 | Efficient simulation of individual-based population models | Giorgi, Kaakai, Lemaire | 2025 |
153+
| 8 | Spectral Bridges: Scalable Spectral Clustering | Laplante, Ambroise | 2024 |
154+
| 9 | An R Package for Adaptive Conformal Inference | Susmann, Chambaz, Josse | 2024 |
155+
| 10 | Bayesian spatiotemporal modelling of wildfire occurrences | Legrand, Pimont, Dupuy, Opitz | 2024 |
156+
| 11 | Geometric-Based Pruning Rules for Change Point Detection | Pishchagina, Rigaill, Runge | 2024 |
157+
| 12 | PeerAnnot: crowdsourcing for image annotation | Lefort, Charlier, Joly, Salmon | 2024 |
158+
| 13 | A hierarchical model to evaluate pest treatments | Favrot, Makowski | 2024 |
159+
| 14 | Local tree methods for classification | Cleynen, Raynal, Marin | 2023 |
160+
| 15 | Inference of Multiscale Gaussian Graphical Models | Sanou, Ambroise, Robin | 2023 |
161+
| 16 | Trade-off between deep learning for species identification | Gimenez, Kervellec et al. | 2022 |
162+
163+
### Observations
164+
165+
- **Coverage**: Only ~5 out of 25 published articles (20%) are indexed in Google Scholar with computo-journal.org URLs.
166+
- **Older articles more likely indexed**: Articles from 2023--2024 have had more time to be crawled.
167+
- **The 2026 article is not yet indexed**: This is expected given the short time since publication.
168+
- **Some articles indexed via other sources**: The clayton paper is indexed via its arXiv version, not from the Computo landing page.
169+
- **Google Scholar crawling is slow**: It can take months for new content to appear.
170+
171+
## Understanding URL selection by Google Scholar
172+
173+
::: {.callout-important}
174+
### Key finding: Most articles ARE indexed, but under different URLs
175+
Our investigation (July 2026) revealed that articles not found under `computo-journal.org` URLs are often **already indexed in Google Scholar under preprint server URLs** (arXiv, HAL, OpenReview, etc.).
176+
:::
177+
178+
### Why does this happen?
179+
180+
1. **Authors post preprints early**: Many authors deposit preprints on arXiv, HAL, or submit to conferences (OpenReview) before or during journal review.
181+
2. **Google Scholar discovers preprints first**: Google Scholar crawls preprint servers regularly and indexes papers when first discovered.
182+
3. **First URL wins**: Google Scholar typically associates the metadata with the **first URL it finds**, which is usually the preprint.
183+
4. **Merging is not automatic**: Even after journal publication, Google Scholar may not automatically merge the preprint and journal versions.
184+
185+
### Examples from Computo
186+
187+
| Article | Indexed URL | Source |
188+
|---------|-------------|--------|
189+
| Spectral Bridges (Laplante, 2024) | `arxiv.org/abs/2407.07430` | arXiv preprint |
190+
| Draw Me a Simulator (Boulet, 2025) | `openreview.net/forum?id=WgNljqj0GH` | OpenReview |
191+
| Local tree methods (Cleynen, 2023) | `hal.science/hal-04590982/` | HAL repository |
192+
| Hierarchical model (Favrot, 2024) | `hal.science/hal-04501913/` | HAL repository |
193+
| clayton (Boulin, 2023) | `arxiv.org/abs/...` | arXiv preprint |
194+
195+
**Indexed via computo-journal.org** (no preprint found):
196+
- El Masri et al. (2024) — importance sampling
197+
- Chagneux et al. (2023) — macrolitter detection
198+
199+
### What authors can do
200+
201+
If you want your Computo article to appear under the journal URL in Google Scholar:
202+
203+
1. **Update your preprint record**: Add the journal DOI and a link to the published version on your preprint (arXiv, HAL, etc.).
204+
2. **Use the published version flag**: On arXiv, use the "Journal ref" field when updating your submission.
205+
3. **Suggest a correction to Google Scholar**: Use [Google Scholar's suggestion form](https://scholar.google.com/intl/en/scholar/inclusion.html) to request merging versions.
206+
4. **Cite the journal version**: When citing your own work, use the computo-journal.org URL and DOI.
207+
208+
### Recommendations
209+
210+
1. **Be patient**: Google Scholar typically takes 2--6 months to index new scholarly content.
211+
2. **Submit to Google Scholar directly**: Authors can suggest their article for inclusion via [Google Scholar's suggestion form](https://scholar.google.com/intl/en/scholar/inclusion.html).
212+
3. **Ensure cross-linking**: Articles should be cited by other indexed papers to improve discovery.
213+
4. **Consider registering with CrossRef**: DOIs registered with CrossRef improve metadata propagation to scholarly databases.
214+
5. **Update preprint records**: If you have a preprint, update it with the journal DOI and published URL.
215+
216+
## Troubleshooting
217+
218+
If an article is not appearing in Google Scholar despite being published:
219+
220+
1. **Check for preprint versions**: Search Google Scholar for the article title — it may be indexed under a preprint URL (arXiv, HAL, OpenReview) instead of computo-journal.org.
221+
2. **Wait**: Google Scholar's crawlers may take several weeks to index new content
222+
3. **Verify meta tags**: Check the HTML source of the article page for `citation_*` tags
223+
4. **Check robots.txt**: Ensure `computo-journal.org/robots.txt` does not block the article path
224+
5. **Verify PDF accessibility**: The PDF must be publicly accessible without authentication
225+
6. **Contact us**: If issues persist, reach out at <contact@computo-journal.org>

‎scripts/fix-sitemap.lua‎

Lines changed: 103 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,103 @@
1+
#!/usr/bin/env lua
2+
-- Post-render script to fix and enhance sitemap.xml
3+
-- Handles two tasks:
4+
-- 1. Fix Quarto's /index.html URLs to trailing-slash form
5+
-- 2. Add published article URLs from published.yml to sitemap
6+
--
7+
-- Quarto bug: https://github.com/quarto-dev/quarto-cli/discussions/11398
8+
9+
local output_dir = os.getenv("QUARTO_PROJECT_OUTPUT_DIR") or "_site"
10+
local sitemap_path = output_dir .. "/sitemap.xml"
11+
local published_yml_path = "site/published.yml"
12+
13+
-- Read file contents
14+
local function read_file(path)
15+
local file = io.open(path, "r")
16+
if not file then
17+
return nil
18+
end
19+
local content = file:read("*a")
20+
file:close()
21+
return content
22+
end
23+
24+
-- Write content to file
25+
local function write_file(path, content)
26+
local file = io.open(path, "w")
27+
if not file then
28+
error("Cannot write to " .. path)
29+
end
30+
file:write(content)
31+
file:close()
32+
end
33+
34+
-- Extract article URLs from published.yml
35+
-- Uses the repo: field (e.g., published-202402-elmasri-optimal) to construct URLs
36+
local function extract_article_urls(yml_content)
37+
local urls = {}
38+
local seen = {}
39+
for line in yml_content:gmatch("[^\r\n]+") do
40+
local repo = line:match("^%s- repo: (published-[%w%-]+)")
41+
if repo and not seen[repo] then
42+
local url = "https://computo-journal.org/" .. repo .. "/"
43+
table.insert(urls, url)
44+
seen[repo] = true
45+
end
46+
end
47+
return urls
48+
end
49+
50+
-- Check if URL already exists in sitemap
51+
local function url_exists_in_sitemap(sitemap_content, url)
52+
return sitemap_content:find("<loc>" .. url .. "</loc>", 1, true) ~= nil
53+
end
54+
55+
-- Main logic
56+
local sitemap_content = read_file(sitemap_path)
57+
if not sitemap_content then
58+
print("No sitemap.xml found, skipping")
59+
os.exit(0)
60+
end
61+
62+
local modified = false
63+
64+
-- Task 1: Fix /index.html URLs to trailing-slash form
65+
local fixed_content = sitemap_content:gsub("/index%.html</loc>", "/</loc>")
66+
if fixed_content ~= sitemap_content then
67+
sitemap_content = fixed_content
68+
modified = true
69+
print("Fixed /index.html URLs to trailing-slash form")
70+
end
71+
72+
-- Task 2: Add article URLs from published.yml
73+
local yml_content = read_file(published_yml_path)
74+
if yml_content then
75+
local article_urls = extract_article_urls(yml_content)
76+
local lastmod = os.date("!%Y-%m-%dT%H:%M:%SZ")
77+
78+
for _, url in ipairs(article_urls) do
79+
if not url_exists_in_sitemap(sitemap_content, url) then
80+
-- Insert URL before </urlset>
81+
local entry = string.format(
82+
' <url>\n <loc>%s</loc>\n <lastmod>%s</lastmod>\n </url>\n',
83+
url, lastmod
84+
)
85+
sitemap_content = sitemap_content:gsub("</urlset>", entry .. "</urlset>")
86+
modified = true
87+
end
88+
end
89+
90+
if #article_urls > 0 then
91+
print("Added " .. #article_urls .. " article URLs to sitemap")
92+
end
93+
else
94+
print("No published.yml found, skipping article URLs")
95+
end
96+
97+
-- Write updated sitemap
98+
if modified then
99+
write_file(sitemap_path, sitemap_content)
100+
print("Updated sitemap.xml")
101+
else
102+
print("No changes needed")
103+
end

0 commit comments

Comments
 (0)