원클릭으로
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