crosstechlab
WIP(現在進行中)
Work In Progress
このプロジェクトで現在進行中の作業と、過去のスナップショットを記録する。
現在の状況
フェーズ: 停止・塩漬け。Cross Tech Lab はテーマ再考の結果ピボット、別ドメイン entameen.com で新プロジェクトを立ち上げる方針が確定。crosstechlab.com は別用途への転用先が決まるまで塩漬け運用。
最終的な経緯:
- 立ち上げ: Phase A〜D 完走、第1本目記事まで自動生成・公開達成
- リブランディング 1回目(2026-05-13): 「個人開発者向け AI 解説」→「非エンジニア向け『AIで作れる』実証メディア」
- ピボット決定(2026-05-15): Ahrefs との適性を考慮し、ジャンルそのものを「エンタメ・芸能・テレビ番組」に転換。新ドメイン
entameen.comで別プロジェクトとして立ち上げる判断
現在の本番状態(Cross Tech Lab):
- 公開URL:
https://crosstechlab.com/ - 公開ページ:
/about/、/privacy/、/contact/、/categories/、/categories/announcement/、トップ - 記事は about の1本のみ
- 当面コンテンツ追加なし、塩漬け状態
新プロジェクト entameen の準備:
- ドメイン:
entameen.com取得済み(お名前.com、¥947、初年度キャンペーン) - ジャンル: エンタメ・芸能・テレビ番組
- 切り口: 解説・背景 + まとめ・展開予測(速報ではない)
- 画像方針: Gemini で完全生成、肖像権リスク回避
- 基盤: 新規(
~/cdev/entameen/、別 GitHub リポジトリ) - 立ち上げ手順: 別セッションで
new-project-setupSkill 実行
Cross Tech Lab の資産(流用可能 or 残置):
- ドメイン
crosstechlab.com(年¥1,500〜¥1,800、転用先未定) - GA4 プロパティ・GSC ドメインプロパティ(流用不可、新プロジェクトで新規作成)
- API キー類(
.env内容、entameen で流用可能:Ahrefs / X / YouTube / Gemini) - Astro リポジトリ・Cloudflare Workers 設定(新プロジェクトで再構成)
.devnotes/蓄積された設計判断・教訓(履歴として参照).claude/commands/media-pipeline.md(パイプライン設計の参考、entameen 用に書き直し)
次にやること:
- 別セッションで
~/cdev/entameen/のnew-project-setup実行 - entameen プロジェクトで Astro 初期化、Cloudflare 連携、Ahrefs MCP 流用、.env 移植 or 再取得
- entameen 用の
media-pipeline.md設計(Cross Tech Lab 版を参考に、エンタメ系の特殊性を反映) - 画像生成プロンプトテンプレ(Gemini 完全生成版)
- 法的リスク回避ルール明文化
- Cross Tech Lab の転用先検討(個人ポートフォリオ、別軸メディア、塩漬け継続など)
詰まっていること: なし
月額コスト見込み(訂正版・約¥20,525/月):
- Ahrefs Lite: ¥19,900
- Gemini API: ¥500
- crosstechlab.com 更新: 約¥125(旧試算 ¥1,250 は誇張ミス)
- entameen.com 更新: 約¥125(来年から)
- ※ X / YouTube / GA4 / GSC は無料
過去のWIPアーカイブ
(新しい「現在の状況」を書く前に、古いものをここに追記でアーカイブする。新しいものが上)
2026-05-13 17:15 時点のスナップショット(リブランディング1回目直後)
フェーズ: 2026-05-13 全面リブランディング直後。方針ドキュメント全部書き直し完了、本番には記事0本の状態でリセット。新方針で第1本目を再生成する段階。
完了済み: Phase A 一式 / Phase B 一式 / AdSense 審査準備 / Phase C 設計 + 実装 / Phase D 試運転 / 全面リブランディング(CLAUDE.md / .claude/commands/media-pipeline.md 全書き直し、旧記事2本削除)
次にやること(当時): 新方針で第1本目本番記事を KW選定から生成、Yo の他プロジェクト記事素材棚卸し
→ その後の経過: 2026-05-15 にさらに抜本的なピボット判断、Cross Tech Lab プロジェクト自体を塩漬け化。
2026-05-13 16:42 時点のスナップショット(リブランディング直前)
フェーズ: 記事001(claude-code-mcp-setup)を方針判断で却下後、claude-code-usage(96点)を再生成して公開した直後。
完了済み: Phase A 一式 / Phase B 一式 / AdSense 審査準備 / Phase C 設計 + 実装 / Phase D 試運転 / 第1本目本番記事公開(96点)
直後に発生したフィードバック: Yo 自身が「自分が読んでも為にならない」と判断、抜本的なペルソナ・テーマ軸の転換を決断。
2026-05-13 15:53 時点のスナップショット
フェーズ: Phase A + B + AdSense 準備 + Phase C 設計+実装 + Phase D 試運転 まで完走。
2026-05-13 15:40 時点のスナップショット
フェーズ: Phase C 実装完了、Phase D 着手前。
2026-05-13 15:18 時点のスナップショット
フェーズ: Phase A + B + AdSense審査準備 + Phase C「設計確定+文書化」まで完了。
2026-05-13 14:10 時点のスナップショット
フェーズ: Phase A と Phase B 完走。
2026-05-12 20:49 時点のスナップショット
フェーズ: Phase A-7 を実質完了扱い、次は Phase B。
2026-05-12 18:15 時点のスナップショット
フェーズ: Phase A の 1〜6 完了。
2026-05-12 15:30 時点のスナップショット
フェーズ: Phase A(インフラ整備)。
ROADMAP(計画)
ロードマップ
2026-05-15 ピボット決定後の状態: Cross Tech Lab プロジェクトは停止・塩漬け。 新メディアは別ドメイン
entameen.comの別プロジェクトで進行する(~/cdev/entameen/予定)。 このロードマップは履歴として残し、Cross Tech Lab に関する未完了タスクは原則「いつか」枠へ移動済み。
今週
- Phase A 一式(インフラ整備、本番URL稼働まで)
- Phase B 一式(API キー取得:Ahrefs Lite / X / YouTube / Gemini)
- AdSense 審査準備(プライバシーポリシー / お問い合わせ / フッター / Email Routing)
- Phase C 設計確定 + 実装(Content Collections / レイアウト / カテゴリ / data/ / 画像プロンプト)
- Phase D 試運転(記事公開フロー検証、JSON-LD / OGP / サイトマップ全動作確認)
- リブランディング1回目(非エンジニア + 初級エンジニア向け「AIで作れる」実証メディア)
- ピボット決定(エンタメ・芸能・テレビ番組系、新ドメイン
entameen.comで別プロジェクト) - ドメイン料金試算の訂正
- 別セッションで
~/cdev/entameen/のnew-project-setupを実行(Yo 作業)
今月
- entameen 立ち上げ時に Cross Tech Lab から API キー・知見を移植
- Cross Tech Lab の転用先検討(ポートフォリオ / 別軸ブログ / 塩漬け継続)
今四半期
(Cross Tech Lab としてはなし、entameen 側で別途進行)
いつか
- Google Indexing API 復帰検討(個人 Gmail × ドメインプロパティへのサービスアカウント追加が Google 側で再び通るようになったらリトライ)
- ダウンロード済みサービスアカウント JSON キー(Indexing API 用)の処遇決定
- Cross Tech Lab の転用先決定(個人ポートフォリオ、別軸メディア、塩漬け継続)
- entameen が軌道に乗ったら、Cross Tech Lab を Web開発系・個人開発系のサブ媒体として再開する選択肢
- 売上立ち上がり次第、Ahrefs Standard プラン(¥38,400・2,000KW)への昇格検討(entameen 側で)
DECISIONS(意思決定)
意思決定記録
このプロジェクトで下した重要な意思決定を記録する。 最新が上に来る。
2026-05-15: Cross Tech Lab を停止し、別ドメイン entameen.com で「エンタメ・芸能・テレビ番組」系の新メディアを立ち上げる
背景: 5/13 に「非エンジニア向け『AIで作れる』実証メディア」へリブランディングを行った直後、改めて根本から見直したところ、(a) AI 解説系は SERP コモディティ化していて Ahrefs の真価が出にくい、(b) 「やってみた・作ってみた」系は自動化と相性が悪く Yo の手作業前提になりやすい、(c) Yo 自身が「価値ある記事と読者が感じるテーマでないと意味がない」と判断、という3点で更に抜本的なピボットが必要と結論した。Ahrefs Lite を月¥19,900 で契約しているため、Ahrefs と相性の良いテーマを選ぶこと自体が戦略上の最適化になる。
決定: Cross Tech Lab プロジェクトを停止し、新ドメイン entameen.com(お名前.com で ¥947 で取得済み)で エンタメ・芸能・テレビ番組系の新メディアを立ち上げる。
新メディアの方針:
- ジャンル: エンタメ・芸能・テレビ番組
- 切り口: 解説・背景 + まとめ・展開予測(速報ではない)
- 画像: Gemini で完全生成(実物そっくりにせず肖像権リスク回避)
- 基盤: 完全新規(
~/cdev/entameen/、別 GitHub リポジトリ、別 GA4・GSC プロパティ) - API キー: 既存 Cross Tech Lab の
.env(Ahrefs / X / YouTube / Gemini)を流用 - 立ち上げ手順: 別セッションで
new-project-setupSkill を発動
Cross Tech Lab(crosstechlab.com)は別用途での転用先が決まるまで塩漬け運用。本番 URL は about ページのみ残置、コンテンツ追加なし。ドメイン更新料は年¥1,500〜¥1,800 で塩漬けコストは軽微。
理由:
- Ahrefs との相性: 時事・ニュース・テレビ番組系は検索 KW のボリュームが安定的に大きく、トレンド KW も Ahrefs で捕捉できる。「やってみた・作ってみた」系の独自切り口より Ahrefs データが意味を持つ
- 自動化との相性: 解説・背景・まとめ・展開予測は AI 生成と相性◎、速報を狙わなければ Daily 9:00 1本ペースでも十分機能する
- 読者層の広さ: テレビ番組・芸能ニュースは誰もが気にする題材で、検索ボリュームが超大。「多くの人にとって価値ある記事」という Yo の判断軸を満たす
- 競合状況: 大手メディア(NHK・新聞系・週刊誌系)は強いが、解説・展開予測の角度で個人メディアでも勝てる余地がある
- ピボットコスト: 開発インフラ(Cloudflare / Astro / Ahrefs MCP / Gemini / X API / YouTube API / Email Routing)はテーマに依存せず流用可能。新ドメイン取得 ¥947 + 新プロジェクト立ち上げの工数のみ
- 法的リスク回避: 画像を Gemini で完全生成すれば肖像権リスクをほぼゼロにできる。実物そっくりにせず、抽象的・象徴的なイラストにする方針で運用ルール化
運用ルール:
- 芸能人の批判的論評を避ける(事実とコメントの分離)
- 引用元(番組名・URL)を必ず明示
- スキャンダル系・週刊誌系はリスク回避のため取り扱わない
- 番組タイトルや作品名は使うが、著作物本文の転載はしない
- 画像は Gemini で生成、実物そっくりは禁止(抽象的・象徴的に)
当面の Cross Tech Lab プロジェクトの扱い:
- 本リポジトリ
~/cdev/crosstechlab/は塩漬け、Git 履歴はそのまま保持 .devnotes/蓄積はプロジェクト履歴として残し、entameen からも参照可能にするcrosstechlab.comドメインは更新継続、転用先が決まったら再開- 移行作業中に追加で発見した知見は entameen 側に持っていく
2026-05-15: ドメイン料金試算の訂正(引き継ぎ.md の .com 年¥15,000 は誇張ミス)
背景: プロジェクト立ち上げ時の 引き継ぎ.md に「ドメイン crosstechlab.com 約¥1,250/月(年¥15,000)」と試算されており、その後の月額コスト見込みや WIP に同数字を引き継いでいた。実際にはお名前.com の .com 通常更新料は年¥1,500〜¥1,800 程度で、10倍誇張されていた。
決定: 月額コスト見込みの数字を実額ベースに訂正。
- 旧想定: 約¥21,650/月(ドメイン ¥1,250 込み)
- 実額: 約¥20,525/月(ドメイン ¥125 込み)
- 差: 月¥1,125、年¥13,500(誤差レベルだが正確に直す)
理由: 立ち上げ時の試算は雑見積もりで、実額検証を経ていなかった。新プロジェクト entameen.com でも同様の試算ミスをしないよう、運用フェーズ前に必ず実額をチェックする。
2026-05-13: 全面リブランディング — ペルソナとテーマ軸を「非エンジニア + 初級エンジニア向けの『AIで本当に作れる』実証メディア」へ転換
背景: 当初の Cross Tech Lab は「個人開発者・副業開発者向けの AI ツール解説」を狙っていたが、第1本目の本番記事(claude-code-mcp-setup → 却下、claude-code-usage → 公開)を実際に作って公開してみたところ、Yo 自身が「自分(エンジニア寄り)が読んでも為にならない」と判断した。SERP 上位は「徹底解説」「超完全ガイド」が法人メディアによって既に量産されており、個人開発者向け解説記事はコモディティ化が著しい。技術的な解説で SERP 上位を取りに行くのは、新規ドメイン×個人運営の Cross Tech Lab には不利な土俵だった。
決定: Cross Tech Lab の方向性を抜本的に転換する。
- ペルソナ: 個人開発者 → 非エンジニア + 初級エンジニア(PCは触れる、AI に興味、業務や副業や創作で AI を活用したい層)
- コンセプト: 「AI ツールの解説メディア」→ 「AI で本当にアプリ・Web・ツールが作れる時代を実証するメディア」
- テーマ軸: 「使い方を教える」→ 「やってみた・作ってみた」を見せる。創作・モノづくり寄り。AI × Web制作 / AI × アプリ開発 / AI × ノーコード / AI × デザイン / AI × API / AI × 創作
- EEAT-E: Yo の Cross Tech Lab 以外のプロジェクト(intelligence-bank / dev-timer / multi-purpose-lightsail-server1 / yclip.org 等)の制作ログを一次情報の核に据える
- KW 戦略: 汎用ハウツー(
claude code 使い方等)は避け、「○○ を AI で作る」「AI で◯◯」「AI × ◯◯」系を狙う - トーン: 専門用語は最小限、初出時に日常用語で必ず言い換え(API → 「他のサービスとデータをやり取りする仕組み」のように)
理由: Yo 自身が「自分が読んでも為にならない」と感じるレベルの記事を量産しても、(a) PV や AdSense 数字は伸びてもメディアとしての差別化が出ない、(b) Yo の精神衛生上も継続が難しい、(c) SERP 上位の法人メディアと真っ向勝負して勝てない。一方、「Yo がエンジニアとして AI で実際に動くものを作っているプロセス」を非エンジニアにも分かるように噛み砕いて見せる構図は、(a) Yo が教える側に明確に立てる、(b) 個人ブログ × Yo の制作体験 × 非エンジニア向け という3つの掛け算で真の差別化が生まれる、(c) AI 利用者の母集団は非エンジニアが圧倒的多数で市場規模が大きい、というメリットがある。
運用ルール(パイプラインへの反映、.claude/commands/media-pipeline.md 第5章「リブランディング前後の編集ルール」に恒久反映):
- Cross Tech Lab 自身の運営に関する題材は記事化しない(Ahrefs / SEO 自動化 / Cloudflare / 本パイプライン等)
- Yo の制作体験は別プロジェクトから引く
- 「使い方解説」「徹底ガイド」系の汎用ハウツーは原則避け、「やってみた・作ってみた」の角度に振る
- 専門用語は初出時に必ず日常用語で言い換え
- 記事のゴール = 「読者が触りたくなる、真似したくなる」
併せて実施した変更:
- 既存記事
welcome.mdおよびclaude-code-usage.mdを全削除(リブランディング前の方針で書かれていたため、新方針と整合しない) CLAUDE.mdを新方針で全面書き直し.claude/commands/media-pipeline.mdを新方針で全面書き直し(ペルソナ・テーマ軸・差別化軸・KW戦略・Phase 3 独自パート3枠・Phase 5 ペルソナ等を更新)引き継ぎ.mdはリブランディング前の設計判断記録として残置(履歴として参照)
2026-05-13: Cross Tech Lab の運営手法を記事の題材にしない(編集方針)
背景: パイプラインで生成した第1本目の記事「Claude Code に MCP を接続する方法【実装ログ付き】」の独自パートに、Cross Tech Lab 立ち上げ時に行った Ahrefs MCP 接続の実装ログを採用して公開した。が、読者目線で振り返ったところ、「Cross Tech Lab は Ahrefs を使った SEO 自動化で記事を量産しています」と公言する構図になっていた。これは (a) 運営手法を読者に明かしたくない、(b) 読者ターゲットが Ahrefs ユーザーに狭まりすぎる、という2点で Cross Tech Lab の編集方針に合わなかった。同記事は公開後すぐに却下・取り下げた。
決定: 記事の独自パート(Phase 3 の「Yo が実際に試した結果」枠)には、Cross Tech Lab そのものの運営に関する実装ログを使わない。EEAT-E のための一次情報は、別プロジェクト(intelligence-bank / dev-timer / multi-purpose-lightsail-server1 / 別の試行 等)の実装ログから引く。
加えて、KW 選定(Phase 1)の段階で「Cross Tech Lab の運営に直結する KW(SEO ツール × Claude Code 等)」を選んだ場合、独自パートの素材調達が運営手法に偏るリスクが高いので、可能なら避ける。
理由: Cross Tech Lab は AI × 個人開発の実践メディアであり、読者が知りたいのは「自分のプロダクトに AI ツールをどう使うか」。Cross Tech Lab 自身が舞台裏でどう作られているかは興味の対象ではないし、SEO 自動化を公言すると検索順位や AdSense 審査に逆効果になる懸念もある。さらに、運営手法を題材にすると読者ターゲットが「同じく SEO 自動化したい人」に絞られ、Cross Tech Lab の幅を狭める。
運用ルール(パイプラインへの反映):
- Phase 3 の独自パート3枠を選ぶ際、「Yo が実際に試した結果」枠の素材リストから Cross Tech Lab の運営ログを除外する
- Phase 1 の KW 批判 12観点に「10. Yo の実装ログと紐づけられるか」があるが、ここでの実装ログは Cross Tech Lab 以外のプロジェクトに限る
kpi_feedback.mdの「失敗パターン」に本件(記事001却下)を恒久記載し、翌朝以降の Phase 1〜4 が読み込む
2026-05-13: data/ 配下の git 管理ポリシー(メタデータは管理、bulky な中間ファイルは除外)
背景: Phase C のパイプラインは data/ 配下に多種のファイルを生成する。スプレッドシート廃止に伴い、KW 戦略・記事ログ・KPI 等をリポ内 CSV/Markdown で管理する方針が確定済み。一方、X一次情報の JSON や YouTube 文字起こし、Ahrefs 週次キャッシュ、記事ごとの設計・ドラフト中間ファイルは数百KB〜数MBの粒度で大量に生成され、git で管理すると履歴が肥大化する。
決定: 以下の方針で git 管理を切り分ける。
- git 管理(メタデータ系、サイズ小、履歴管理に意味あり):
data/README.mddata/dashboard.mddata/keywords/strategy.csvdata/keywords/topical-clusters.csvdata/articles/log.csvdata/articles/internal-links.csvdata/kpi/kpi_feedback.mddata/kpi/reports.csvdata/templates/image-prompts.md
.gitignoreで除外(bulky な中間ファイル、ローカル/CI で生成、git 管理しない):data/keywords/cache/(Ahrefs 週次キャッシュ)data/x_trends/(X 一次情報 JSON)data/youtube_transcripts/(YouTube 自動字幕)data/articles/[0-9]*/(記事ごとの中間ファイル: serp-analysis / design / draft / quality-report)data/articles/draft/(公開前 stage)
理由: メタデータ系は履歴管理して、過去の戦略判断・パイプラインの動作を振り返れるようにする。中間ファイルはサイズが大きい上に再生成可能なので、git に入れる意味がなく、リポ肥大化のリスクが大きい。中間ファイルはローカル/CI の実行時にパイプラインが生成して使うだけで十分。data/articles/[0-9]*/ のように記事ID(数字始まり)のディレクトリを正規表現で除外することで、data/articles/log.csv 等のメタデータと自然に共存できる。
2026-05-13: Phase C(記事制作パイプライン)設計大方針
背景: 奥山氏指示書「SEOオウンドメディア 全自動パイプライン構築ガイド」(988行)は WordPress + Google Sheets + Indexing API + 大量並列エージェントを前提に書かれており、Cross Tech Lab(Astro + Cloudflare Workers + 個人運営)とは構成・規模が異なる。鵜呑みにせずブラッシュアップしながら採用する方針で、章ごとに議論しながら 7Phase 全部を Cross Tech Lab 仕様に書き換えた。
決定: 設計確定書を .claude/commands/media-pipeline.md(395行、/media-pipeline slash command)に保存。主な大方針は以下。
- 公開ペース: 月30本(奥山氏の月60本から半減)
- 量より EEAT-E 質を取る、You の実装ログを手動キュレーションで組み込む余地確保
- Ahrefs Light の月1,000クレジット枠を長期持続させるため、週次キャッシュも併用
- 品質チェック: 3エージェント並列(SEO/構造40点 + 文体/UX40点 + 技術専門家20点)、93点以上で公開、最大2サイクル
- 奥山氏の 5エージェント95点5サイクルから圧縮(Claude Opus 4.7 の精度向上を加味)
- ペルソナ: 個人開発者・副業開発者・スタートアップ初期メンバー(奥山氏の中小企業経営者から変更)
- 公開先: Astro 静的サイト + git push 自動デプロイ(WordPress 全廃)
- URL構造:
/{slug}/フラット - 下書き管理: Astro Content Collections の
frontmatter draft: trueフラグ - データ管理: 全てリポ内 CSV/Markdown(Google Sheets API 全廃)
- Indexing API: スキップ(個人 Gmail × ドメインプロパティで通らない仕様問題)、サイトマップ依存
- 内部リンク自動追加: 完全自動(誤爆発覚時は半自動に切替)
- 公開スケジュール: Daily 9:00 / KPI 22:13 / Weekly Optimize 月曜 10:23
理由: Cross Tech Lab は個人運営の AI × 個人開発メディアであり、奥山氏の法人エージェンシー規模の設計をそのまま採用すると、(a) コスト過剰(X API Basic ¥30,000/月、Standard プラン昇格等)、(b) 運用負荷過剰、(c) 差別化軸(EEAT-E、Youの実装ログ)が機械化で薄まる、という問題が出る。月30本ペース・3エージェント93点・WordPress 全廃により、個人運営に最適化した持続可能な設計に落とし込んだ。詳細は .claude/commands/media-pipeline.md を参照。
2026-05-13: Cloudflare Workers の Bindings (IMAGES / SESSION) は触らない
背景: Cloudflare Workers & Pages の crosstechlab プロジェクトに、@astrojs/cloudflare adapter のデフォルト挙動で IMAGES と KV namespace SESSION → crosstechlab-session の Bindings が自動付与されていた。静的サイトには不要に見えたため一度ダッシュボードで削除したが、次のデプロイで Cloudflare Workers Builds が astro add cloudflare を自動実行し、adapter が IMAGES/SESSION を再要求 → KV namespace の新規作成が削除済み namespace と衝突して code: 10014 already exists エラー → デプロイ失敗。
決定: Cloudflare Workers の Bindings(特に IMAGES / SESSION)は触らない。adapter が前提とするため、削除しても次回ビルドで自動的に復活する仕様。応急処置として KV namespace crosstechlab-session 本体を完全削除して再ビルドし、adapter が新規作成して復旧した。今後は「使われない Bindings」が表示されても無視する。
理由: Cloudflare Workers Builds は wrangler.jsonc が未コミットの場合、デプロイごとに astro add cloudflare を自動実行する仕様で、これが adapter の Bindings を強制的に追加する。これを完全に抑止するには wrangler.jsonc を明示的にコミットして自前管理する必要があるが、運用負荷が増えるため、現状はデフォルト挙動を受け入れる方が筋。Bindings の中身が空であれば実害はなく、削除しようとすると衝突エラーで止まる方が損失が大きい。
2026-05-13: X API は当面 Free プランで運用、Basic への昇格は実需要を見てから判断
背景: 引き継ぎ.md は「X API v2 従量課金 約¥4,000/月」を前提に予算化していたが、これは 2023 年以前の試算。現状の X API v2 は従量課金プランが廃止されており、Free(無料、月10,000 ツイート読み取り)・Basic($200/月 ≒ ¥30,000、月50,000 ツイート)・Pro($5,000/月)・Enterprise の固定月額プランしかない。Basic を採用すると月額予算が引き継ぎ.md 想定の +¥26,000 と大幅超過する。
決定: Free プランで運用開始する。記事生成パイプラインから一次情報として X 投稿を引用する用途では、月60記事 × 約30ツイート = 月1,800 ツイートの取得が想定され、Free 枠(月10,000)に収まる。実需要が Free 枠を超えるようになった時点で Basic 昇格を再検討する。
理由: 当面 Free で運用可能な見込みであり、Basic ¥30,000/月のコストを先払いする合理性が乏しい。引き継ぎ.md の予算想定との乖離も Free 採用により解消され、結果として総月額は引き継ぎ.md 想定(¥25,650)より下回る(約¥21,650)。
2026-05-13: X API の Developer アカウントは既存サブアカウント torajiro2026 を使う
背景: Cross Tech Lab 用に X 専用アカウントを新設するか、既存アカウントを流用するかの選択があった。You は複数の X アカウントを保有しており、torajiro2026 という不使用に近いサブアカウントが存在した。
決定: 新規アカウントは作成せず、既存の torajiro2026 を Cross Tech Lab の API 用 Developer アカウントとして転用する。過去テスト時の残骸アプリ hogehogetawinch は削除し、新たに crosstechlab-pipeline アプリを Cross Tech Lab プロジェクト内に作成して Bearer Token を発行した。
理由: X API Developer 申請は新規アカウントだと審査が慎重になる傾向があり、torajiro2026 は既にアカウントとしての活動実績があるため Free プランが即時利用可能になっている。Cross Tech Lab のブランディングと X アカウントを必ずしも一致させる必要はなく、API 用途は裏方なので運用上の問題はない。将来 Cross Tech Lab 名義での発信用アカウントを別に作る判断は別途行う。
2026-05-12: GA4 は Consent Mode v2 で実装する
背景: 最初は「Cookie 同意取得後に gtag.js を JS で動的ロードする」方式で実装したが、初期 HTML に gtag のスクリプトタグが含まれないため、GA4 管理画面のインストールテストが「未設置」と判定される問題が発生した。
決定: Consent Mode v2 方式に切り替える。初期 HTML に gtag.js の async script を含め、gtag('consent', 'default', { ad_storage/ad_user_data/ad_personalization/analytics_storage: 'denied', wait_for_update: 500 }) でデフォルト送信を抑止し、同意バナーで「同意する」をクリックした時に gtag('consent', 'update', { ...: 'granted' }) を発火する。
理由: Google 公式が推奨する方式であり、GA4 のインストールテストを通過しつつ、未同意ユーザーに対しても Cookieless ping によるモデルデータ集計が可能で、将来の AdSense / Google Ads 連携でも有利。GDPR / 改正電気通信事業法の要件も同時に満たせる。
2026-05-12: Cloudflare のマネージド robots.txt をそのまま採用する
背景: public/robots.txt をリポジトリに置いて自前運用しようとしたが、Cloudflare のマネージド robots.txt(AI Bot ブロック + Content Signals)が常にオリジン側 robots.txt を上書きすることが本番動作確認で判明した。
決定: Cloudflare のマネージド robots.txt をそのまま使う。User-agent: * に対して Content-Signal: search=yes,ai-train=no を表明し、Amazonbot / Applebot-Extended / Bytespider / CCBot / ClaudeBot / GPTBot / Google-Extended / meta-externalagent などの AI クローラを Disallow: / でブロックする方針を採用する。リポジトリ側の public/robots.txt は削除して現実との乖離をなくす。
理由: Cross Tech Lab は「実体験ベースの一次情報」を強みとするメディアであり、AI 学習データに無償で吸い上げられることは戦略上不利。search=yes(Google 検索インデックスは許可)と ai-train=no を明示することで、SEO と差別化を両立できる。サイトマップ宣言は失われるが、GSC で手動送信すれば運用上の支障はない。
2026-05-12: 計測ツールは GA4 を採用する(Cloudflare Web Analytics や GSC 単独ではなく)
背景: yclip.org では GA を使っていなかったため、Cross Tech Lab で本当に GA4 を入れるべきかの確認があった。候補として Cloudflare Web Analytics(Cookie 不要・軽量だが滞在時間や記事別収益分析が弱い)、Search Console 単独、両併用なども検討した。
決定: GA4 を採用し、Cookie 同意バナー + Consent Mode v2 で実装する。
理由: Cross Tech Lab の収益モデルは AdSense(PV 最大化)で、AdSense との連携で「どの記事が広告収益に貢献しているか」を見たい。さらに奥山氏指示書の kpi_feedback.md ループ(PV と滞在時間から自動でリライト候補を判定する仕組み)が GA4 API 前提で書かれているため、GA4 を入れないと自動化パイプラインの一部が成立しない。Cookie 同意バナーの実装コストは初期一回限りで償却可能。
2026-05-12: Search Console は「ドメインプロパティ」で運用する
背景: GSC のプロパティ種別は「ドメイン」と「URL プレフィックス」の 2 種類があり、初回登録時にどちらかを選ぶ必要がある。
決定: ドメインプロパティ(crosstechlab.com 全体、DNS TXT 認証)を採用する。
理由: ドメインプロパティは http/https/www サブドメイン を全て 1 プロパティで包括的に管理できる。将来 blog.crosstechlab.com 等を切ったり、HTTPS 切り替え / www 有無を変更しても再認証不要。Cloudflare DNS との相性も良く、TXT レコード 1 つで認証完了する。
2026-05-12: レジストラはお名前.com のまま、DNS だけ Cloudflare に移管する
背景: 引き継ぎ.md では「Cloudflare Registrar 推奨」と書かれていたが、実際は crosstechlab.com をお名前.com(GMO)で既に取得済みだった。
決定: Cloudflare Registrar へのレジストラ移管は行わず、お名前.com 側でネームサーバを dalary.ns.cloudflare.com / theo.ns.cloudflare.com に変更することで、DNS の権威だけを Cloudflare に移す。
理由: レジストラ移管はドメイン期間延長費用が発生し、また移管制限期間中はロック解除〜認証コード取得などの手続きが必要で工数がかかる。一方ネームサーバ変更だけなら無料・即時で、Cloudflare の DNS / Pages / SSL の利点はすべて享受できる。Cross Tech Lab を素早く立ち上げる優先度のほうが高い。
2026-05-12: Cloudflare Pages ではなく Workers + Static Assets として運用する
背景: Cloudflare の最新ダッシュボードは「Pages」単独のメニューが消え、Create application → GitHub 連携で作成すると自動的に Workers + Static Assets スタイルでプロビジョニングされる仕様になっていた。URL も .pages.dev ではなく crosstechlab.ichirokisanuki.workers.dev になった。
決定: これに合わせて、Cross Tech Lab も Cloudflare Workers + Static Assets でホスティングする。Astro の dist/ を Assets バインディングで配信する構成。
理由: Cloudflare が Pages → Workers 統合方針を取っており、新規プロジェクトはこの形が標準。動作・料金・カスタムドメイン接続・SSL いずれも従来 Pages と同等以上で、将来的にエッジ関数(Workers)を足したくなった場合に同一プロジェクトで対応できる柔軟性もある。引き継ぎ.md の「Astro 静的サイト + Cloudflare Pages」というスタックの趣旨(無料・高速・GitHub 連携で自動デプロイ)は完全に満たす。
2026-05-12: Node バージョンを .node-version で 22.12.0 に固定
背景: ローカル環境は Node v24.14.0 だが、Cloudflare のビルドランナーのデフォルト Node バージョンと不一致だとビルド失敗するリスクがある。Astro 6.3.1 の engines.node も >=22.12.0 を要求。
決定: プロジェクトルートに .node-version を作成し 22.12.0 を指定。Cloudflare Workers Builds・nodenv・asdf 等のいずれもこのファイルを解釈する。
理由: バージョン固定により、Cloudflare 側のデフォルト変更やローカル/CI 差異に左右されずに再現性のあるビルドを担保する。22 系(LTS)にしておけば Astro 6 系のサポート要件を満たしつつ、24 系よりエコシステム互換性が高い。
DEVLOG(作業ログ)
開発日誌
このプロジェクトでの作業を時系列で記録する。 最新のエントリが上に来る。
2026-05-15
17:42 - サイトテーマ抜本見直し → entameen.com へのピボット決定
5/13 のリブランディング(非エンジニア向け「AI で本当に作れる」実証メディア)後、改めて根本から見直し。最終的に Cross Tech Lab プロジェクトを停止し、別ドメイン entameen.com で完全に別ジャンルの新メディアを立ち上げる判断に到達。
- GSC サービスアカウント追加の再試行: 5/13 時点と同じく「メールアドレスが見つかりません」エラーで通らず、Google 側仕様問題は未解消。Indexing API は「いつか」枠継続
- サイトテーマのゼロベース見直し: Yo の本音「読者が価値あると感じる記事でないと意味がない」「Ahrefs を使うなら合うテーマ/合わないテーマがある」をきっかけに、コンセプトを再検証
- 気付き:
- AI 解説系は SERP コモディティ化、独自切り口は Ahrefs データに反映されにくく Ahrefs の真価が出ない
- Ahrefs ゴリゴリ活用するなら 時事ニュース・テレビ番組系 が圧倒的に相性◎
- 「やってみた・作ってみた」系は自動化と相性悪く、Yo の手作業前提になりがち
- ピボット決定: 以下の構成で新プロジェクトを立ち上げる
- ジャンル: エンタメ・芸能・テレビ番組
- 切り口: 解説・背景 + まとめ・展開予測(速報ではない)
- 画像: Gemini で完全生成(実物そっくりにせず肖像権リスク回避)
- ドメイン:
entameen.com(お名前.com で ¥947 で取得済み、.com初年度キャンペーン) - 基盤: 完全新規(
~/cdev/entameen/で新規プロジェクト、新規 GitHub リポジトリ) - Cross Tech Lab(
crosstechlab.com): 別用途で転用予定、当面は塩漬け
- ドメイン料金試算の訂正: 引き継ぎ.md の「.com ドメイン約¥1,250/月(年¥15,000)」は10倍誇張された試算ミスだった。実際は
.com年¥1,500〜¥1,800 程度で、月額換算 ¥125〜¥150。月額コスト見込み訂正: 約¥21,650/月 → 約¥20,525/月 - 新プロジェクト立ち上げの段取り: 別セッションで
new-project-setupSkill を発動、~/cdev/entameen/を新規作成し GitHub 連携まで自動化する流れ
Cross Tech Lab はこのセッションで一区切り。本番 URL https://crosstechlab.com/ は about ページのみ残し、crosstechlab.com の転用先が決まるまで塩漬け運用。.env や API キーは entameen プロジェクトでも流用予定(Ahrefs / X / YouTube / Gemini)。
教訓:
- Yo の直感「自分が読んで為にならない記事は SEO 強くてもメディアにならない」が初期ピボットの引き金、次に「Ahrefs と合うテーマ」の気付きが本格ピボットの引き金
- 開発インフラ(Cloudflare / Astro / Ahrefs MCP / Gemini / X API / YouTube API)はテーマに依存せず流用できる → ピボットコストは小さい
- テーマ選定がメディアの最重要意思決定。テーマが固まる前に大量記事生成しても揮発する
- 引き継ぎ.md の試算や経験的な数字は鵜呑みにせず、要所で実額を確認する
次のアクション:
- Yo 作業: 別セッションで
~/cdev/entameen/の new-project-setup を実行 - Cross Tech Lab プロジェクト: 当面塩漬け、転用方針が決まったら再開
2026-05-13
17:15 - 第1本目本番記事の生成→却下→再生成→却下→全面リブランディング
Phase D 完走の勢いで「次は本番用の記事を1本自動で作って」のリクエストを受け、/media-pipeline を実際に走らせて第1本目を生成しに行った。結果、3段階の意思決定を経てサイトの抜本的なリブランディングに至った長い半日。
- 第1試行: 記事001 (claude-code-mcp-setup)
- メインKW:
claude code mcp(Vol 3,400、KD 1、Ahrefsmatching-terms+serp-overviewで取得) - 独自パート: 今日 Phase B-1 でやった Ahrefs MCP 接続の実装ログ
- 品質: 3エージェント並列で 93/100、公開条件クリア
git push→ 本番反映、JSON-LD 3種出力、サイトマップ反映、フル動作確認- → Yo フィードバックで却下: Cross Tech Lab の運営手法(Ahrefs / SEO自動化)を題材化してしまい「読者に運営手法を明かしたくない」「Ahrefs ユーザーという狭いターゲットにしか刺さらない」と判断
- DECISIONS.md に「Cross Tech Lab の運営手法を記事の題材にしない」を恒久編集方針として記録
- メインKW:
- 第2試行: 記事001 (claude-code-usage、番号再利用)
- メインKW:
claude code 使い方(Vol 4,800、KD 7)に変更 - 独自パート: 「個人開発で使える汎用シーン5選」(ファイル一括処理 / リファクタリング / エラー対応 / ドキュメント整備 / Bash 自動生成)、Cross Tech Lab 運営手法を一切含まない
- 品質: 96/100(前回 93 から +3 改善、外部リンク3本確保 / 体言止め強化 / 体験シーン充実)
git push→ 本番反映完了- → Yo フィードバックで再び却下: 「このレベルを公開するのは忍びない」「自分(エンジニア寄り)が読んでも為にならない」「ターゲットを抜本的に変えるべき」と判断
- メインKW:
- 全面リブランディング:
- ペルソナ転換: 個人開発者 → 非エンジニア + 初級エンジニア
- コンセプト転換: 「AI ツールの解説」 → 「AI で本当にアプリ・Web・ツールが作れる時代を実証する」
- テーマ軸転換: 「使い方解説」 → 「やってみた・作ってみた」
- KW戦略転換: 汎用ハウツー(
claude code 使い方等)回避、「○○ AI で作る」「AI で◯◯」「AI × ◯◯」系 - EEAT-E 素材: Cross Tech Lab 運営禁止、Yo の他プロジェクト(intelligence-bank / dev-timer / multi-purpose-lightsail-server1 / yclip.org 等)の制作ログから引く
- 文体ルール: 専門用語の言い換え必須(API → 「他のサービスとデータをやり取りする仕組み」等)
- ブランド名「Cross Tech Lab」は維持(「異なる技術の掛け算」コンセプトが新方針とも整合)
- 方針ドキュメント全面書き直し:
CLAUDE.md: 新方針サマリーで全面書き直し.claude/commands/media-pipeline.md: ペルソナ / テーマ軸 / 差別化軸 / KW戦略 / Phase 1〜7 各カスタマイズ部分を更新、第5章「リブランディング前後の編集ルール」を新規追加.devnotes/DECISIONS.md: 「全面リブランディング」を背景・決定・理由・運用ルール込みで恒久記録.devnotes/ROADMAP.md: 今週分にリブランディング作業を完了マーキング、新方針での残作業を再整理.devnotes/WIP.md: 「リブランディング直後、本番記事0本」状態に全面更新、旧スナップショット7件をアーカイブ
- 旧記事2本(welcome / claude-code-usage)を全削除:
git rmで本番からも完全消失 - 新
about記事公開(/about/): リブランディング宣言、新コンセプト・想定読者・サイト名由来・無料 AI ツール紹介
公開状態(リブランディング後): 本番URL /、/about/、/privacy/、/contact/、/categories/、/categories/announcement/ の6URLのみ、記事は about 1本だけ。月30本ペース目標は維持、新方針で第1本目本番記事は次セッション以降。
教訓:
- 第1本目をいきなりパイプライン完全自動で動かして公開まで持っていけた → パイプライン基盤は問題なく機能する
- しかし、Yo が「自分が読んでも為にならない」と感じる記事は SEO 上手くいっても継続的なメディアにならない
- リブランディングのコストは方針ドキュメント書き直し + 既存記事2本削除のみ、サイト基盤・契約 API・データ管理は全部流用できる
- 早期にリブランディング判断ができたのは Yo の直感 と「本番に公開してから読み返す」フローのおかげ
15:53 - Phase D 試運転完走(最初の正式記事を公開)
Phase C で実装した記事公開基盤の動作確認を兼ねて、Cross Tech Lab の最初の正式記事
welcome.md(Cross Tech Lab を始めました)を本番公開。フロー検証 + Google による
構造化データ認識まで完走した。
- 記事公開:
src/content/blog/welcome.mdを新規作成、draft: falseで公開- カテゴリ
announcement、タグ「お知らせ / サイト運営」 - 内容: サイトコンセプト、なぜ始めるか、カテゴリ説明、運営方針、3つの軸(EEAT-E / GEO-LLMO / 個人開発者目線)、FAQ 3問
- git push → Cloudflare 自動デプロイ → 本番
https://crosstechlab.com/welcome/で稼働確認
- 本番動作確認:
- 6ページ全て HTTP 200(
///welcome///categories///categories/announcement///contact///privacy/) - サイトマップ
/sitemap-0.xmlに全6URLが反映 /welcome/ページ内の JSON-LD としてBlogPosting/BreadcrumbList/FAQPageの3種すべて自動生成、構造内のQuestion/Answer/Organization/WebPage/ListItemも正しく構築- OGP メタタグ 5種(
og:type/og:title/og:description/og:url/og:site_name) - トップページに記事カードとして welcome 記事が表示
- 動的ルーティング
[...slug].astroとcategories/[category].astroの両方が記事追加で自動生成
- 6ページ全て HTTP 200(
- Google による検証:
- GSC URL 検査(ライブテスト): 「URL は Google に登録できます」「ページの可用性: インデックス登録可能」「パンくずリスト 有効 1件」「よくある質問 有効 1件」全て緑✅
- インデックス登録リクエストを GSC から送信
- Google Rich Results Test も問題なし
Phase D の試運転は完全成功。残りは「実インデックス完了の待ち」と「実運用での記事増産」のみ。
15:40 - Phase C 実装完了(記事公開基盤一式)
設計確定書(.claude/commands/media-pipeline.md)に基づき、Cross Tech Lab の記事公開基盤を実装。テスト記事を src/content/blog/{slug}.md に置いて push すれば、https://crosstechlab.com/{slug}/ で自動公開される状態まで到達した。
実装内容:
- 記事公開基盤:
src/content.config.ts: blog コレクションスキーマ(title/description/pubDate/updatedDate/category/tags/cover/coverAlt/faq[]/draft)src/layouts/ArticleLayout.astro: 記事レイアウト、JSON-LD 3種(BlogPosting / BreadcrumbList / FAQPage)自動生成、frontmatter のfaq[]配列から FAQPage を構築src/pages/[...slug].astro: 動的ルーティング、本番ビルドではdraft: trueを除外src/content/blog/_draft-test.md: 動作確認用テスト記事(draft)
- 表示系:
src/pages/index.astro: トップページに「ヒーロー + 最新記事一覧」を実装、記事0件時は「準備中」フォールバックsrc/pages/categories/[category].astro: カテゴリ別記事一覧、getStaticPathsでカテゴリごとに動的生成、パンくず付きsrc/pages/categories/index.astro: カテゴリ一覧ページ、記事数で降順ソートsrc/components/ArticleCard.astro: 記事カード共有コンポーネント、heading レベル切替(h2/h3)、画像なし時のフォールバック(:has(.cover)で判別)、レスポンシブ
- データ管理系(
data/配下):data/README.md: 構成説明、git管理 / gitignore の方針- メタデータ(git管理):
data/keywords/strategy.csv/data/keywords/topical-clusters.csv/data/articles/log.csv/data/articles/internal-links.csv/data/kpi/kpi_feedback.md/data/kpi/reports.csv/data/dashboard.md - 中間ファイル(gitignore):
data/keywords/cache/、data/x_trends/、data/youtube_transcripts/、data/articles/{id}/、data/articles/draft/
- 画像系:
data/templates/image-prompts.md: Gemini API 用のプロンプトテンプレ(アイキャッチ16:9 / H2図解3-5枚 / カテゴリカラー6色 / 失敗時フォールバック / WebP最適化 / alt 書き方)
Phase C の進捗:
- 設計確定: ✅(
.claude/commands/media-pipeline.md) - 表示系(Layout/Page/Component): ✅
- データ管理系(
data/構成): ✅ - 画像プロンプトテンプレ: ✅
- 各 Phase の個別スクリプト: 当面
media-pipeline.mdで運用、必要が出たら個別 slash command 化 - 6章/7章/8章の詳細: 運用しながら詰める方針(フィールドデータが必要)
次は Phase D(試運転:テスト記事1本を手動でパイプライン完走)。
15:18 - AdSense審査準備の仕上げ + Phase C 設計確定(章ごと議論方式)
- Workers Bindings 騒動と復旧:
- 「Workers の余分な Bindings (IMAGES / SESSION) を削除」を実施したが、デプロイ時に Cloudflare Workers Builds が
astro add cloudflareを自動実行し、adapter が IMAGES/SESSION を再要求 → KV namespace の新規作成が削除済み namespace と衝突してエラー - 教訓:
@astrojs/cloudflareadapter が前提とする Bindings は削除しても adapter が次回ビルドで再追加する。「触らない」が正解 - 応急処置: Cloudflare で KV namespace
crosstechlab-sessionを完全削除 → ビルドリトライ → 新規 KV 作成成功 → デプロイ通る
- 「Workers の余分な Bindings (IMAGES / SESSION) を削除」を実施したが、デプロイ時に Cloudflare Workers Builds が
- AdSense 審査準備:
src/pages/privacy.astroをプライバシーポリシー本格版に書き換え(9項目で AdSense 審査要件カバー、運営者: Cross Tech Lab 編集部、contact@crosstechlab.com明記)src/pages/contact.astro新規作成(お問い合わせページ)src/layouts/BaseLayout.astroにフッター追加(トップ/プライバシー/お問い合わせ + © {year} Cross Tech Lab 編集部)- Cloudflare Email Routing で
contact@crosstechlab.com→ichirokisanuki@gmail.com転送設定、テストメール到達確認 - 本番URL
https://crosstechlab.com/privacy//contact/200 動作確認
- Phase C 設計(章ごと議論方式):
- 奥山氏指示書(988行、WordPress 前提)の Phase 1〜7 を Cross Tech Lab 仕様にカスタマイズ
- 章ごとに You と議論しながらブラッシュアップして確定
- 主な確定事項:
- 公開ペース: 月30本(量より EEAT-E 質、Ahrefs クレジット枠の長期持続)
- 品質チェック: 3エージェント並列、93点以上、最大2サイクル(奥山氏の5エージェント95点から圧縮)
- ペルソナ: 個人開発者・副業開発者(奥山氏の中小企業経営者から変更)
- KW帯: ミドルテール 500-10,000、country=JP
- Ahrefs 週次キャッシュでクレジット節約(Light 月1,000枠の40-50%目標)
- X 一次情報 20件(min_impressions: 1,000)、YouTube 5本
- You の実装ログはパイプライン化せず手動キュレーションで組み込み(機械的コピペ回避)
- 検索上位記事フェッチ: 10記事
- 独自パート3枠テンプレ: You実体験 / X反応 / YouTube実演
- GEO/LLMO 設計を Phase 3 に前倒し(H2冒頭1文/Query Fan-Out/FAQ 5問)
- 目標文字数: 記事タイプ別 3,500-5,500字(5,000字一律から柔軟化)
- AI感排除 7→8項目(AI生成感言い回し回避を追加)
- ですます調ベース + 「だ/である」許容(文体バリエ)
- blockquote 強調時のみ許可
- 批判ループ 5-10周(奥山氏 10-20周から半減、Claude Opus 4.7 の精度向上分)
- URL構造:
/{slug}/フラット - 下書き管理: frontmatter
draft: true(Astro Content Collections 標準) - 公開スケジュール: 毎日 9:00 JST 1本 / KPI 22:13 / Weekly 月10:23
- 画像: Gemini API、アイキャッチ16:9、図解3-5枚、
No English textプロンプト - JSON-LD は Astro レイアウトで自動生成(Rank Math API 不要)
- 内部リンク自動追加: 完全自動(誤爆発覚時は半自動に切替)
- KPI: 日次レポート22:13
- Indexing API スキップ確定、サイトマップ依存
- WordPress API / Google Sheets API は全廃、リポ内 CSV/Markdown で管理
- 設計確定書を
.claude/commands/media-pipeline.md(395行)として作成、/media-pipelineslash command として利用可能 - 未確定: 6章 品質ルール詳細 / 7章 KPIフォーマット / 8章 週次最適化詳細 / Content Collections スキーマ / ディレクトリ構成 / 画像プロンプトテンプレ
Phase C は「設計確定+文書化」まで完了。次は実装(Astro テンプレート、Content Collections、ディレクトリ作成、各 Phase の実行スクリプト整備)。
14:10 - Phase B 一式(API キー取得 + .env / .env.example 整備)
- Indexing API スキップ方針確定: 個人 Gmail × GSC ドメインプロパティへのサービスアカウント所有者追加が Google 側の組織分離仕様により恒常的に通らないと判断、Phase A-7 では断念して
.devnotes/ROADMAP.mdの「いつか」枠へ移動 - Phase B-1 Ahrefs Light:
- 月¥19,900 で契約(クレカ登録、Light プラン選択)
- GSC 連携で
crosstechlab.comをプロジェクトとしてインポート(yclip.org はチェック外し) - MCP key と REST API key を生成し
.envに格納 claude mcp add ahrefs https://api.ahrefs.com/mcp/mcp -t http --header "Authorization: Bearer $AHREFS_MCP_KEY"で Claude Code に MCP 登録、✓ Connected確認- 初回の
claude mcp add出力で MCP key 値の大部分がチャットに露出したため、Ahrefs ダッシュボードで該当 key を Revoke して再生成、ヘッダー設定もやり直し(出力抑制版で再登録)
- Phase B-2 X API v2:
- 既存サブアカウント
torajiro2026で Developer Portal にログイン、Free プランへ自動移行済み - 過去テスト残骸の
hogehogetawinchアプリを削除し、Cross Tech Lab プロジェクト内にcrosstechlab-pipelineアプリを新規作成 - Bearer Token 発行、
.envのX_BEARER_TOKENに格納 - 引き継ぎ.md の月¥4,000(従量課金前提)は古い情報で、現状は Basic $200/月(約¥30,000)が最低有料ライン → Cross Tech Lab の使用量見込み(月60記事 × 30ツイート = 月1,800ツイート)は Free 枠(月10,000ツイート)に収まるため当面 Free で運用
- 既存サブアカウント
- Phase B-3 YouTube Data API v3: 既存 GCP プロジェクト
crosstechlabで API 有効化、認証情報から API キーを発行、.envに格納 - Phase B-4 Gemini API: Google AI Studio で
crosstechlab-geminiという名前で API キー発行、GCP プロジェクトcrosstechlabに紐付け、.envに格納 - Phase B-5 .env / .env.example 整備:
.envは.gitignoreで除外確認済み(git ls-files --error-unmatch .envで追跡対象外).env.exampleを新規作成、コミット(4cea535):Ahrefs / X / YouTube / Gemini / GSC site URL / 将来追加項目(Cloudflare / GA4 / Google Sheets)まで網羅.gitignore側に既に!.env.exampleの例外指定があったので追加修正なし
Phase A と Phase B が完走。残りは Workers Bindings 掃除(軽い)と Phase C(奥山氏指示書を Cross Tech Lab 仕様に書き換え、重い)。
翌日リトライ用 dev-timer # 18 について
- 5/12 20:41 に発火済みだが、結局 Indexing API は今日「いつか」枠へ移動したので、無視で OK
2026-05-12
20:49 - Phase A-7(サイトマップ / GSC / GA4 / Indexing API 着手)
@astrojs/sitemap3.7.2 を導入し、ビルド時にsitemap-index.xmlとsitemap-0.xmlを自動生成public/robots.txtを一度追加したが、Cloudflare のマネージド robots.txt(AI Bot ブロック + Content Signalssearch=yes,ai-train=no)が常に上書きする挙動を確認 → リポ側 robots.txt を削除し、Cloudflare マネージド版に一本化- Search Console に ドメインプロパティ で
crosstechlab.comを登録、Cloudflare DNS の TXT レコードで所有権確認、サイトマップhttps://crosstechlab.com/sitemap-index.xmlを送信 - GA4 プロパティ
Cross Tech Labを作成、測定 IDG-WCMRGY5NPXを取得 - 最初は Cookie 同意取得後に
gtag.jsを動的ロードする方式で実装 → GA4 のインストールテストが失敗(初期 HTML にスクリプトタグが含まれない仕様のため) - Consent Mode v2 に切り替えて再実装:
- 初期 HTML に
gtag.jsのasyncscript を含める gtag('consent', 'default', { ..._storage: 'denied', wait_for_update: 500 })でデフォルト送信抑止- 同意バナーで「同意する」クリック時に
gtag('consent', 'update', { ..._storage: 'granted' })を発火 - インストールテスト通過、リアルタイムレポートでもアクセス確認済み
- 初期 HTML に
src/layouts/BaseLayout.astro(共通レイアウト、OGP/canonical/同意バナー込み)を新規作成、index.astroを BaseLayout 利用にリファクタsrc/pages/privacy.astro(プライバシーポリシー暫定版)を新規作成、AdSense 審査時の必須要件に備え雛形配置- Google Cloud Console で
crosstechlabプロジェクト作成、Web Search Indexing API を有効化、サービスアカウントcrosstechlab-indexingを作成、JSON キーをローカルにダウンロード - Search Console の「ユーザーと権限」でサービスアカウントを所有者として追加しようとしたが、30 分待っても「メールアドレスが見つかりませんでした」エラーで追加できず → Google 側のサービスアカウント反映遅延と判断、翌日リトライ
Phase A-7 のうち、サイトマップ / GSC / GA4 は完了。Indexing API のサービスアカウント GSC 紐付けのみ持ち越し。
18:15 - Cloudflare Pages デプロイと本番ドメイン稼働
.node-versionに 22.12.0 を固定し、Cloudflare Pages の Node バージョン不一致を予防- Cloudflare ダッシュボードで Workers & Pages プロジェクト
crosstechlabを作成(GitHubichirokisanuki/crosstechlab連携)- Cloudflare の最新UIで Pages が Workers + Static Assets に統合されており、URL は
.pages.devではなくcrosstechlab.ichirokisanuki.workers.devになった - Bindings に Assets / Images / KV(SESSION → crosstechlab-session) が自動で付与(静的サイトには Assets だけで十分、Images/KV は将来削除候補)
- Cloudflare の最新UIで Pages が Workers + Static Assets に統合されており、URL は
- Cloudflare に
crosstechlab.comゾーン追加(Freeプラン)→ NSdalary.ns.cloudflare.com/theo.ns.cloudflare.com発行 - お名前.com 側でネームサーバを Cloudflare のものに変更(DNS 移管完了)
- Cloudflare DNS で自動コピーされた apex の旧レコードを削除 → Pages の Custom Domain に
crosstechlab.comを追加 - DNS の negative cache(SOA minimum TTL 1800秒)でしばらく NXDOMAIN が残ったが、最終的に解決し本番URL稼働確認
- 公開URL:
https://crosstechlab.com
Phase A の 1〜6 完了。残りは Phase A-7(Search Console / GA4 / Indexing API 設定)。
Astro プロジェクト初期化
npm create astro@latest(minimal テンプレート, TypeScript strict)で初期化- Astro 6.3.1 を採用
astro.config.mjsにsite: 'https://crosstechlab.com'を設定- トップページ
src/pages/index.astroをプレースホルダー(タイトル + 説明 + 「近日公開予定」)で配置 npm run buildで 1ページ正常出力を確認.gitignoreに.astro/(生成型定義)を追加- README.md を Cross Tech Lab 用に書き換え
Phase A の 5(Astro 初期化)まで完了。次は Cloudflare Pages デプロイ設定(Phase A-6)。
最近のコミット
- b1d5988 .devnotes を更新(Cross Tech Lab 停止・entameen.com へのピボット決定) 2026/5/15
- 2307054 .devnotes/DEVLOG.md を更新(リブランディングまでの一連の意思決定を記録) 2026/5/13
- 880c0f6 新方針宣言記事「Cross Tech Lab について」を /about/ で公開 2026/5/13
- 537d375 全面リブランディング: 方針ドキュメント一括書き直し 2026/5/13
- 1703c85 全面リブランディングのため既存記事2本を全削除 2026/5/13
- 488ac47 Phase 7: 記事001(claude-code-usage)公開を data/ メタデータに反映 2026/5/13
- 1052c62 記事公開(再生成): Claude Code の使い方|個人開発で効くシーン5選 2026/5/13
- 821ec81 記事001(claude-code-mcp-setup)を却下・取り下げ + 編集方針を恒久化 2026/5/13
- 24cdd26 Phase 7: 記事001公開を data/ メタデータに反映 2026/5/13
- 934710d 記事公開: Claude Code に MCP を接続する方法【実装ログ付き】 2026/5/13
README
Cross Tech Lab
異なる技術の掛け算で個人開発する人のための実践メディア。 初期テーマは「AI × 個人開発」。
公開URL: https://crosstechlab.com(公開準備中)
技術スタック
- Astro(静的サイト)
- Cloudflare Pages(ホスティング)
- TypeScript(strict)
セットアップ
npm install
npm run dev # http://localhost:4321
npm run build # dist/ に出力
npm run preview # ビルド結果をローカルプレビュー
設計の背景
引き継ぎ.md: プロジェクト立ち上げ時の設計判断・コスト・参考リンクの引き継ぎ書.devnotes/: 開発メモ(DEVLOG / WIP / DECISIONS / ROADMAP)