diff --git a/src/assets/js/reprodb-search.js b/src/assets/js/reprodb-search.js
index 9fd8d59..4fab4a6 100644
--- a/src/assets/js/reprodb-search.js
+++ b/src/assets/js/reprodb-search.js
@@ -257,31 +257,34 @@
} else if (d.paper_url) {
links.push('📄 Paper');
}
- // Artifact URLs (unified list)
+ if (d.appendix_url) links.push('📋 Appendix');
+ // Artifact URLs from scraped sources first, then ArtiFinder-discovered URLs.
var artUrlList = artUrls;
if (artUrlList.length === 1) {
var isGH = artUrlList[0].indexOf('github.com') !== -1;
- var lbl = isGH ? '💻 GitHub' : '📦 Artifact';
+ var isZenodo = artUrlList[0].indexOf('zenodo.org') !== -1;
+ var lbl = isGH ? '💻 GitHub' : (isZenodo ? '📦 Zenodo' : '📦 Artifact');
var avail1 = availabilityTag(artUrlList[0]);
links.push('' + lbl + '' + avail1);
} else {
artUrlList.forEach(function(u, i) {
if (u) {
var isGH = u.indexOf('github.com') !== -1;
- var lbl = isGH ? '💻 GitHub' : '📦 Artifact';
+ var isZenodo = u.indexOf('zenodo.org') !== -1;
+ var lbl = isGH ? '💻 GitHub' : (isZenodo ? '📦 Zenodo' : '📦 Artifact');
if (artUrlList.length > 1) lbl += ' #' + (i+1);
var availN = availabilityTag(u);
links.push('' + lbl + '' + availN);
}
});
}
- if (d.appendix_url) links.push('📋 Appendix');
// ArtiFinder-discovered links: not manually verified, no badges.
var afUrls = (d.artifinder_urls || []).map(normalizeUrl);
afUrls.forEach(function(u) {
if (!u) return;
var isGH = u.indexOf('github.com') !== -1;
- var lbl = isGH ? '💻 GitHub' : '📦 Artifact';
+ var isZenodo = u.indexOf('zenodo.org') !== -1;
+ var lbl = isGH ? '💻 GitHub' : (isZenodo ? '📦 Zenodo' : '📦 Artifact');
links.push('' + lbl + '' + artifinderTag());
});
var linksLine = links.length > 0 ? links.join(' · ') : '';
diff --git a/src/methodology/search-keywords.md b/src/methodology/search-keywords.md
index 723561a..07e65e7 100644
--- a/src/methodology/search-keywords.md
+++ b/src/methodology/search-keywords.md
@@ -25,4 +25,15 @@ The [search bar]({{ '/' | relative_url }}) supports special `#` keywords that fi
Keywords also work alongside the year, venue, and area dropdown filters.
+## Result Link Order
+
+In each search result card, links are displayed in this order:
+
+1. Paper
+2. Appendix
+3. Artifact links from scraped sources (for example, Zenodo or GitHub)
+4. Artifact links discovered by ArtiFinder
+
+When multiple artifact links are present, scraped links are shown before ArtiFinder links.
+
**Note on `#unavailable`:** Availability is determined by automated URL checks that run as part of the monthly pipeline. A URL marked as unavailable may be temporarily down, rate-limited, or require authentication. The hover tooltip on each flagged artifact shows when the check was last performed.