1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

猫ぬいぐるみ欲しさに締切日に連投したら、Qiita APIのレート制限に引っかかった話

1
Posted at

はじめに

Qiita Tech Festa 2026記事数部門・20記事達成 でもらえる Qiitan ぬいぐるみ が欲しくて、執筆環境を整えて記事を書いてきました(笑)

執筆そのものはだいたい回るようになったのに、締切日(7/13)に 新規記事を10本 push したところ、10本目顔文字ホワイトリストの記事 で GitHub Actions がコケたんです。
エラーは QiitaRateLimitError一定時間内の投稿数制限 です。

猫ぬいぐるみのために量産体制を作ったのに、最後の関門で API に止められた……。
打算の塊が報いを受けた話です (´﹃`)

この記事は、笑い話として「何が起きたか」と「次にどうするか」をメモしたものです。
同じように キャンペーン の締切前に走っている方の参考になれば嬉しいです。

想定読者

  • Qiita Tech Festa 2026 のようなキャンペーンで記事数を稼いでいる方
  • Qiita CLI + GitHub Actions で main push 投稿している方
  • 「push したのに Qiita に出ない!」と焦った経験がある方
  • インフラの失敗談が好きな方 (=^・ω・^=)

私の属性

何が起きたか

背景:20記事と猫ぬいぐるみ

Qiita Tech Festa 2026Qiita Award・記事数部門 では、期間中(2026/6/1〜7/13)に対象キャンペーンへ投稿した記事数で賞が決まります。

達成数 賞品(公式ページより)
20記事 Qiitan ぬいぐるみ + 電子バッジ + サイト内に Qiita ID 掲載
10記事 電子バッジ + サイト内に Qiita ID 掲載
1記事ごと 電子バッジ

私の目標は 20記事=猫ぬいぐるみ です。
そのために drafts/ で下書き → npm run promotegit push という流れを回してきました。

7/13 が Sprint の投稿締切日。
「あと数本! push すれば Actions が投稿してくれる!」という気持ちで、締切日に記事をまとめて公開しようとしました。

エラー:QiitaRateLimitError

0015(顔文字ホワイトリストの記事) を promote して main に push したところ(21:51)、GitHub Actions の Publish articles が失敗。

ログに出ていたメッセージはこんな感じでした。

QiitaRateLimitError: サービスの安定運用のため、一定時間内の投稿数を制限させていただいております。
下書き保存の上、しばらく時間をおいてから再度お試しください。

CLI 側の表示も同様で、

Qiita APIのレートリミットに達しました
  しばらく時間を置いてから再度お試しください

記事の中身や Front Matter の問題ではなく、短時間に投稿しすぎた 側のエラーでした。

……せっかく 0015 を仕上げたのに、Qiita 側が「ちょっと待って」と言ってきたんです。。。。(lll __ __)バタッ

(追記:22:15 に npx qiita publish で単体投稿したら通りました。この記事 0016 を書いている時点では、0015 は Qiita に載っています)

なぜ締切日に刺さったか

振り返ると、原因はシンプルです。

7/13(締切日)だけで、新規記事を10本 promote → push していた んです。
内訳は git のコミット時刻(JST)ベースです。

時刻 (JST) 記事 結果
00:34 0006 投稿成功
07:04 0007 投稿成功
12:36 0008 投稿成功
12:49 0009 投稿成功(12分後。ここだけ見ると 13分で2本
18:16 0010 投稿成功
19:45 0011 投稿成功
20:15 0013 投稿成功
20:48 0012 投稿成功
21:40 0014 投稿成功
21:51 0015 Actions で レート制限で失敗
22:15 0015 npx qiita publish投稿成功(24分後に再試行)

21:51 の push 時点では、その日の新規投稿は 9本成功・0015だけ失敗
0014(21:40)から 11分後 に 0015 を追い込んだところで、Actions 側は止められました。

夕方以降だけ見ると、19:45〜21:51 の 約2時間で5本(0011 → 0013 → 0012 → 0014 → 0015)を連続 push していました。
環境は量産向けに作ったのに、締切日に 一日で10本 出そうとしたのが裏目に出た感じです(笑)

あわせて、

  • GitHub Actions は qiita publish --all で差分を一気に反映する
  • 新規投稿以外の 既存記事の更新 push も、その日は何度か走っていた(クロスリンク追加など)

つまり 「環境は量産向け。でも API は連投を許さない」 というギャップに引っかかりました。

執筆環境を整えた記事では「あとは手を動かすだけ」と書いていたのに、最後は 待つ ことになりそうです(笑)
自分で自分のフラグ回収をしている気分です (´・ω・`)

対処:時間をおいて、1本ずつ投稿

やったこと

  1. git push 自体は成功している(public/ には記事がある)
  2. Qiita への反映だけ Actions が失敗(21:51、22:02 の Re-run も失敗)
  3. 15分ほど空けて、Actions ではなく npx qiita publish で1本だけ 投稿

0015 は次のコマンドで通りました(22:15 実行)。

npx qiita publish 0015-qiita-kaomoji-whitelist

publish --all(Actions が使う方式)だと差分をまとめて送るので、レート制限に当たりやすい。
1本ずつ npx qiita publish <basename> のほうが、間隔を空けやすかったです。

0016 も同じやり方で出す予定です(0015 の 12〜15分後 が目安)。

学んだこと

やりがち おすすめ
締切日にまとめて push 可能なら 前日までに何本か出す
publish --all で一括反映 npx qiita publish <1本> で間隔を空ける
失敗したらすぐ連打で Re-run 12〜15分空けて 再試行
Actions 失敗=記事が消えた public/ にあれば ローカルは OK。反映待ち

drafts/public/ を分けているおかげで、記事ファイル自体は消えませんでした。
焦ったのは「ぬいぐるみに間に合うか」だけです (_・ω・)_バァン…

意識していること

  • 量産の仕組みAPI の投稿制限 は別問題
  • レート制限は記事のバグではないので、まずログの QiitaRateLimitError を見る
  • Tech Festa の締切(7/13 23:59)に近いほど、同じタイミングで投稿する人も増えそう
  • ぬいぐるみ欲しさは否定しない。でも 連投は API に止められる と割り切る

次回からは「締切当日に全部出す」ではなく、バッファを1〜2本残す 運用にしたいです。
猫は待ってくれると信じたい。(=^・ェ・^=)

まとめ

  • Qiita Tech Festa 2026 の猫ぬいぐるみ目当てで記事を量産していたら、締切日(7/13)に 新規10本 push して 10本目(0015) で Qiita API のレート制限に引っかかった
  • git push は成功しても、Actions の qiita publish --allQiitaRateLimitError で落ちることがある
  • 15分空けて npx qiita publish で1本ずつ 出すと通った(0015 は 22:15 に投稿成功)

打算の塊が最後の関門で躓いたのは事実ですが、0015 は待って単体投稿で通りました(笑)

同じように Sprint 締切前に走っている方は、連投より 12〜15分間隔で1本ずつ 出すのを意識してみてください。
読んでくれてありがとうございました。m(_ _)m

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?