GoogleスプレッドシートからWordPressのサービスリンク集を自動生成する

「GoogleスプレッドシートからWordPressのサービスリンク集を自動生成する」の内容を表す技術イラスト

普段利用しているWebサービス、ソフトウェア、開発ツール、クラウドサービスなどは、時間が経つにつれて増えていく。これらを単なるブックマークとして管理するのではなく、Googleスプレッドシートをサービス台帳として利用し、公開可能なものだけをWordPress上のリンク集として自動生成する仕組みを構築する。

この記事は、その仕組みを段階的に実装していくための設計メモ兼ロードマップとする。


目次

1. 目標

最終的に実現したい操作は非常に単純だ。

Googleスプレッドシートにサービス名やURLを1行追加する。

これだけで、

  1. サービス情報を取得する
  2. URLを正規化する
  3. アイコンを決定する
  4. カテゴリごとに整理する
  5. 公開対象だけを抽出する
  6. WordPress用の表示データを生成する
  7. WordPressのリンク集を更新する

ところまで自動化する。

最終的なイメージは次のようになる。

Google Spreadsheet
        ↓
   Service Data
        ↓
      Python
        ↓
    services.json
        ↓
    WordPress
        ↓
公開サービスリンク集

Googleスプレッドシートは入力インターフェースとして利用し、WordPressそのものをデータの本体にはしない。

Tools & Services リンク集 ekplabz.com priority 順の項目 Gmail Personal email FEATURED ChatGPT General AI FEATURED GitHub Code hosting X Distribution cha […]


2. Googleスプレッドシートをサービス台帳にする

最初に作るのはサービス管理用のGoogleスプレッドシート。

最低限、次の情報を管理する。

nameurlcategoryiconpublicnote
GitHubhttps://github.com/DevelopmentautoTRUECode
ChatGPThttps://chatgpt.com/AIautoTRUEAI
FreeCADhttps://www.freecad.org/CADautoTRUECAD
Gmailhttps://mail.google.com/GoogleautoFALSEPersonal

最初から複雑なデータ構造にはしない。

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へ発展させる。

参考になったらシェアしてください
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

機械設計・油圧・CAD・Python・AIなど、ものづくりに関わる技術を扱っています。工学知識を整理・構造化し、設計や自動化に再利用できる形へ変えていくことを目指しています。

目次