artwist-polyakov/polyakov-claude-skills/telegraph-publisher
Claude Code and agent skill by artwist-polyakov/polyakov-claude-skills
- community
Checking that the SKILL.md file is still in the repository.
Publish and manage Telegraph pages with media, page-view statistics, and auto-split for long articles. ALWAYS read SKILL.md before first use.
Install
npx vskill@latest install artwist-polyakov/polyakov-claude-skills/telegraph-publisherSKILL.md
telegraph-publisher
Publish content to Telegraph via API with media support. Best for: articles, research reports, documentation, illustrated content.
STOP — Read Before Acting
- DO NOT pass raw markdown — convert to HTML fragment first (Telegraph API accepts Node JSON, the converter accepts HTML)
- DO NOT pass content larger than 64KB without using auto-split — the script handles this automatically
- DO NOT hardcode access tokens — use
config/.env - DO NOT skip account setup before publishing, editing, listing pages, or reading account details — page-view lookup is public
Quick Start
Account & Ownership
Telegraph accounts are API-only (no password/email). Key concepts:
create_account.shgeneratesaccess_token+ one-timeauth_url- Open
auth_urlin browser to bind API account to browser session - Pages belong to the account whose token was used in
createPage - After browser binding: pages visible at telegra.ph, editable both via browser and API
- Use
--revoketo rotate token if compromised
See config/README.md for full ownership model.
Compatibility
Scripts are POSIX sh compatible — work in cloud sandboxes (/bin/sh) and locally. Python scripts use stdlib only (html.parser, json, sys).
Config
create_page.sh, edit_page.sh, list_pages.sh, and account_info.sh require TELEGRAPH_ACCESS_TOKEN in config/.env or environment. Creating an account and reading public page-view statistics do not require an existing Telegraph token.
Optional TELEGRAPH_AUTHOR_NAME and TELEGRAPH_AUTHOR_URL in config/.env or the environment provide author defaults. Explicit flags override each field, including empty strings, in create_page.sh and edit_page.sh. With neither a setting nor a flag, these scripts omit the field. These defaults also apply to edits: do not replace a page's different author unintentionally; pass the intended author explicitly. See config/README.md for precedence and account naming.
If the user supplies an author as [Channel Name](https://t.me/channel), pass Channel Name and https://t.me/channel as separate name and URL values. Scripts accept plain values, not Markdown author links.
For permanent media hosting, prefer a separate public GitHub repo + jsDelivr CDN. Reason: Telegraph's unofficial upload endpoint is unstable and should not be the default publishing path.
GitHub Setup (recommended)
The agent should assume this is the default permanent media backend.
Required GitHub config:
Recommended setup:
- Create a separate public GitHub repo only for Telegraph media
- Create a fine-grained PAT only for that repo
- Grant only:
Contents:Read and write
- Save token and repo to
config/.env
Why this matters:
- permanent asset URLs via jsDelivr
- lower blast radius if token leaks
- no dependency on Telegraph's glitchy upload endpoint
- deterministic cleanup through page manifests
Agent rule:
- if local images/diagrams need permanent hosting and GitHub config exists, use GitHub-backed media workflow by default
- use
upload.shonly as a legacy fallback
Content Format
Telegraph API accepts an array of Node objects. This skill converts HTML fragments to Node JSON automatically.
Supported HTML tags (Telegraph API whitelist): a, aside, b, blockquote, br, code, em, figcaption, figure, h3, h4, hr, i, iframe, img, li, ol, p, pre, s, strong, u, ul, video
Only href and src attributes are preserved. Unsupported tags are stripped (children kept).
Special case:
- input HTML tables (
table,thead,tr,th,td) are converted into a monospacepreblock - use this for compact comparisons, domain spend breakdowns, KPI matrices, and similar tabular fragments
- do not force small tables into diagrams unless the user explicitly wants a visual chart instead of exact values
See references/CONTENT_FORMAT.md for Node format details.
Scripts
create_account.sh
With a nonempty TELEGRAPH_AUTHOR_NAME configured, --name is optional. The public author name is kept in full; the private account label uses its first 32 Unicode characters.
account_info.sh
create_page.sh
| Param | Required | Description | |
|---|---|---|---|
--title | yes | Page title (1-256 chars) | |
--html | one of three | Inline HTML string | |
--html-file | one of three | Path to HTML file | |
--content-file | one of three | Path to Node JSON file | |
--author-name | no | Author name (0-128 chars); overrides configured default | |
--author-url | no | Author profile URL; overrides configured default |
Auto-split: If content exceeds 60KB, automatically splits into multiple pages with an index page linking to parts.
edit_page.sh
| Param | Required | Description | |
|---|---|---|---|
--path | yes | Page path (from URL or create output) | |
--title | yes | Page title | |
--html / --html-file / --content-file | yes | New content | |
--author-name | no | Author name; overrides configured default | |
--author-url | no | Author URL; overrides configured default |
list_pages.sh
page_views.sh
Get total views or one calendar-period total for any public Telegraph page. No access token is required.
Period filters are hierarchical: month requires year, day requires month, and hour requires day. The command returns one view count for the selected period, not a time series. Telegraph does not document the timezone used for day and hour filters. Use hours 0-23; the live API rejects 24 despite listing it in the API documentation.
github_upload.sh
Upload local media to the GitHub assets repo and update page manifest:
| Param | Required | Description | |
|---|---|---|---|
--file | yes | Local asset file | |
--page-path | yes | Telegraph page path used as manifest/asset key | |
--name | no | Override stored filename in GitHub |
Output: commit-pinned jsDelivr URL.
Manifest behavior:
- assets go under
pages/<telegraph_path>/... - manifest goes under
manifests/<telegraph_path>.json - manifest stores asset paths and SHAs for later cleanup
github_delete_page_assets.sh
Delete all GitHub-backed assets for a page using its manifest:
| Param | Required | Description | |
|---|---|---|---|
--page-path | yes | Telegraph page path |
Cleanup rule:
- delete by manifest, not by title guessing
- use Telegraph
pathas the stable page identifier
upload.sh
Legacy fallback for local image/video upload to Telegraph:
| Param | Required | Description | |
|---|---|---|---|
--file | yes | Path to image/video (jpg, png, gif, webp, mp4; max 5MB) | |
--insecure | no | Skip SSL verification (for HTTPS-intercepting proxies/VPNs) |
Note: Uses unofficial telegra.ph/upload endpoint. Do not treat it as the primary workflow. Best-effort only — may fail behind corporate proxies/VPNs or without any obvious reason.
render_diagram.sh
Render PlantUML/Mermaid diagrams via public servers:
| Param | Required | Description | |
|---|---|---|---|
--type | yes | plantuml or mermaid | |
--file | yes | Path to diagram source file | |
--github-page-path | no | Upload rendered file to GitHub assets under this Telegraph path | |
--github-name | no | Override GitHub filename for rendered asset | |
--upload | no | Legacy fallback: download rendered PNG and upload to Telegraph |
Privacy: Diagram source is sent to plantuml.com / mermaid.ink. Do not use for confidential content.
content_converter.py (internal)
Media Support
Images
Preferred workflow: upload local files to a dedicated public GitHub assets repo and serve them via jsDelivr.
Why GitHub is worth connecting:
- stable permanent URLs for Telegraph pages
- no dependency on Telegraph's glitchy unofficial upload endpoint
- predictable asset structure for cleanup
- easy separation between article content and media storage
Fallback workflow: use upload.sh only when GitHub-backed hosting is unavailable.
Recommended asset lifecycle:
- If a page contains local media, first create a draft/stub Telegraph page to get its final
path - Upload images/diagrams to GitHub under
pages/<telegraph_path>/...viagithub_upload.sh - Publish final content with jsDelivr URLs
- Store a manifest for that page with uploaded asset paths and GitHub blob SHAs
- On page cleanup/removal, run
github_delete_page_assets.sh --page-path <telegraph_path>
This is the start of the file. Read the full SKILL.md on GitHub.
Security
- Security scanPassed, 85 of 100Pattern checks on the skill's files.
- Model reviewPassed
Quality evaluation
- Task evaluationNot runNo evaluation yet. Run one in Skill Studio.
Source
- SKILL.md in the repositoryCheckingplugins/telegraph-publisher/skills/telegraph-publisher/SKILL.md
Popularity
- Repository stars
- 166
- Repository forks
- 38
- 7-day trend score
- 26
Stars and forks are for the whole GitHub repository, not this skill alone. Refreshed 19 Mar 2026, 7 months ago.
Works with
Any agent vskill installs to: 56 targets in all. These 39 have a page on this site.
- Claude Code
- Cursor
- GitHub Copilot
- Windsurf
- Codex
- Gemini CLI
- Cline
- Amp
- Roo Code
- Goose
- Continue
- Kilo Code
- Junie
- Trae
- OpenHands
- Qwen Code
- AI Agent
- Tabnine Chat
- Sourcegraph Cody
- Amazon Q
- Firebase Genkit
- Sweep
- Devin
- Phind
- Mentat
- Claude Desktop
- Aider
- GPT Pilot
- Plandex
- bolt.new
- v0
- Replit Agent
- Anse
- TypingMind
- BetterChatGPT
- LibreChat
- Warp AI
- Pieces
- Fig AI
Embed badge
[](https://verified-skill.com/skills/artwist-polyakov/polyakov-claude-skills/telegraph-publisher)