Skip to content

Commit b770998

Browse files
authored
Merge pull request #12022 from KATO-Hiro/#12021
refactor: Optimize lychee link exclusion configuration (#12021)
2 parents 8a18ca0 + 586d23c commit b770998

36 files changed

Lines changed: 120 additions & 180 deletions

.claude/rules/link-checking.md

Lines changed: 65 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,65 @@
1+
# Link Checking Guide
2+
3+
## For Contributors: Writing Links
4+
5+
### ❌ Do NOT Use HTML Comments
6+
7+
Lychee ignores inline comments—they have no effect:
8+
9+
```markdown
10+
<!-- markdown-link-check-disable -->
11+
[Link](https://example.com) ← Still checked
12+
<!-- markdown-link-check-enable -->
13+
```
14+
15+
### ✅ Write Standard Markdown
16+
17+
```markdown
18+
[Title](https://example.com/path)
19+
```
20+
21+
### CI Link Failures
22+
23+
If a link fails in CI:
24+
25+
1. Verify the URL is correct
26+
2. If unavailable, notify maintainers (don't use HTML comments)
27+
3. For entire pages with expected broken links, use config below
28+
29+
---
30+
31+
## For Maintainers: Configuration
32+
33+
Exclude links via frequency-based judgment:
34+
35+
### Domains (3+ occurrences) → `lychee.toml` `exclude`
36+
37+
```toml
38+
exclude = [
39+
"^https://www\\.estie\\.jp/",
40+
"^https://openai\\.com/",
41+
]
42+
```
43+
44+
### Pages (intentional broken links) → `lychee.toml` `exclude_path`
45+
46+
```toml
47+
exclude_path = [
48+
"docs/archived/broken_links\\.md",
49+
"docs/archived/no_longer_available\\.md",
50+
]
51+
```
52+
53+
### Individual URLs (<3 occurrences) → `.lycheeignore`
54+
55+
```
56+
https://example.com/one-off-url
57+
https://another.example/specific-path
58+
```
59+
60+
## When to Exclude
61+
62+
- HTTP 403 (Forbidden) to automated requests
63+
- Authentication or cookies required
64+
- Rate limiting without retry support
65+
- Known dead links or archived mirrors

.claude/rules/tools.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,5 +26,5 @@
2626

2727
| Tool | Version | Role | Constraints |
2828
|---|---|---|---|
29-
| lychee | 0.x (via lychee-action) | Automated link validation (GitHub Actions) | Configuration in `lychee.toml`. Do not run link checks locally with `curl` or `wget`. Weekly scheduled scan + PR checks. |
29+
| lychee | 0.x (via lychee-action) | Automated link validation (GitHub Actions) | Configuration in `lychee.toml` (domain patterns) and `.lycheeignore` (individual URLs). Does NOT support inline HTML comments (`<!-- markdown-link-check-disable -->`). See `.claude/rules/link-checking.md` for strategy. Weekly scheduled scan + PR checks. |
3030
| lychee-action | v2.8.0 | GitHub Actions integration for lychee | Used in `.github/workflows/` for link checking |

.github/workflows/link_checker.yml

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ name: Check Markdown links with scheduled job
22

33
on:
44
schedule:
5-
- cron: "30 15 * * 2" # Every Wednesday at 0:30 JST (Tue 15:30 UTC)
5+
- cron: "30 15 * * 2" # Every Wednesday at 0:30 JST (Tue 15:30 UTC)
66

77
jobs:
88
lychee:
@@ -19,5 +19,6 @@ jobs:
1919

2020
- uses: lycheeverse/lychee-action@8646ba30535128ac92d33dfc9133794bfdd9b411 # v2.8.0
2121
with:
22-
args: --cache --max-cache-age 14d --quiet "docs/**/*.md" "monthly_changelog/**/*.md" "README.md" "CONTRIBUTING.md"
22+
args: --cache --max-cache-age 14d --quiet "docs/**/*.md" "README.md"
23+
"CONTRIBUTING.md"
2324
fail: true

.github/workflows/link_checker_for_modified_files.yml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
name: Check Markdown links for modified files
22

3-
on: [pull_request]
3+
on: [ pull_request ]
44

55
jobs:
66
lychee:
@@ -16,7 +16,6 @@ jobs:
1616
with:
1717
files: |
1818
docs/**/*.md
19-
monthly_changelog/**/*.md
2019
README.md
2120
CONTRIBUTING.md
2221
@@ -31,5 +30,6 @@ jobs:
3130
- uses: lycheeverse/lychee-action@8646ba30535128ac92d33dfc9133794bfdd9b411 # v2.8.0
3231
if: steps.changed-files.outputs.any_changed == 'true'
3332
with:
34-
args: --cache --max-cache-age 14d --quiet ${{ steps.changed-files.outputs.all_changed_files }}
33+
args: --cache --max-cache-age 14d --quiet ${{
34+
steps.changed-files.outputs.all_changed_files }}
3535
fail: true

.lycheeignore

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
http://127.0.0.1:8000/
2+
https://codepen.io/uchi8977/full/gbpGOzY
3+
https://codezine.jp/article/detail/23366
4+
https://dev.classmethod.jp/articles/atcoder_change_color_brown/
5+
https://dic.nicovideo.jp/a/%E3%83%9E%E3%83%AB%E3%82%B3%E3%83%95%E3%82%A2%E3%83%AB%E3%82%B4%E3%83%AA%E3%82%BA%E3%83%A0
6+
https://forest.watch.impress.co.jp/docs/news/1422840.html
7+
https://hackall.tech/
8+
https://levtech.jp/media/detail_831/
9+
https://nadesi.com/top/
10+
https://upura.github.io/everyday-kaggle-news/
11+
https://weeklykagglenews.substack.com

docs/archived/migrate_servers.md

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,6 @@ title: サーバの移行中
44

55
[Heroku](https://www.heroku.com)の無料プラン終了に伴い、サーバの移行が検討されているサービス・ツールなどを掲載しています。新しいサーバでの稼働を確認した段階で、元のページに戻す予定です。
66

7-
<!-- markdown-link-check-disable -->
8-
97
## Webアプリ、Webサイト
108

119
### 問題を解く
@@ -68,5 +66,3 @@ title: サーバの移行中
6866
<div align="center">
6967
<img loading = "lazy" src="../../images/related_contest_sites/leetcode/leetcode_stats.png" alt="leetcode stats">
7068
</div>
71-
72-
<!-- markdown-link-check-enable -->

docs/archived/outdated_information.md

Lines changed: 0 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -85,8 +85,6 @@ title: 更新停止の可能性が高い
8585

8686
### コンテストの成績を見る
8787

88-
<!-- markdown-link-check-disable -->
89-
9088
- [AtCoder Heuristic Statistics](https://heuristic-statistics.herokuapp.com/) - [AtCoder Heuristic Contest](https://atcoder.jp/contests/archive?ratedType=0&category=1200&keyword=AtCoder+Heuristic+Contest)のレーティング分布を表示する。
9189

9290
- 理由: 記載なし。
@@ -96,8 +94,6 @@ title: 更新停止の可能性が高い
9694
<img loading = "lazy" src="../../images/web_app/atcoder_heuristic_statistics.png" alt="atcoder heuristic statistics">
9795
</div>
9896

99-
<!-- markdown-link-check-enable -->
100-
10197
- [AtCoderマラソンランキング](https://tomerun.github.io/atcoder_marathon_ranking/index.html) - マラソン系コンテストの順位を[AtCoder レースランキング](https://atcoder.jp/posts/170)と同じ形式でポイント化し、ランキングをつける。
10298

10399
- 理由: 記載なし。
@@ -170,8 +166,6 @@ title: 更新停止の可能性が高い
170166

171167
### コンテスト後の情報収集・発信
172168

173-
<!-- markdown-link-check-disable -->
174-
175169
- [AtCoder Friend Finder](http://atcoder-friend-finder.herokuapp.com/) - [Twitter](https://twitter.com/)でフォローしている[AtCoder](https://atcoder.jp/)ユーザを表示する。
176170

177171
- 理由: 記載なし。
@@ -184,8 +178,6 @@ title: 更新停止の可能性が高い
184178
!!! warning "注意"
185179
2021年6月以降、更新が行われていない可能性がある。
186180

187-
<!-- markdown-link-check-enable -->
188-
189181
## Bot
190182

191183
### 問題の解答状況・記録を確認する
@@ -365,8 +357,6 @@ title: 更新停止の可能性が高い
365357

366358
### コンテストに参加する
367359

368-
<!-- markdown-link-check-disable -->
369-
370360
- [Coder's Calendar](https://chrome.google.com/webstore/detail/coders-calendar/bageaffklfkikjigoclfgengklfnidll?hl=ja&gl=UA) - 開催予定のコンテスト情報を表示する。[Codechef](https://www.codechef.com/)[HackerEarth](https://www.hackerearth.com/)[Hackerrank](https://www.hackerrank.com/)[Topcoder](https://www.topcoder.com/)[Codeforces](https://codeforces.com/)[CSAcademy](https://csacademy.com/)[LeetCode](https://leetcode.com/)[Kaggle](https://www.kaggle.com/)などにも対応している。
371361
- 確認した日: 2025/03/08
372362

@@ -381,8 +371,6 @@ title: 更新停止の可能性が高い
381371
<img loading = "lazy" src="../../images/chrome_extension/coding_schedule.jpg" alt="coding schedule">
382372
</div>
383373

384-
<!-- markdown-link-check-enable -->
385-
386374
- [KONTESTS](https://chrome.google.com/webstore/detail/kontests/agpdemlkalmmeenclchlajdcmbcacoea?hl=ja&gl=UA) - コンテスト情報を表示する。[Codeforces](https://codeforces.com/)、Codeforces::Gym、[TopCoder](https://www.topcoder.com/)[CSAcademy](https://csacademy.com/)にも対応している。
387375
- 確認した日: 2025/03/08
388376

@@ -502,14 +490,10 @@ title: 更新停止の可能性が高い
502490
- [大実験!ChatGPTは競プロの問題を解けるのか (2024年5月版)](https://e869120.hatenablog.com/entry/2024/05/15/100804) - 筆者がオリジナルの問題を作成し、GPT-4oの回答性能を実験・調査している。
503491
- [競技プログラミングとChatGPTを含むAIについて](https://chokudai.hatenablog.com/entry/2022/12/07/161959) - [ChatGPT](https://openai.com/blog/chatgpt/)の公開に伴い、[AtCoder](https://atcoder.jp/)社長の[chokudai](https://twitter.com/chokudai)さんが個人的な見解を述べた記事。AIの実力、競技性や教育への影響、コンテストでの使用の是非などについて言及されている。
504492

505-
<!-- markdown-link-check-disable -->
506-
507493
- [ChatGPTに競技プログラミングさせてみた【AtCoder】](https://qiita.com/relu/items/6cc9467748d580f50cfd) - [ChatGPT](https://openai.com/blog/chatgpt/)を利用して、[AtCoder](https://atcoder.jp/)で出題された問題を解いている記事。
508494
- [GPT-4は青色コーダーの夢を見るか](https://qiita.com/autotaker1984/items/2929937cd1fea6137d1f) - [GPT-4](https://openai.com/research/gpt-4)を利用して、[AtCoder](https://atcoder.jp/)の過去問をどこまで解けるか調査した記事。AIで解くのが難しい問題の種類や競技プログラミングにおける活用の方向性についても言及されている。
509495
- [ChatGPT3.5&4.0で競技プログラミングAtCoderの問題のスキル推定を検証しました](https://note.com/chatgpt_nobdata/n/n2d5769ebb622) - AtCoder Beginners Contest (通称ABC)のA〜C問題を対象として、解くために必要なスキルを推定・検証している記事。
510496

511-
<!-- markdown-link-check-enable -->
512-
513497
### 実装テクニックを学ぶ
514498

515499
#### C&#43;&#43;

docs/articles/algorithm.md

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -135,9 +135,7 @@ title: アルゴリズムを学ぶ
135135

136136
- [LISでも大活躍! DPの配列使いまわしテクニックを特集](https://qiita.com/drken/items/68b8503ad4ffb469624c) - 動的計画法において、配列を再利用することで、メモリの節約や根本的な計算量の改善につなげる方法をまとめた記事。ナップサック問題や最長増加部分列問題などが題材として扱われている。
137137
- [知名度がいまいち分かってないNextDPというテクニックについて](https://qiita.com/H20/items/922cc0a17ba5817f26d7) - 直前の状態のみ関心があり、そこから遷移する場合に高速化・省メモリ化を図る方法・Pythonの実装例が紹介されている。
138-
<!-- markdown-link-check-disable -->
139138
- [DP高速化:累積和](https://drken1215.hatenablog.com/archive/category/DP%E9%AB%98%E9%80%9F%E5%8C%96%3A%E7%B4%AF%E7%A9%8D%E5%92%8C) - [drken](https://atcoder.jp/users/drken)さんによる過去問の解説集。動的計画法を用いる問題の計算量改善に累積和が効果的な例題がまとめられている。
140-
<!-- markdown-link-check-enable -->
141139

142140
### 全方位木DP
143141

docs/articles/club_activities.md

Lines changed: 0 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -29,12 +29,8 @@ title: 部活・サークル・同好会・オンサイトイベントに参加
2929
- [実装力底上げを目指して、社内で「バーチャルコンテスト」を開催している話](https://note.com/dev_onecareer/n/n5f486629806d) - 株式会社ワンキャリアの有志がさらなる技術力向上を目指して、社内バーチャルコンテストの企画・実践内容を紹介した記事。
3030
- [社内ヒューリスティックコンテスト@アルゴ合宿2023 開催レポート](https://media.algo-artis.com/posts/bN4vP1cR) - 株式会社 ALGO ARTISの合宿で社内ヒューリスティックコンテストが開催された経緯・当日の様子・問題の解法まで紹介されている。
3131

32-
<!-- markdown-link-check-disable -->
33-
3432
- [AtCoder のコンテストスポンサーを通して、「とにかく強い仲間を集めたい」「もっと良い仕組みを作り、世の中の豊かさを増やしたい」「本気で物事に取り組んできた人に門戸を広げたい」と、叶えたいことを全てやろうとする話](https://www.estie.jp/blog/entry/2025/10/16/122042) - 株式会社estie の有志がAtCoderでのコンテスト開催・スポンサー活動を通して実現したいことや、それらの活動の背景にある思いがつづられている。
3533

36-
<!-- markdown-link-check-enable -->
37-
3834
## セミナーの開催案内
3935

4036
- [2026年度 第1回ORセミナー『競技プログラミングとOR: 研究と実務に活かす競プロスキル』](https://smms.kktcs.co.jp/smms2/event/orsj/92) - 競技プログラミングの面白さ・取り組む意義に加えて、研究や実務での活用事例が紹介される予定。
@@ -53,35 +49,23 @@ title: 部活・サークル・同好会・オンサイトイベントに参加
5349

5450
#### 2025
5551

56-
<!-- markdown-link-check-disable -->
57-
5852
- [CodeQUEEN 2025 に協賛しました!弊社メンバーが入賞しました!](https://www.estie.jp/blog/entry/2025/08/06/101041) - [CodeQUEEN 2025 決勝](https://atcoder.jp/contests/codequeen2025-final-Public)の協賛者による当日レポート。入賞者のコメントやスポンサーとしての活動内容がまとめられている。
5953

60-
<!-- markdown-link-check-enable -->
61-
6254
- [CodeQUEEN 2025 参加記](https://momoharahara.hatenadiary.com/entry/2025/08/03/003143) - 同大会の優勝者による参加記。予選突破から決勝参加までの練習方針と内容、当日のコンテストや懇親会・オフ会などを振り返っている。
6355
- [CodeQUEEN2025決勝に出場しました!【4位!】](https://ayuna-stpyko.github.io/my_blog/archive/20250806.html)[CodeQUEEN2025の決勝に行った話](https://note.com/rieul/n/nc12ca268c87c) - 同大会決勝の入賞者・参加者による参加記。予選通過前後の状況・大会直前の練習内容・当日のコンテストの考察と振り返り・懇親会・オフ会などに言及されている。
6456

6557
#### 2024
6658

67-
<!-- markdown-link-check-disable -->
68-
6959
- [「CodeQUEEN 2024」決勝にスポンサーとして参加してきました!](https://note.e-seikatsu.info/n/n58a992f584f4) - 昨年に続き、[CodeQUEEN 2024 決勝](https://atcoder.jp/contests/codequeen2024-final-N9tn8QqD)の協賛者が当日を振り返った記事。主にコンテストの表彰式・懇親会について言及している。
7060

71-
<!-- markdown-link-check-enable -->
72-
7361
- [総勢217名の女性競技プログラマーが参加 女性競技プログラミングコンテスト「CodeQUEEN」結果発表](https://prtimes.jp/main/html/rd/p/000000048.000028415.html) - 同コンテストの開催経緯と優勝者・上位入賞者のコメントがまとめられている。
7462
- [CodeQUEEN2024で優勝しました](https://www.forcia.com/blog/002983.html) - 同コンテストの優勝者が当日を振り返った参加記。配点に基づいた戦略・各問題の図解に加え、スポンサー活動にも言及されている。
7563
- [CodeQUEEN 2024参加記](https://momoharahara.hatenadiary.com/entry/2024/08/07/122348) - [CodeQUEEN 2024 決勝](https://atcoder.jp/contests/codequeen2024-final-N9tn8QqD)の参加記。本番までの練習内容・コンテスト当日の振り返り・各種イベント・オフ会などについてまとめられている。
7664

7765
#### 2023
7866

79-
<!-- markdown-link-check-disable -->
80-
8167
- [「CodeQUEEN 2023」にスポンサーとしておじゃましてきました!](https://note.e-seikatsu.info/n/n423fde3ccf32) - [CodeQUEEN 2023 決勝](https://atcoder.jp/contests/codequeen2023-final-open)の協賛者が当日を振り返った記事。スポンサー参加の経緯、会場のスナップショット、スポンサーセッション、座談会、コンテストおよび結果発表・表彰式、懇親会の様子がまとめられている。
8268

83-
<!-- markdown-link-check-enable -->
84-
8569
- [CodeQUEEN2023でスポンサーをしたり優勝したりした話](https://www.forcia.com/blog/002760.html) - [CodeQUEEN 2023 決勝](https://atcoder.jp/contests/codequeen2023-final-open)に、個人と会社の両方の立場からイベントの参加内容を報告している記事。スポンサー参加までの経緯やコンテストの振り返りだけでなく、同イベントから高校生のインターンの受け入れと実務的な成果につながったことも言及されている。
8670
- [CodeQUEEN2023決勝に出場しました!](https://ayuna-stpyko.github.io/my_blog/archive/20231023.html)[女性オンリーオンサイトイベント【CodeQUEEN 2023】に参加した話](https://d-burioden.hateblo.jp/entry/2023/10/23/220439)[CodeQUEEN 2023 決勝 参加記](https://abvi.hatenablog.com/entry/2024012600) - 同イベントの参加記。オンサイトイベントへの参加決定までの経緯・コンテストの振り返り・各種イベント・オフ会などについてまとめられている。
8771

docs/articles/heuristic.md

Lines changed: 1 addition & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -194,12 +194,8 @@ title: ヒューリスティック問題を解く
194194

195195
#### コンテスト企画者の振り返り
196196

197-
<!-- markdown-link-check-disable -->
198-
199197
- [企画者目線で振り返るestie プログラミングコンテスト2022](https://www.estie.jp/blog/entry/2022/12/14/110000) - [matsu7874](https://atcoder.jp/users/matsu7874)さんが、企画・運営の立場から[estie プログラミングコンテスト2022(AtCoder Heuristic Contest 014)](https://atcoder.jp/contests/ahc014)を振り返った記事。
200198

201-
<!-- markdown-link-check-enable -->
202-
203199
- [ALGO ARTISプログラミングコンテスト writerインタビュー アルゴリズムエンジニア松尾が語るコンテストの舞台裏](https://media.algo-artis.com/posts/8A4hMugo) - [ALGO ARTIS プログラミングコンテスト2023(AtCoder Heuristic Contest 020)](https://atcoder.jp/contests/ahc020)のwriterである[terry_u16](https://atcoder.jp/users/terry_u16)さんへのインタビュー記事。コンテスト開催までの経緯、問題の作成・調整の過程とコンテスト当日の状況などがまとめられている。
204200
- [1000人を熱狂させる問題はこうして作る – AHC Writer の奮闘記](https://note.com/algoartis/n/na09ebec91106) - [ALGO ARTIS プログラミングコンテスト2025 冬(AtCoder Heuristic Contest 041)](https://atcoder.jp/contests/ahc041)における問題の準備からコンテスト当日までの流れが時系列順に紹介されている。
205201

@@ -245,11 +241,7 @@ title: ヒューリスティック問題を解く
245241

246242
- [AWS上にマラソンマッチ用のジャッジ環境を作った](https://yunix-kyopro.hatenablog.com/entry/2022/07/02/134251) - ヒューリスティック型コンテストにおいて、大量のテストケースをAWS環境で処理する方法が紹介されている記事。
247243

248-
<!-- markdown-link-check-disable -->
249-
250-
- [「AWS上にマラソンマッチ用のジャッジ環境を作った」をChatGPTに投げて、Lambdaを使ったAHC用のジャッジ環境を作る。](https://shindannin.hatenadiary.com/entry/2023/06/19/100655) - [ChatGPT](https://openai.com/blog/chatgpt/)による質問・回答を繰り返しながら、AWS環境の構築過程とエラーへの対処方法が紹介されている。
251-
252-
<!-- markdown-link-check-enable -->
244+
- [「AWS上にマラソンマッチ用のジャッジ環境を作った」をChatGPTに投げて、Lambdaを使ったAHC用のジャッジ環境を作る。](https://shindannin.hatenadiary.com/entry/2023/06/19/100655) - [ChatGPT](https://openai.com/blog/chatgpt/)による質問・回答を繰り返しながら、AWS環境の構築過程とエラーへの対処方法が紹介されている。
253245

254246
- [私のスコア問題評価環境](https://topcoder-tomerun.hatenablog.jp/entry/2024/04/06/201915) - [tomerun](https://atcoder.jp/users/tomerun)さんが、大量のテストケースを低価格で評価する方法(AWS Batch)を紹介している。
255247

0 commit comments

Comments
 (0)