ubiquity / .github

3 stars 9 forks source link

Recruitment: leverage reddit #119

Open Keyrxng opened 3 months ago

Keyrxng commented 3 months ago

This is borderline I'm unsure about this one but it would be very effective if done well and in reality causes no harm to anyone and in fact the types of people that generally respond well to these types of posts are the types of people we want to target

What is it?

Simply put: We clickbait some of our tasks in subreddits like r/typescript for example

I'm not sure of the term for it in advertising you see it a lot these days. Basically you'll see gameplay of the app and they will either deliberately fail an easy task so the viewer goes "I could have completed that" or they intentionally move into the path of the lesser upgrade power (smg vs tank eg) so they go "I want to see the tank, I'd have chosen the tank"

What it requires?

We pick a couple of our open tasks and then open posts into these particular subreddits from a new/noob account and we lay it out as if we are struggling with the problem and post links to the code/the issue whatever.

The people on these subs with real knowledge and are keen to help out are the target demographic here, they are quick to peruse links and random code to help a stranger "just because" or maybe it's to test their own knowledge or they are curious that way, we want them.

Why do it?

Well we have ways to target solidity and web3 minded folks but not so much Web2 folks that would excel in TS related projects for example.

This approach can be applied to any language or skillset our tasks contain, AI, Web3, TS etc.

Is it a poor show from us?

I don't think so. While we are not interested in the help we are asking for exactly, we are interested in those who can see the problem and resolve it on the spot like many do on these subs, just for fun so no one is losing anything here. They do as they also do and potentially we catch their interest enough to pick up a task or two

Pros vs other socials like X

Keyrxng commented 3 months ago

I frequent subs like r/typescript often (mostly while on the throne) and it is rife with talent. Some of the requests for help are absolutely absurd and there are juggernauts in the comments reading 3 files worth of reddit code blocks (terrible) with advanced ts types and debugging it in the comments lmao.

We definitely need to leverage it better somehow and this is an effective strategy in my opinion, disregarding the ethics of it (if that's even an issue here)

0x4007 commented 3 months ago

Let's start with this strategy and iterate. Seems viable. Just set a time estimate and it can be funded.

Keyrxng commented 3 months ago

we need to:

  1. Choose which demographics we want to hit (typescript seems highly relevant)
  2. identify issues which can be used and invent/find problems to create posts around
  3. find which subreddits apply to those demographics and are accessible by a new account (some have age, karma restrictions)
  4. create an account which we can use. Here I'm not sure how relevant it is assuming the role of someone who is not affiliated with the org, users tend to check profiles and previous posts/comments etc but this is something that will need gauged I guess. First iteration we assume no connection.
  5. We can create one post and post it across multiple subreddits simultaneously or we do not duplicate posts. First iteration we will try batch posting.
  6. It may be beneficial to be somewhat active for the next day on reddit with that account that way we keep the post(s) recent with continued activity and it doesn't just fall off the map, it needs to have real engagement. Long term it's probably better for the account if we maintain a realistic profile in terms of responses and requests (depending on how effective it is and what importance it'll have in continued recruitment)
  7. Trial this twice this month a couple weeks apart which should give us a good indicator if it's worth doing

I'd say 1 day maybe and that includes being active in the responses etc after posting too


1: Typescript, AI, GitHub Automation. Any others? 2: I'll curate and create posts knowing 1. 3: same as 2. 4: Does login info matter here, is there a dummy domain email I should use or something? 5: If it's possible (depending on the subs I can find for that demo and issue) I'll batch post 6: With this said, we obviously won't overdo it. Maybe twice a month we make a couple posts and appear genuine at first glance (completing tasks and having open PRs is likely overkill) if we see any success this month.

EDIT: I use "I" and "I'll" but if this task is better delegated that's okay with me. I just instinctively would see it through since I'm proposing it

0x4007 commented 3 months ago

Login info doesn't matter. I think this is fine to start and can iterate on ideas as inspiration comes in. So this task is for two attempts over the course of August?

Keyrxng commented 3 months ago

Login info doesn't matter. I think this is fine to start and can iterate on ideas as inspiration comes in. So this task is for two attempts over the course of August?

Yeah, prep both attempts at the same time or at least the bulk of what's needed for two and then we can refine based on attempt one.

I expect about 4 hours for gathering issues, gathering subs and creating somewhat believable posts. Then another 4 on handling the posts/responses and any refinement to attempt two.

If you think we'll get a better read on things with more than two active posting days let's do it two was just a suggestion but yeah this task would likely cover all attempts right?

Keyrxng commented 3 months ago

/start

ubiquibot[bot] commented 3 months ago
! Too many assigned issues, you have reached your max limit
ubiquibot-dev[bot] commented 3 months ago
DeadlineSat, Aug 3, 8:27 AM UTC
Registered Wallet 0xAe5D1F192013db889b1e2115A370aB133f359765
Tips:
<ul>
<li>Use <code>/wallet 0x0000...0000</code> if you want to update your registered payment wallet address.</li>
<li>Be sure to open a draft pull request as soon as possible to communicate updates on your progress.</li>
<li>Be sure to provide timely updates to us when requested, or you will be automatically unassigned from the task.</li>
<ul>
ubiquity-os-main[bot] commented 3 months ago
DeadlineSat, Aug 3, 8:27 AM UTC
Registered Wallet 0xAe5D1F192013db889b1e2115A370aB133f359765
Tips:
<ul>
<li>Use <code>/wallet 0x0000...0000</code> if you want to update your registered payment wallet address.</li>
<li>Be sure to open a draft pull request as soon as possible to communicate updates on your progress.</li>
<li>Be sure to provide timely updates to us when requested, or you will be automatically unassigned from the task.</li>
<ul>
gentlementlegen commented 3 months ago

@0x4007 Could you remove that testing bot from the organization? I do not have access there.

ishowvel commented 2 weeks ago

Isn't reddits API read-only for about a year now? I used chatgpt for a solution to this and it recommended puppeteer

import puppeteer from 'puppeteer';

interface RedditPost {
    subreddit: string;
    title: string;
    content: string;
}

async function postToReddit(username: string, password: string, post: RedditPost) {
    const browser = await puppeteer.launch({ 
        headless: false, // Set to true in production
        defaultViewport: { width: 1280, height: 800 }
    });

    try {
        const page = await browser.newPage();

        // Login to Reddit
        await page.goto('https://www.reddit.com/login');
        await page.waitForSelector('input[name="username"]');
        await page.type('input[name="username"]', username);
        await page.type('input[name="password"]', password);
        await page.click('button[type="submit"]');

        // Wait for login to complete
        await page.waitForNavigation();

        // Navigate to subreddit
        await page.goto(`https://www.reddit.com/r/${post.subreddit}/submit`);
        await page.waitForTimeout(2000); // Wait for page to fully load

        // Select text post if not already selected
        const textPostButton = await page.$('button[role="tab"][aria-selected="false"]');
        if (textPostButton) {
            await textPostButton.click();
            await page.waitForTimeout(1000);
        }

        // Fill in post details
        await page.waitForSelector('textarea[placeholder*="Title"]');
        await page.type('textarea[placeholder*="Title"]', post.title);
        await page.type('div[role="textbox"]', post.content);

        // Add delay before posting to prevent rate limiting
        await page.waitForTimeout(2000);

        // Click post button
        const postButton = await page.$('button[type="submit"]');
        if (postButton) {
            await postButton.click();
        }

        // Wait for post to complete
        await page.waitForTimeout(5000);

    } catch (error) {
        console.error('Error posting to Reddit:', error);
        throw error;
    } finally {
        await browser.close();
    }
}

// Example usage
async function main() {
    const post: RedditPost = {
        subreddit: 'test',
        title: 'Test Post from TypeScript',
        content: 'This is a test post created using Puppeteer and TypeScript.'
    };

    try {
        await postToReddit('your_username', 'your_password', post);
        console.log('Post successfully created!');
    } catch (error) {
        console.error('Failed to create post:', error);
    }
}

main();
ishowvel commented 2 weeks ago

Also how will we check the comments and responses on the posts?

Keyrxng commented 2 weeks ago
  1. Posts should not be automated and AI-ed in my opinion as they stand out like a sore thumb on Reddit and are not received very well if they are identified as AI posts. Help writing the post okay but not just AI.
  2. Interactions on posts should be genuine and from a real person. Gives the post more credibility and if repeatedly coming from the same account rapport is built within the subreddits.
  3. This could be a scheduled thing but not automated.

I spent time building up an account that I had planned on using just for this; I stopped for a couple of reasons:

  1. Our intake was pretty high over the last three months due to the DoraHacks post.
  2. Higher priority issues arose and it was taking time away from those.

I had planned to wrap this up once DoraHacks had finished (which it now has) and once other priority issues had been resolved (I believe they now are). I'm willing to proceed as I was or this task can be assigned to someone else.