researcher-profile

検査

DOI

設定ファイルを 1 つ書けば、研究者プロフィールの静的サイトが出る。

研究者の登録先は researchmap、ORCID、HAL、Google Scholar と分散する。それらを まとめて見せる場所は、自分で用意するしかない。その 1 枚を最小の手間で作るための 道具である。

使い方

git clone https://github.com/cpsbvbng26-dotcom/researcher-profile.git
cd researcher-profile

# profile.json を自分の内容に書き換えて
node build.js

# dist/index.html ができます

生成物は dist/ に出力される(index.html / favicon.svg / .nojekyll)。

公開する

同梱の GitHub Actions が main への push で自動的にビルドし、GitHub Pages へ配信する。 リポジトリの Settings → Pages → SourceGitHub Actions にすること。

設定

profile.json の項目である。すべて任意で、書かなかった節はページに出力されない。

項目 内容
name 氏名(必須)
nameLatin ラテン表記。氏名の下に小さく表示される
initials ヘッダーとファビコンに使う 1〜3 文字
lang ページの言語。既定は ja
title / description ページタイトルと説明文
tagline 氏名の下に置く紹介文
siteUrl 公開先の URL。canonical と og:url に使われる
ogImage SNS 共有用画像の URL
accent / accentDark 指し色。ライト用とダーク用
footer フッターに出す文字列
identifiers ORCID などの識別子。{ label, value, url } の配列
credentials 修了証。{ name, items: [{ code, title, issuer, url, verify }] } の配列
areas 領域。{ name, detail } の配列
links リンク。{ name, items: [{ name, note, url }] } の配列
labels 見出しなどの文言。下記の既定値を個別に上書きできる
sections 節をどの順に出すか。書かなかった節は出ない。既定は ["credentials","areas","papers","links"]
claim 主張。statementrefute(どうすれば覆るか)rowsrefute が無いと生成が止まる
verification 検証。{ note, items: [{ name, detail }] }
withdrawn 撤回。{ note, items, recordUrl, recordLabel }。消さずに残すための節である
contact 連絡。criticism(批判・誤りの指摘の宛先)が必須で、他の連絡先より前に出る
works 制作物。論文と同じカードの形である
blocks 自由記述の節。{ id, title, html, anchors }
jsonld 構造化データ。そのまま出力に入り、CSP のハッシュも付く
alternates 言語ごとの版への hreflang
headExtra <head> にそのまま入れる行
extraNav 手で書いたページへの導線。{ name, url }
taglineHtml tagline の HTML 版

二つの必須

claimrefute が無いと、contactcriticism が無いと、生成が止まる。

反証の手順を書けない主張は、主張ではなく宣伝である。批判の宛先を先に書かない連絡先は、 連絡先ではなく飾りである。どちらも、後から足せる注意書きではなく、書かなければ出ない形にした。

labels の既定値

{
  "eyebrow": "Profile",
  "credentials": "修了証・資格",
  "credentialsNote": "各カードから発行機関の検証ページを開けます。",
  "areas": "領域",
  "links": "リンク",
  "verify": "確認",
  "skip": "本文へスキップ",
  "themeToggle": "テーマを切り替える"
}

日本語以外で使う場合は、langlabels を差し替えること。

設定の例

{
  "name": "山田花子",
  "nameLatin": "HANAKO YAMADA",
  "initials": "HY",
  "identifiers": [
    { "label": "ORCID", "value": "0000-0000-0000-0000", "url": "https://orcid.org/0000-0000-0000-0000" }
  ],
  "credentials": [
    {
      "name": "edX",
      "items": [
        { "code": "CS50x", "title": "Introduction to Computer Science", "issuer": "HarvardX", "url": "https://..." }
      ]
    }
  ],
  "links": [
    { "name": "研究者プロフィール", "items": [{ "name": "ORCID", "url": "https://orcid.org/..." }] }
  ]
}

profile.json には作者自身の設定が入っている。動作を確かめてから書き換えること。

別の設定ファイルを使う

PROFILE_CONFIG=./others/hanako.json PROFILE_OUT=./dist-hanako node build.js

仕組み

build.jsprofile.json を読み、templates/page.html のプレースホルダを置き換えて dist/index.html を書き出すだけである。生成されるのは CSS と JavaScript を内側に持つ HTML 1 枚で、外部への通信は発生しない。

テンプレートを直接編集すれば、配色や構成も自由に変えられる。

引用

このソフトウェアは Zenodo にアーカイブされ、DOI が付与されている。

根本卓哉 (2026). researcher-profile: 設定ファイル1つから研究者プロフィールの静的サイトを生成するツール (v1.0.0). Zenodo. https://doi.org/10.5281/zenodo.22335692

@software{nemoto2026researcherprofile,
  author       = {Nemoto, Takuya},
  title        = {researcher-profile: 設定ファイル1つから研究者プロフィールの静的サイトを生成するツール},
  version      = {1.0.0},
  year         = {2026},
  publisher    = {Zenodo},
  doi          = {10.5281/zenodo.22335692},
  url          = {https://doi.org/10.5281/zenodo.22335692}
}

保存

ソースコードは Software Heritage にも保存されている。

swh:1:snp:83f09cc80821f5cd02bbc89b069753c0c53c110a

DOI が「この版を指す約束」であるのに対し、SWHID は中身のハッシュそのものである。 この識別子が指すスナップショットの内容は、保存先のサービスに依存せず検証できる。

検査

node build.js && node verification/check_build.js

依存パッケージはない。push のたびに 23 項目を通す。

この道具の要は「設定ファイル 1 つ」であることで、裏を返すと設定が壊れても、変な HTML が出るまで気づけない。 そこを落とす。

空振りでないことは確認済みである。色名を入れる、欄を消す、http:// を混ぜる、領域を足したのに出ないようにする、テンプレートに新しい印を足す、外部 script を混ぜる —— 六通り壊して六通りとも落ちた。

ライセンス

MIT License

制作について

Built with Claude Code

本リポジトリの実装(build.js / templates/page.html)は、AIコーディング支援ツール Claude Code(Anthropic)を使用して制作している。設計・内容の確認および最終的な 判断は制作者本人が行っている。

制作過程はリポジトリの履歴から確認できる。

確認できること 方法
どのコミットが支援を受けたものか git log --author=Claude
各コミットに紐づく作業セッション コミットメッセージ末尾の Claude-Session: トレーラ
共同作成の記録 コミットメッセージ末尾の Co-authored-by: トレーラ

なお、生成されるページ側にはこの表示を入れていない。生成物は利用者自身の プロフィールであり、その制作手段を勝手に表明すべきではないためである。