一键导入
markdown-processing
Use when working with the markdown converter, YouTube format text, timestamp links, or the pulldown-cmark HTML renderer.
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
菜单
Use when working with the markdown converter, YouTube format text, timestamp links, or the pulldown-cmark HTML renderer.
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
基于 SOC 职业分类
Use when selecting a Gemini model, checking rate limits or quotas, configuring the gemini-rust crate, or debugging model name mismatches.
Create new Kiro skills (Agent Skills). Use when asked to create a skill, write a SKILL.md, add a new workflow to .kiro/skills/, or package agent instructions as a reusable skill.
Use when creating a release, bumping the version, tagging a commit, or working with the GitHub Actions release workflow for rs-summarizer.
Use when editing or creating Askama HTML templates, adding template variables, fixing compile-time template errors, or working with HTMX attributes in templates.
Use when working with tokio::spawn background tasks, the summarization pipeline, task state transitions, or the mark_error/mark_summary_done pattern.
Use when building, running, linting with clippy, formatting with rustfmt, or running cargo commands for the rs-summarizer project.
| name | markdown-processing |
| description | Use when working with the markdown converter, YouTube format text, timestamp links, or the pulldown-cmark HTML renderer. |
rs-summarizer has two markdown processing stages with different purposes:
convert_markdown_to_youtube_format) — for text storage and YouTube comment compatibilityrender_markdown_to_html) — for web display via pulldown-cmarkFile: src/utils/markdown_converter.rs
Converts markdown to YouTube's limited formatting (only *bold* supported):
** markers: **: → :**, **, → ,**, etc.** to * (YouTube bold)* markers: *: → :*, etc.## Heading at start of text to *Heading*-dot- (avoids YouTube link censoring)com, org, de, us, gov, net, edu, info, io, co.uk, ca, fr, au, jp, ru, ch, it, nl, se, es, br, mx, in, kr
Called in tasks.rs after summary generation:
let youtube_text = convert_markdown_to_youtube_format(&result.summary_text);
db::mark_timestamps_done(db_pool, identifier, &youtube_text).await?;
File: src/utils/markdown_renderer.rs
Renders markdown to HTML for web display using pulldown-cmark 0.13.3:
use pulldown_cmark::{html, Options, Parser};
pub fn render_markdown_to_html(markdown_input: &str) -> String {
let mut options = Options::empty();
options.insert(Options::ENABLE_TABLES);
options.insert(Options::ENABLE_STRIKETHROUGH);
options.insert(Options::ENABLE_TASKLISTS);
options.insert(Options::ENABLE_FOOTNOTES);
let parser = Parser::new_ext(markdown_input, options);
let mut html_output = String::new();
html::push_html(&mut html_output, parser);
html_output
}
Called in render_generation_partial() before passing to the template:
let summary_html = render_markdown_to_html(&s.summary);
// Template uses {{ summary|safe }} to render without double-escaping
Gemini output (markdown)
│
├──→ render_markdown_to_html() ──→ HTML display in browser (via |safe filter)
│
└──→ convert_markdown_to_youtube_format() ──→ stored in DB as timestamped_summary_in_youtube_format
└──→ replace_timestamps_in_html() ──→ clickable YouTube links
src/utils/markdown_converter.rs — YouTube format conversion (ported from Python)src/utils/markdown_renderer.rs — HTML rendering via pulldown-cmarksrc/routes/mod.rs — render_generation_partial() calls bothsource04/tsum/s03_convert_markdown_to_youtube_format.py — Python original