docs: fix broken purchase and wiki links across all languages, add link-check CI - #58
Merged
ZhuYaoHui1998 merged 1 commit intoAug 17, 2026
Conversation
Every link in every markdown file was checked (203 unique external URLs, 915 relative paths). Six classes of breakage, each repeated across the translated copies: - DM4310(V4) motor: seeedstudio p-6660 is 404 since the product was relisted. Now points at Damiao-4310-Actuator-Motor-p-6823, whose $120.00 price matches the BOM line. - AliExpress purchase link: pasted out of a Feishu sheet, so it pointed at Feishu's link-safety interstitial (now 404) and the paste duplicated part of the query string, closing the href attribute early. Replaced with the decoded destination. - IMU/gyroscope wiki link: no Sensor/IMU/ path exists on the wiki; the live category hub is Sensor_accelerometer. - Four Amazon links had no scheme, so markdown resolved them as relative paths under the repo and all 404'd. - Power-supply anchors used readme.md/#about-power-supply; the trailing slash turns a file reference into a directory reference. - Two shields.io badge URLs contained characters that need escaping (a literal space, and a raw emoji). Add .github/workflows/link-check.yml (lychee, SHA-pinned) on markdown pull requests and weekly, plus .lycheeignore for the marketplaces and social platforms that block CI runners outright. Closes Seeed-Projects#57 Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This was referenced Aug 20, 2026
ZhuYaoHui1998
pushed a commit
that referenced
this pull request
Aug 22, 2026
The weekly link check has been failing on main since 2026-08-17. Two links, in README_Fr.md and README_JP.md, target ./hardware/reBot_B601_RS/readme.md, but that directory holds README.md in uppercase — the RS folder uses README.md while the DM folder beside it uses readme.md. GitHub serves paths case-sensitively, so both 404. These slipped through review in #58 because that verification ran on a case-insensitive Windows filesystem, where readme.md resolves to README.md and reports as fine. The CI job runs on ubuntu-latest, which is why it caught them on its first scheduled run. Closes #60 Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This was referenced Sep 4, 2026
ZhuYaoHui1998
pushed a commit
that referenced
this pull request
Sep 7, 2026
Merge commit 11f09f7 resolved README conflicts in favour of a local branch that predated #58, #61 and #63, reverting all of their README changes. The same merge dropped LAN-GER's community row for the Isaac Sim-to-Real VLA course (af00e42), whose GIF is still in community/ with nothing pointing at it. Nothing was force-pushed — the commits are all still ancestors of main; the content was resolved away by hand across five large files, which leaves no obvious trace. Restored, by re-applying onto current main rather than reverting the merge, so the newer work in it survives (the DLI course link, the Star Arm 102 purchase links, the isaacsim wiki link): - Feishu redirect back to the AliExpress product (4 files) - Sensor/IMU 404 back to Sensor_accelerometer (5 files) - shields.io badges re-escaped: the literal space and the raw emoji - readme.md/#about-power-supply trailing slash (4 files) - RS BOM links back to README.md, which is the real filename (2 files) - zh: reach back to 767 mm, reSpeaker row restored, RS Isaac Sim back to completed; fr and jp likewise - jp: the RS roadmap table back to Japanese from the French copy - LAN-GER's VLA course row, in each language's own wording Neither check could have caught this: both only run on pull_request, and these commits were pushed straight to main. link-check would have waited for its Monday schedule; readme-sync has no schedule, so it would never have run at all. Both now also run on push to main, and readme-sync gets the same weekly schedule link-check has. Closes #79 Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
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.
Closes #57
What this changes
Fixes every broken link I could find in the repository's markdown, in all five languages, and adds CI so the next one is caught by a check rather than by a user filing an issue (#3, #8, #13, #54 were all link fixes found by hand).
…/DIP-Servo-Motor-24V-120RPM-…-p-6660.html→ 404Damiao-4310-Actuator-Motor-p-6823.htmlreadme.md,_es,_fr,_jp"mid-URL that closed thehrefearlyhttps://de.aliexpress.com/item/1005012108314029.htmlREADME.md,_es,_Fr,_JPwiki.seeedstudio.com/Sensor/IMU/→ 404Sensor_accelerometer/[Amazon](amazon.com/…)— no scheme, resolved as a repo-relative pathhttps://www.amazon.com/…readme.md, RSREADME.md,README_zh.mdreadme.md/#about-power-supply— trailing slash makes it a directoryreadme.md#about-power-supplyREADME.md,_Fr,_JP,_zhbadge/Framework-Isaac Sim-…(literal space) andbadge/Documentation-📕-blue(raw emoji)%20/%F0%9F%93%95The DM4310 replacement is the same motor at the same price the BOM already states ($120.00/unit, 4 per arm) — it is the single link most likely to stop a build, so it is worth a maintainer's second look.
The CI part
.github/workflows/link-check.ymlruns lychee on pull requests touching**/*.mdand weekly on Monday. Notes on the configuration:--root-dir "$(pwd)"is required here — the READMEs link to repository-root paths like/hardware/…and/community/…, which otherwise resolve against the filesystem root.--accept 200,206,403,429: several stores answer datacentre IPs with 403/429. A delisted product still answers 404, which is what this job exists to catch..lycheeignoreexcludes hosts that block CI runners outright (Amazon, AliExpress, Taobao, Tmall, X, LinkedIn, Instagram, Kaggle, Discord invites). Without it the job would be permanently red and therefore ignored. That is 95 of the 203 external URLs; the remaining 108 — Seeed store pages, the Seeed wiki, GitHub repos, shields.io — are the ones that actually go stale in a way CI can detect.Anchor checking (
--include-fragments) is deliberately left off for now: heading anchors in the CJK and emoji-heavy documents are the most likely source of false positives, and I would rather this check start out trustworthy. Easy to add later.Verification
.lycheeignoreand the workflow's accept-list, reports 0 broken out of 108 checked external URLs and 0 broken out of 915 relative targets. That is the state the workflow should reproduce on its first run.Sensor_accelerometerreturns 200 with title "Sensor - Accelerometer"; both badge URLs return 200image/svg+xml.### About Power Supply,### 关于电源).actionlintv1.7.12 passes on the new workflow — exit 0, no findings.Not verified by a live run: GitHub does not register workflows on a fresh fork without enabling them through the Actions UI, so I could not execute the lychee job itself; the checks above are the closest equivalent I could run locally. The AliExpress destination in fix #2 is the decoded target of the wrapper URL — AliExpress blocks this environment, so I could not confirm the listing is still live, only that the link as written today is broken.
🤖 Generated with Claude Code