普段利用しているWebサービス、ソフトウェア、開発ツール、クラウドサービスなどは、時間が経つにつれて増えていく。これらを単なるブックマークとして管理するのではなく、Googleスプレッドシートをサービス台帳として利用し、公開可能なものだけをWordPress上のリンク集として自動生成する仕組みを構築する。
この記事は、その仕組みを段階的に実装していくための設計メモ兼ロードマップとする。
1. 目標
最終的に実現したい操作は非常に単純だ。
Googleスプレッドシートにサービス名やURLを1行追加する。
これだけで、
- サービス情報を取得する
- URLを正規化する
- アイコンを決定する
- カテゴリごとに整理する
- 公開対象だけを抽出する
- WordPress用の表示データを生成する
- WordPressのリンク集を更新する
ところまで自動化する。
最終的なイメージは次のようになる。
Google Spreadsheet
↓
Service Data
↓
Python
↓
services.json
↓
WordPress
↓
公開サービスリンク集
Googleスプレッドシートは入力インターフェースとして利用し、WordPressそのものをデータの本体にはしない。
2. Googleスプレッドシートをサービス台帳にする
最初に作るのはサービス管理用のGoogleスプレッドシート。
最低限、次の情報を管理する。
| name | url | category | icon | public | note |
|---|---|---|---|---|---|
| GitHub | https://github.com/ | Development | auto | TRUE | Code |
| ChatGPT | https://chatgpt.com/ | AI | auto | TRUE | AI |
| FreeCAD | https://www.freecad.org/ | CAD | auto | TRUE | CAD |
| Gmail | https://mail.google.com/ | auto | FALSE | Personal |
最初から複雑なデータ構造にはしない。
v0.1では、
name
url
category
public
程度でも十分である。
スタータープロンプト
以下のプロンプトは、利用しているツールやWebサービスを整理し、サービス台帳の初期データを生成するためのスタータープロンプトです。
生成結果をGoogleスプレッドシートへ貼り付け、実際の利用状況に合わせて追加・削除・修正することで、自分専用のツール台帳として利用できます。
スプレッドシートデータ生成用プロンプト
あなたは、個人のデジタルツール・Webサービス・ソフトウェアを整理するアシスタントです。
私が現在利用している、または今後利用する可能性が高いツール、Webサービス、ソフトウェア、プログラミング言語、クラウドサービス、開発環境などを可能な限り網羅的に列挙してください。
目的は、Googleスプレッドシートで「利用ツール・サービス台帳」を作り、そのデータから将来的にWebサイト上のリンク集を自動生成することです。
## 出力形式
以下の列を持つ表として出力してください。
| name | url | category | icon | public | note |
各列は次のルールに従ってください。
* `name`
* サービス、ソフトウェア、ツール等の一般的な正式名称
* `url`
* 原則として公式サイトのURL
* ログイン後の個人ページではなく、一般公開されている公式トップページまたは公式プロダクトページを優先
* `category`
* 用途を表すカテゴリ
* 例:AI、Development、CAD、Cloud、Database、Automation、Research、Communication、Productivity、Web、Engineering、Design
* `icon`
* 原則 `auto`
* 後工程で公式アイコン、アイコンライブラリ、favicon等から自動解決することを想定
* `public`
* 一般公開のリンク集に掲載しても問題が少ないものは `TRUE`
* 個人アカウント、メール、カレンダー、社内コミュニケーション、管理画面、個人的なクラウドストレージなど、利用状況を積極的に公開する必要がないものは `FALSE`
* `note`
* 用途を短い言葉で記述
## 対象
以下の分野を中心に候補を洗い出してください。
* 生成AI
* AI API
* AIエージェント
* プログラミング
* Python
* JavaScript
* Web開発
* Git / Git hosting
* IDE / エディタ
* CAD
* 3D CAD
* 2D CAD
* 3Dプリンティング
* 数値計算
* 数学
* データ処理
* データベース
* JSON / YAML等のデータ形式
* API
* Docker / コンテナ
* クラウド
* Webホスティング
* WordPress
* CMS
* ドキュメント作成
* Markdown
* ダイアグラム
* 表計算
* Google系サービス
* Microsoft系サービス
* タスク管理
* ナレッジ管理
* コミュニケーション
* ワークフロー自動化
* RSS
* 検索
* 技術調査
* 論文検索
* 特許検索
* 画像処理
* 動画処理
* デザイン
* サーバー管理
* SSH / SFTP
* DNS / CDN
* セキュリティ
* その他、技術者・クリエイター・個人開発者が利用する可能性が高いツール
## 選定ルール
有名なサービスだけに限定せず、実用性が高いOSSや開発ライブラリも含めてください。
ただし、数を増やすためだけの類似サービスは大量に追加せず、実際に利用する可能性がある代表的なものを優先してください。
公式URLが不明な場合は推測してURLを生成しないでください。
サービスと個人アカウントは区別してください。
「現在利用中」と「将来候補」を区別できるよう、必要であれば次の列も追加してください。
* `status`:`active` / `trial` / `candidate` / `retired`
* `relation`:`use` / `learning` / `considering` / `reference`
## 重要
私はこの結果をそのままGoogleスプレッドシートへコピーする可能性があります。
そのため、
* 1ツールにつき1行
* 列構造を統一
* URLを省略しない
* 同一サービスの重複を避ける
* 不明な情報を推測で埋めない
* 説明文を長くしすぎない
という条件を守ってください。
最後に、私の職種、趣味、学習分野、現在利用しているソフトウェアなどについて追加情報があれば、さらに適切な候補を抽出できる場合は、そのために必要な質問をしてください。
3. 公開情報と非公開情報を分離する
重要なのが public フィールド。
利用しているサービスをすべてインターネットに公開する必要はない。
そのため、
public = TRUE
のレコードだけをWordPressへ出力する。
構造としては、
サービス台帳
↓
public判定
↙ ↘
TRUE FALSE
↓ ↓
公開 非公開とする。
これによって、内部では包括的なサービス台帳として利用しながら、WordPressには安全に公開できる情報だけを掲載できる。
Google Spreadsheet側では、public 列を TRUE / FALSE で管理します。Pythonでは読み込み時に TRUE の行だけを公開用データへ通し、FALSE は完全に除外します。
public_tools = [
tool for tool in tools
if tool["public"] is True
]実際にはGoogle Sheetsから読むと文字列になる場合があるので、v0.1ではもう少し安全に、
def is_public(value):
return str(value).strip().lower() in {"true", "1", "yes"}
public_tools = [
tool for tool in tools
if is_public(tool.get("public"))
]くらいにしておくと扱いやすいです。
ここで大事なのは、WordPressへ渡す前に落とすことです。
Google Spreadsheet
↓
全レコード取得
↓
public判定
├─ TRUE → 公開用データ
└─ FALSE → ここで終了
↓
services.json
↓
WordPressさらに安全にするなら、公開用JSONでは列も絞ります。
PUBLIC_FIELDS = {
"name",
"url",
"category",
"icon",
"status",
"priority",
"featured",
"note",
}つまり public=TRUE の行でも、将来Spreadsheetに account_name や admin_url のような列を追加した場合、それらは自動では公開されません。
この段階の仕様としては、
「行は public でフィルタ、列はホワイトリストでフィルタ」
にしておくのがかなり堅いです。
4. アイコンを自動設定する
リンク集には可能な限り各サービスのアイコンを表示したい。
ただし、
faviconと公式ブランドロゴは同じものではない。
そのため、単純にすべてのサイトからfaviconを取得するだけではなく、複数の取得方法を使える構造にする。
例えば、
icon_source
official
simpleicons
favicon
manual
などを管理する。
アイコン取得には優先順位を設定する。
登録済み・公式アイコン
↓
アイコンライブラリ
↓
favicon
↓
デフォルトアイコン
取得に失敗してもリンク集そのものが壊れない設計にする。
また、ブランドロゴには各サービスの利用ガイドラインが存在する場合があるため、公開時には各ブランドの利用条件も確認する。
5. WordPressではカード形式で表示する
WordPress側では単純なテキストリンクではなく、カード形式で表示する。
例えば、
┌────────────────────┐
│ [ICON] GitHub │
│ Development │
└────────────────────┘
┌────────────────────┐
│ [ICON] FreeCAD │
│ CAD │
└────────────────────┘
のようなUIにする。
CSS Gridなどを利用して、
Desktop → 4~6列
Tablet → 3列
Mobile → 2列
のようにレスポンシブ表示させる。
サービス数が増えてきた場合はカテゴリ別に整理する。
AI
├─ ChatGPT
├─ Claude
└─ Gemini
Development
├─ GitHub
├─ VS Code
└─ Docker
CAD
├─ FreeCAD
└─ IJCAD
Publishing
├─ WordPress
└─ X
Cloud
├─ Google Drive
└─ Gmail
将来的には検索やカテゴリフィルタも追加できる。
6. データと表示を分離する
Googleスプレッドシートから直接WordPressのHTMLを生成するだけでも実現できる。
しかし、再利用性を考えると中間データを持たせたい。
そこで、
Google Spreadsheet
↓
Python
↓
services.json
↓
WordPress
という構造にする。
例えば services.json は次のようになる。
[
{
"name": "GitHub",
"url": "https://github.com/",
"category": "Development",
"icon": "github",
"public": true
},
{
"name": "FreeCAD",
"url": "https://www.freecad.org/",
"category": "CAD",
"icon": "freecad",
"public": true
}
]
こうしておけばWordPressは単なる出力先の一つになる。
7. WordPressに依存しない構造にする
サービス情報そのものをWordPress内部だけで管理すると、別のシステムから利用するときに再構築が必要になる。
そこで、
Google Spreadsheet
↓
services.json
↙ ↓ ↘
WordPress Python Web App
↓
DB
という構造を目指す。
WordPressを変更したり、将来的に別のWebアプリケーションを構築した場合でも、サービスデータはそのまま再利用できる。
8. 将来的にはサービス・ソフトウェア台帳へ発展させる
最初はリンク集として始めるが、データ構造を拡張すれば「利用している技術・サービスのインベントリ」として利用できる。
例えば、
id
name
url
category
description
icon
icon_source
pricing
license
platform
api_available
opensource
account_required
public
status
first_used
last_reviewed
などを管理できる。
これによって、
リンク集 → サービス台帳 → 技術スタックDB
へ発展させられる。
さらにAPIの有無、OSSかどうか、料金体系、利用目的などを構造化すれば、新しいサービスを採用するときの比較データとしても利用できる。
9. 実装ロードマップ
一度にすべて実装する必要はない。
小さく動くものを作り、段階的に自動化する。
Phase 1:Googleスプレッドシート作成
まずサービス台帳を作る。
最低限のフィールドは、
name
url
category
public
とする。
完了条件
Googleスプレッドシートだけで、利用サービスを一覧管理できる。

Phase 2:Pythonでデータ取得
Googleスプレッドシートの情報をPythonから取得する。
処理を、
Spreadsheet
↓
Python
↓
list / dict
へ変換する。
完了条件
Pythonからサービス一覧を取得できる。
Phase 3:JSON生成
取得したデータを正規化し、
services.json
として保存する。
ここでは、
- URL正規化
- 空欄処理
- 重複チェック
- public判定
- category正規化
なども行う。
完了条件
Googleスプレッドシートから再利用可能なJSONを自動生成できる。
Phase 4:WordPress表示
services.json からWordPress用のリンク集を生成する。
最初は、
アイコン
サービス名
カテゴリ
リンク
だけでよい。
完了条件
WordPress上でサービス一覧をカード表示できる。
Phase 5:アイコン自動取得
サービスURLまたはサービス名からアイコンを決定する。
URL
↓
domain
↓
icon resolver
↓
icon
取得できなかった場合はデフォルトアイコンを使用する。
完了条件
新しいサービスを登録した際、手作業なし、または最小限の手作業でアイコンを設定できる。
Phase 6:WordPress REST API連携
PythonからWordPress REST APIを利用してリンク集ページを更新する。
Spreadsheet
↓
Python
↓
JSON
↓
HTML生成
↓
WordPress REST API
↓
ページ更新
完了条件
Pythonを実行するだけでWordPressのリンク集が更新される。
Phase 7:完全自動化
最終的には定期実行または変更検知によって更新する。
理想的な操作は、
Spreadsheetに1行追加
↓
自動処理
↓
WordPressにカード追加
となる。
ユーザーがHTMLやWordPress内部のデータを直接編集する必要をなくす。
10. v0.1で作る範囲
最初から完全自動化を目指さない。
まずは、
Google Spreadsheet
↓
Python
↓
services.json
↓
WordPressリンク集
までを実装する。
入力項目も、
name
url
category
public
程度に限定する。
ここが安定して動いてから、
アイコン自動取得
↓
カテゴリ自動分類
↓
WordPress REST API
↓
自動更新
を追加する。
11. この仕組みの本質
この仕組みの目的は、単に「便利なリンク集を作ること」ではない。
普段利用しているWebサービスやソフトウェアを構造化されたデータとして管理し、そのデータから必要な成果物を自動生成できる状態を作ることにある。
サービスを利用する
↓
台帳へ登録する
↓
構造化データになる
↓
Webページへ変換する
↓
別システムでも再利用する
一度入力した情報を何度も手入力しない。
WordPressのページも、人間が直接維持するデータではなく、構造化されたサービス台帳から生成される成果物として扱う。
まずは小さなリンク集として実装し、最終的には自分が利用しているWebサービス、ソフトウェア、開発ツールを横断的に管理できるサービス・技術スタックDBへ発展させる。

