https://lokuyow.github.io/ehagaki/
eHagaki(えはがき)は、画像・動画圧縮機能付きの投稿専用Nostrクライアントです。
デバイス上で画像や動画を自動圧縮し、効率的にNostrへ投稿できます。
- Nostr投稿専用: 投稿機能に特化し、シンプルなUIで快適な利用体験を提供
- 画像・動画圧縮: 画像・動画はアップロード前に自動で圧縮され、通信量を削減(圧縮レベル調整可能)
- 見たまま編集できるリッチエディター: プレビュー画面と入力画面が分かれておらず、画像・動画・リンク・カスタム絵文字・ハッシュタグなどを実際の投稿に近い見た目で直接編集可能。ハッシュタグをピン留め(保持)して連続投稿することも可能
- 多彩なログイン・アカウント管理: 秘密鍵(nsec)、ブラウザ拡張(NIP-07)、リモート署名(NIP-46)、親クライアント連携でのログインに対応。複数アカウントの切り替えも可能
- PWA・共有インテント対応: モバイル・デスクトップ両対応。Androidは外部アプリの共有ボタンから直接メディアアップロード可能
- ドラフト機能: 投稿内容を下書きとして保存し、後から編集・投稿が可能
- リプライ・引用・チャンネル投稿: 各種URLクエリや
nostr:URIを通じたリプライ・引用投稿(NIP-10, NIP-18)に対応。パブリックチャット(NIP-28)のチャンネルへの投稿もサポート - Content Warning (CW): センシティブなコンテンツ(NIP-36)に対する警告の設定が可能
- 埋め込み: iframe、Full Web Component、Host-owned Composer Lite Web Componentの3方式を提供
- 多言語対応: 日本語・英語に対応(ブラウザ設定から自動判定)
アクセス時にエディターへテキストを事前入力できます:
https://lokuyow.github.io/ehagaki/?content={url-encoded-text-here}
URLクエリパラメータでリプライや引用投稿を指定できます。nevent1... または note1... 形式(NIP-19)に対応しています。
# リプライ
https://lokuyow.github.io/ehagaki/?reply=nevent1...
# note1形式でも可
https://lokuyow.github.io/ehagaki/?reply=note1...
# 引用
https://lokuyow.github.io/ehagaki/?quote=nevent1...
# note1形式でも可
https://lokuyow.github.io/ehagaki/?quote=note1...
- リプライ: NIP-10準拠のe/pタグを自動構築(スレッドroot引き継ぎ対応)
- 引用: NIP-18準拠のqタグを自動構築し、投稿時に引用イベントとして処理されます
- URLクエリ由来の参照イベントはプレビュー表示されます
- エディタ本文に
nostr:nevent1...またはnostr:note1...を含めた場合も引用として処理されます - 本文中の複数の
nostr:URI は出現順に処理されます - 本文中の
nostr:URI からの引用ではプレビューは表示されません - ×ボタンでリプライ/引用をキャンセルし、通常投稿に戻れます
iframe、Full Web Component、Host-owned Composer Lite Web Componentの方式選択と最小例は、公式入口の docs/EMBEDDING.md を参照してください。
- iframeの詳細仕様: docs/IFRAME_EMBEDDING.md
- Web Component API詳細: docs/WEB_COMPONENT.md
- iframe live sample: embed-parent-client-example.html
- Full Web Component live sample: web-component-parent-client-example.html
- Host-owned Lite live sample: host-owned-composer-lite-example.html
既存のNostrクライアントがaccount、signer、event構築、publishを所有している場合はHost-owned Lite、eHagakiにself-publishまで所有させる場合はFull、origin境界やparent-client連携が必要な場合はiframeが候補です。iframe/Web Componentともhost側からAccent/Base themeを指定できます。優先順位とAPIの詳細は各ガイドを参照してください。
Web Componentではiframeのparent-client auth/RPCや postMessage を使いません。ホストと同じWindow realm / originで動作するためローカルnsec認証には対応せず、NIP-07はhostの window.nostr を直接利用し、NIP-46は埋め込まれたeHagakiのUIから利用します。通常版/PWAとiframe版では従来どおりnsec認証を利用できます。
- Svelte 5 + Vite - UI フレームワーク
- bits-ui - Svelte UI コンポーネント
- Tiptap v3 - リッチテキストエディター
- svelte-tiptap - Svelte向けTiptap統合
- svelte-i18n - 多言語対応
- rx-nostr - リレー管理とイベントストリーミング
- nostr-tools - Nostrプロトコル実装
- browser-image-compression - 画像圧縮
- mediabunny - 動画圧縮(WebCodecs API)
- @mediabunny/aac-encoder - ネイティブAACエンコード非対応時の任意ロードAAC encoder
- blurhash - 画像プレースホルダー生成
- Google Fonts Icons(Material Icons 相当)の SVG アイコンを使用
- vite-plugin-pwa - Progressive Web App対応
- NIP-01 Basic protocol flow description https://github.com/nostr-protocol/nips/blob/master/01.md
- NIP-07 window.nostr capability for web browsers https://github.com/nostr-protocol/nips/blob/master/07.md
- NIP-09 Event Deletion Request https://github.com/nostr-protocol/nips/blob/master/09.md
- NIP-10 Text Notes and Threads https://github.com/nostr-protocol/nips/blob/master/10.md
- NIP-18 Reposts https://github.com/nostr-protocol/nips/blob/master/18.md
- NIP-19 bech32-encoded entities https://github.com/nostr-protocol/nips/blob/master/19.md
- NIP-21 nostr: URI scheme https://github.com/nostr-protocol/nips/blob/master/21.md
- NIP-28 Public Chat https://github.com/nostr-protocol/nips/blob/master/28.md
- NIP-30 Custom Emoji https://github.com/nostr-protocol/nips/blob/master/30.md
- NIP-36 Sensitive Content / Content Warning https://github.com/nostr-protocol/nips/blob/master/36.md
- NIP-44 Encrypted Payloads (Versioned) https://github.com/nostr-protocol/nips/blob/master/44.md
- NIP-46 Nostr Remote Signing https://github.com/nostr-protocol/nips/blob/master/46.md
- NIP-94 File Metadata https://github.com/nostr-protocol/nips/blob/master/94.md
- NIP-96 HTTP File Storage Integration https://github.com/nostr-protocol/nips/blob/master/96.md
- NIP-98 HTTP Auth https://github.com/nostr-protocol/nips/blob/master/98.md
eHagaki のアプリケーション本体のソースコードは MIT License で公開しています。
ただし、このプロジェクトの配布物には第三者のソフトウェアおよび素材が含まれます。 それらには各権利者のライセンス、著作権表示、商標、利用条件が適用されます。
主な第三者コンポーネント:
- Font Awesome Free SVG Icons
- Mediabunny
- @mediabunny/aac-encoder
- GitHub Mark
詳細は THIRD_PARTY_LICENSES.md を参照してください。
eHagaki のアプリアイコンおよび OGP 画像は、このプロジェクト用に作成したオリジナル素材です。