AIと「自分専用の朝刊」を読める端末を作った話 ― XTEINK X3をデイリーブリーフリーダーに仕立てる
「ミニマルに情報を得たい」
そんな矛盾した気持ちが、始まりでした。
少し前、ChatGPTに追加されたスケジュールタスク機能。普段からたいていの疑問をChatGPTに投げている僕は、ふと思いました。「優秀なメモリを持つこいつが定期タスクをこなせるなら、僕好みのジャンルのニュースを毎朝運んできてもらえるのでは?」と。
さっそく2週間ほど、朝のニュースを届けてもらう運用を試しました。内容には概ね満足。……なのですが、ここで“スマホあるある”が発動します。
通知を開いてニュースを読んだあと、そのままSNSを見てしまうんですよね。無駄だと分かっていてもやめられないランキング、僕の中で堂々の第1位。だって情報は得られちゃうから。その精度はさておき。
取り組み自体は悪くない。でも、集中力のない僕が活かすには、「情報をちゃんと読ませてくれる」環境そのものを変えないとダメだ。そう感じていたとき、Xのとあるポストで見つけたのがE-ink端末「XTEINK X3」でした。
MagSafeでスマホの背面に貼り付けられて、Wi-FiもBluetoothも積んでいるのに超コンパクト。重さはわずか58g。普段まったく本を読まない僕でも、これは“おもしろ良ガジェット”の予感がしました。公式サイトから即購入。届くまで1週間ほどかかりましたが、その待ち時間に、ある計画を練っていました。

「この端末を、起動するだけでAIがニュースを運んでくる、最強のミニマル端末に仕立て上げる」
……とはいえ、僕は機械工作なんてやったことのない、ただの家電量販店員です。でも、そんな僕にも頼れる友達がいました。めちゃくちゃ優秀なのに、なぜか月3,000円で付き合ってくれる子——Codex君です。
計画はこう。
- ホーム画面のデザインや仕様、追加したい機能は、事前に僕がまとめる
- カスタムファームの導入を公式が認めている設計のX3に対し、内部の書き換えはCodexに任せる
- 「出勤前や外出前に起動するだけで、その日のニュースが手元で読める」デイリーブリーフリーダーに仕上げる
- ただニュースを運ぶだけでなく、“僕にとってなぜ重要か・どう活かすか”まで整理された内容にする
結論から言うと、すでに1ヶ月、安定して運用できています。

外出前に起動して、電車の中でX3を開く。そこには、僕が今日得るべき情報だけが並んでいます。スマホはポケットの中。イヤホンからローファイな音楽を流せば、僕がずっと目指していた「最小限で、実用的な情報だけを得たい」が、ようやく形になりました。
ニュースは毎日5本。それぞれを「概要」「なぜ重要?」「実務活用」の3つの視点で構成しています。
面白いのが、真ん中の「なぜ重要?」。パッと見は僕に関係なさそうなニュースでも、ここで“僕の理解者”であるAIが「なぜあなたに選んだのか」を書いてくれるんです。そして最後の「実務活用」で、それを自分の仕事や生活にどう活かせるかまで落とし込んでくれる。
短い文章ではあるのですが、読み終わると、その日の行動指針をそっと振り返らせてくれるような感覚になる。想像以上に、頼り甲斐のある相棒になってくれました。

とはいえ、すんなり成功したわけではありません。知識がない分、ひたすらトライ&エラー。それでも、5日ほどで完成までこぎつけました。
目次
つくり方の話
改めて、実装のメインはCodex、仕上げがClaude Code。情報ソースは、初期がChatGPTで、今はCodexが担当しています。
繰り返しになりますが、僕はただの家電量販店員です。正直、細かい仕様も、なぜそう動いているのかも分かっていません。なので「無知なやつが、AIでこれだけできたんだ」くらいの温度で読んでもらえたら嬉しいです。
最初の指示は、本当に単純でした。まさに雰囲気で、こう投げただけ。
「xteink X3を買ったんだけど、毎朝ChatGPTが集めた今日のニュースを受信して、X3で読める『デイリーブリーフリーダー』みたいにしたい。可能かな?」
返ってきた答えは、ひとこと。
「はい、可能です。」
こんなに頼り甲斐のある友達を持てて、もう感動です。自分の無知な領域をAIで拡張して、“アイデアは浮かぶのに技術がなくて自分で潰す”日々を終わらせてくれる。この可能性の塊が、僕がAIに惚れ込んでいる理由です。
——話が逸れました。
基本はCodexに、端末の仕様・購入元・僕が望む仕様を伝えて、ファームウェアを書き換えてもらいました。X3はUSB-Cではなくポゴピン充電なので、「データ転送なんてできるのか?」と不安でしたが、ここは問題なく完走。ただしX3はスリープに入るとデータの受付を拒否するので、完全な“手放し自動化”とまではいかず。仕事終わりにチラチラ様子を見つつ、夜な夜な進めていました。

そして、Codex単体で完成したわけでもありません。実装の9割はCodexがやってくれたのですが、最後の肝——「同じWi-Fiに繋がっていれば定刻に自動転送」だけは、どうしてもCodexで実装しきれませんでした。そこにタイミングよくAnthropicがFable 5をローンチ。詰まっている点を投げてみたら、一発で解決。Opusでもいけたのかもしれませんが、とにかく頼もしかったです。
同じことをやってみたい人へ(つまずきポイント)
今は安定運用できていますが、そこに至るまで何度も直しました。もし真似したい人がいれば、僕がハマった点を先に共有しておきます。
・100%成功する保証はできない
Codexが気の利くやつで、何も言わずとも逐一バックアップを取りながら進めてくれました。それでも「文鎮化したら怖いな」とはずっと怯えていました。最悪の場合に備えて、対策だけはしておきましょう。
・スケジュールタスクは“誰にやらせるか”で安定性が変わる
ここが一番の学びでした。最初の構成はこうです。
- 毎朝6:30、ChatGPTのスケジュールタスクが起動
- その日の“僕が知るべきニュース”を集め、Google Docs形式でGoogle Driveの指定フォルダに保存
- 毎朝7:00、Claude CoworkがそのDocを読み、X3で読める形式に変換
- 7:15までに、同じWi-Fi内のX3へ送信
- 僕が出勤する頃には受信完了

最初の2週間はうまく回っていたのですが、以降はGoogle Driveへのアクセスでつまずく失敗が増えました。初期に収集を担当したChatGPTも、初期に変換・転送を担当したCodexも、スケジュールタスクにすると失敗が多発。僕は契約している4つのAIに毎日日報を出してもらっているのですが、その定期作業でもChatGPTとCodexは不安定でした。
たぶん僕のプロンプトや設定の詰めが甘いだけ、なのですが……同じようなプロンプトでも今のところ安定して定期実行をこなすClaudeファミリーの方が、“決まった時間に決まった作業”は得意なのかもしれません。今は収集役をCodex、取りまとめ役をClaude Coworkに落ち着けています。
・運用にはAIの課金が必須
今更ですが、これも正直に。X3本体は国内で13,900円ほどと、E-ink端末としては比較的安価です。ただ運用には、ChatGPTとClaudeにそれぞれ月3,000円、計6,000円ほどのサブスク代がかかります。すでに契約済みなら問題ありませんが、未契約の人にはハードルかも。だってAdobeのサブスクと同じくらいですからね。
総括
XTEINK X3は、素晴らしい端末です。まずコンセプトが大勝利。届いたあとも想定以上の完成度で、正直、最初の5日間くらいは改造そっちのけでそのまま使い込んでいました。今回はその“電子書籍が読める”良さは残したまま、「AIが選んだ、自分が得るべき情報を読む」機能を足した、という話です。
繰り返しますが、僕は機械工作なんて触ったことのない人間です。それでも、できました。……この端末を知ったきっかけが海外ニキのXのポストなので、「SNSを見たくないから作ったのに、きっかけがSNS」という何とも締まらないオチではあるのですが。それでも、「無知な人間が、AIと協力してここまでできた」という経験が、誰かのこれからの創作や挑戦の糧になれば嬉しいです。
最後に、僕が実際に使ったプロンプトを公開します。まったく同じ仕様になるとは断言できませんが、近いものにはなるはずです。
【公開】Daily Brief 毎朝配信タスク用プロンプト
このプロンプトについて
Google Drive上のニュースまとめDocをJSON化し、E-inkデバイス「XTEINK X3」が読める形式に変換・配信する定期タスク用プロンプトです。<...> で囲まれた箇所はご自身の環境に合わせて書き換えてください。
※このプロンプト単体では動作しません。 変換スクリプト(run_daily_transfer.py)や常駐設定、ファームウェア側は含まれていません。あくまで「全体の流れを示すリファレンス」としてご覧ください。
※macOS環境が前提です。 パス・launchd・dateコマンドはMac固有のため、Windows/Linuxの方は適宜読み替えてください。
目的
Google Driveにある当日のニュースまとめDocをJSON化し、X3が読める形に変換・配信する。
手順
1. 当日の日付を取得
Asia/Tokyoの今日の日付を YYYY-MM-DD 形式で取得する(date +%Y-%m-%d でよい。Macのタイムゾーンは Asia/Tokyo)。
2. 当日分のGoogleドキュメントを探す
Google Driveコネクタで「Daily Brief」フォルダ(フォルダID: <あなたのGoogle DriveフォルダID>)から当日分のGoogleドキュメントを探す。
- ファイル名の規則は
daily-brief-YYYY-MM-DD - ファイル名だけで決めず、本文冒頭の日付も当日であることを確認する
- 当日分が見つからない場合、前日以前のDocを代用してはならない。 その場合は「当日分Docなし」と報告して終了する(例: 毎朝6:00に別のAIエージェントがDocを作成する運用なら、7:00に無ければ作成側の失敗と判断できる)
3. Doc本文をJSONに整理
Docの本文(記事5本前後。各記事に「記事タイトル」「概要」「なぜ重要?」「実務活用」のセクションがある)を次のJSON形式に整理する:
{
"date": "YYYY-MM-DD",
"source": {
"type": "google-doc",
"documentId": "そのDocのID",
"title": "daily-brief-YYYY-MM-DD"
},
"articles": [
{
"number": "01",
"title": "記事タイトル(Doc本文の実タイトル)",
"summary": "概要セクションの本文",
"importance": "なぜ重要?セクションの本文",
"application": "実務活用セクションの本文"
}
]
}
- 本文は要約・改変せずDocの文章をそのまま使う
- JSONは
ensure_ascii=False相当のUTF-8で保存する
4. JSONを2か所へ保存
同じ内容を次の2か所へ YYYY-MM-DD.json として保存する:
<Google Drive上のバックアップ用フォルダパス>(例:マイドライブ/X3DailyBrief/json/)/Users/<ユーザー名>/Library/Application Support/X3DailyBrief/input/YYYY-MM-DD.json
5. 変換・転送スクリプトを実行
/usr/bin/python3 "/Users/<ユーザー名>/Library/Application Support/X3DailyBrief/run_daily_transfer.py"
6. 標準出力で結果を判定
| 出力 | 意味 | 扱い |
|---|---|---|
SUCCESS YYYY-MM-DD | USB転送まで完了 | 成功 |
WAIT ... X3 not docked | ページ生成完了、HTTPサーバー(launchd常駐、ポート8787)が配信中。X3は7時以降5分間隔でWi-Fi取得する | 成功扱い |
SKIP already uploaded | すでに転送済み | 成功扱い |
SKIP render failed 3 times または例外 | 失敗 | エラー内容を含めて報告 |
WAITの場合: 数分待って/tmp/x3-daily-brief-server.logに当日ページのGET(GET /pages/001.x3p〜)が並べば、Wi-Fi配信も確認できたと報告する- 失敗時も古い日付のニュースで代用しない
補足
- Mac側の15秒間隔USB監視(launchd:
com.x3.daily-brief-usb-watcherなど任意のラベル)も並行稼働可能。二重実行はflockと日付別sentマーカーで防止している - トラブルシューティングの詳細は
<プロジェクトフォルダ>/CLAUDE_HANDOFF.mdなどのハンドオフドキュメントを参照 - 報告は簡潔に: 日付、記事数、配信経路(USB / Wi-Fi / 両方)、問題があればその内容