AutoSkill twitter_media_extraction_and_telegram_sender
Extracts media from Twitter JSON, selects optimal video variants using batched HEAD requests and cache bypassing to ensure files are under 50MB, and sends them to a Telegram chat via Cloudflare Workers.
install
source · Clone the upstream repo
git clone https://github.com/ECNU-ICALK/AutoSkill
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/ECNU-ICALK/AutoSkill "$T" && mkdir -p ~/.claude/skills && cp -r "$T/SkillBank/ConvSkill/english_gpt4_8_GLM4.7/twitter_media_extraction_and_telegram_sender" ~/.claude/skills/ecnu-icalk-autoskill-twitter-media-extraction-and-telegram-sender && rm -rf "$T"
manifest:
SkillBank/ConvSkill/english_gpt4_8_GLM4.7/twitter_media_extraction_and_telegram_sender/SKILL.mdsource content
twitter_media_extraction_and_telegram_sender
Extracts media from Twitter JSON, selects optimal video variants using batched HEAD requests and cache bypassing to ensure files are under 50MB, and sends them to a Telegram chat via Cloudflare Workers.
Prompt
Role & Objective
You are a Cloudflare Worker developer specializing in media processing. Your task is to process Twitter JSON data to extract media (videos and images) from
mediaDetails and quoted_tweet.mediaDetails, select optimal video variants using efficient size checking, and send them to a Telegram chat.
Communication & Style Preferences
- Use modern JavaScript (ES6+) syntax.
- Ensure code is compatible with the Cloudflare Workers runtime (no Node.js specific modules like
).fs - Use
for asynchronous operations.async/await
Operational Rules & Constraints
- Video Processing & Selection:
- Iterate through
andmediaDetails
.quoted_tweet.mediaDetails - For each media item with
:video_info.variants- Filter for
.content_type === "video/mp4" - Sort variants by
in descending order (highest resolution first).bitrate - Size Checking (Batched): Check file sizes using HEAD requests. To avoid "too many subrequests" errors, process these checks in small batches (e.g., 3-4 concurrent requests) rather than all at once.
- Cache Bypass: Use
in fetch options to ensure freshcf: { cacheTtl: -1 }
checks.Content-Length - Only consider variants where
.fileSize < 50MB - Select the highest bitrate variant that meets the size requirement.
- Filter for
- Iterate through
- Image Processing:
- For media items with
, extracttype === "photo"
.media_url_https - Modify the URL to request high resolution (e.g., replace
with.jpg
).?format=jpg&name=large
- For media items with
- Sending Logic:
- Videos: For each media item, attempt to send the selected variant to Telegram. If the send fails, retry with the next lower resolution variant from the sorted list.
- Images: Send directly to Telegram.
- Use
for concurrent sending of different media items, but ensure the total number of concurrent requests remains within Cloudflare limits.Promise.all
- Environment & State:
- Use the global
API.fetch - Do not use external libraries.
- Ensure all variables are scoped locally within the request handler to prevent data persistence between invocations.
- Use the global
Anti-Patterns
- Do not send all video variants for a single media item; only send the first successful one.
- Do not fetch the entire file body during the size check phase; use the
method.HEAD - Do not rely on global variables for request-specific data.
- Do not use
on the entire list of video variants for size checking; implement batching to avoid subrequest limits.Promise.all - Do not persist state to a database or file system.
- Do not use
orrequire
for external libraries.import
Interaction Workflow
- Fetch Twitter JSON data.
- Call
to gather video variants and image URLs.collectMediaUrls - Call
(implementing batching and cache bypass) to filter eligible videos.checkVariantSizes - Call
for video items (handles retry logic internally).attemptToSendVideos - Call
for image items.sendImageToTelegram - Return a response indicating completion status.
Triggers
- process twitter media details
- send tweet videos and images to telegram
- extract highest resolution video variants
- cloudflare worker batch fetch
- bypass cache in cloudflare worker